lkml.org 
[lkml]   [2017]   [Jul]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Subject[PATCH v5 00/14] improve the fb_setcmap helper
    Date
    Hi!

    While trying to get CLUT support for the atmel_hlcdc driver, and
    specifically for the emulated fbdev interface, I received some
    push-back that my feeble in-driver attempts should be solved
    by the core. This is my attempt to do it right.

    I have obviously not tested all of this with more than a compile,
    but patches 1 and 3 are enough to make the atmel-hlcdc driver
    do what I need. The rest is just lots of removals and cleanup made
    possible by the other improvements.

    Please test, I would not be surprised if I have fouled up some
    bit-manipulation somewhere, or if I have misunderstood something
    about atomics...

    Changes since v5:
    - Rebased onto fresher drm-misc-next.
    - Instead of just exporting drm_atomic_replace_propery_blob(), move
    it to drm_propery.c, rename it to drm_property_replace_blob() and
    change its semantics to return if the blob was replaced.
    - Install the same gamma_lut blob for all crtc, regardless of any
    variation in the gamma_lut state for the individual crtc prior to
    the fbdev setcmap call.
    - Add acks from Daniel for patches 4-14.

    Changes since v3:
    - Rebased onto drm-misc-next and dropped patches 1-3 from v3, since
    they are already merged.
    - Dropped the v3 patch 4/16 ("drm/color-mgmt: move atomic state/commit
    out from .gamma_set") since the atomic setcmap no longer uses
    the crtc .gamma_set callback.
    - Added patch 1/14 which exports drm_atomic_replace_property_blob...
    - ...and patch 2/14 which uses this new export to simplify
    drm_atomic_helper_legacy_gamma_set.
    - Big changes to patch 3/14 (was 5/16 in v3). It had various locking
    issues and the atomic setcmap is rather different.

    Changes since v2:
    - Added patch 1/16 which factors out pseudo-palette handling.
    - Removed the if (cmap->start + cmap->len < cmap->start)
    sanity check on the assumption that the fbdev core handles it.
    - Added patch 4/16 which factors out atomic state and commit
    handling from drm_atomic_helper_legacy_gamma_set to
    drm_mode_gamma_set_ioctl.
    - Do one atomic commit for all affected crtc.
    - Removed a now obsolete note in include/drm/drm_crtc.h (ammended
    the last patch).
    - Cc list is getting long, so I have redused the list for the
    individual patches. If you would like to get the full series
    (or nothing at all) for the next round (if that is needed) just
    say so.

    Changes since v1:
    - Rebased to next-20170621
    - Split 1/11 into a preparatory patch, a cleanup patch and then
    the meat in 3/14.
    - Handle pseudo-palette for FB_VISUAL_TRUECOLOR.
    - Removed the empty .gamma_get/.gamma_set fb helpers from the
    armada driver that I had somehow managed to ignore but which
    0day found real quick.
    - Be less judgemental on drivers only providing .gamma_get and
    .gamma_set, but no .load_lut. That's actually a valid thing
    to do if you only need pseudo-palette for FB_VISUAL_TRUECOLOR.
    - Add a comment about colliding bitfields in the nouveau driver.
    - Remove gamma_set/gamma_get declarations from the radeon driver
    (the definitions were removed in v1).

    Cheers,
    peda

    Peter Rosin (14):
    drm: rename, adjust and export drm_atomic_replace_property_blob
    drm/atomic-helper: update lut props directly in ..._legacy_gamma_set
    drm/fb-helper: separate the fb_setcmap helper into atomic and legacy
    paths
    drm: amd: remove dead code and pointless local lut storage
    drm: armada: remove dead empty functions
    drm: ast: remove dead code and pointless local lut storage
    drm: cirrus: remove dead code and pointless local lut storage
    drm: gma500: remove dead code and pointless local lut storage
    drm: i915: remove dead code and pointless local lut storage
    drm: mgag200: remove dead code and pointless local lut storage
    drm: nouveau: remove dead code and pointless local lut storage
    drm: radeon: remove dead code and pointless local lut storage
    drm: stm: remove dead code and pointless local lut storage
    drm: remove unused and redundant callbacks

    drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c | 24 ---
    drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h | 1 -
    drivers/gpu/drm/amd/amdgpu/dce_v10_0.c | 27 +---
    drivers/gpu/drm/amd/amdgpu/dce_v11_0.c | 27 +---
    drivers/gpu/drm/amd/amdgpu/dce_v6_0.c | 27 +---
    drivers/gpu/drm/amd/amdgpu/dce_v8_0.c | 27 +---
    drivers/gpu/drm/amd/amdgpu/dce_virtual.c | 23 ---
    drivers/gpu/drm/armada/armada_crtc.c | 10 --
    drivers/gpu/drm/armada/armada_crtc.h | 2 -
    drivers/gpu/drm/armada/armada_fbdev.c | 2 -
    drivers/gpu/drm/ast/ast_drv.h | 1 -
    drivers/gpu/drm/ast/ast_fb.c | 20 ---
    drivers/gpu/drm/ast/ast_mode.c | 26 +---
    drivers/gpu/drm/cirrus/cirrus_drv.h | 8 -
    drivers/gpu/drm/cirrus/cirrus_fbdev.c | 2 -
    drivers/gpu/drm/cirrus/cirrus_mode.c | 71 ++-------
    drivers/gpu/drm/drm_atomic.c | 30 +---
    drivers/gpu/drm/drm_atomic_helper.c | 20 +--
    drivers/gpu/drm/drm_fb_helper.c | 231 +++++++++++++++++++---------
    drivers/gpu/drm/drm_property.c | 23 +++
    drivers/gpu/drm/gma500/framebuffer.c | 22 ---
    drivers/gpu/drm/gma500/gma_display.c | 32 ++--
    drivers/gpu/drm/gma500/psb_intel_display.c | 7 +-
    drivers/gpu/drm/gma500/psb_intel_drv.h | 1 -
    drivers/gpu/drm/i915/intel_drv.h | 1 -
    drivers/gpu/drm/i915/intel_fbdev.c | 31 ----
    drivers/gpu/drm/mgag200/mgag200_drv.h | 5 -
    drivers/gpu/drm/mgag200/mgag200_fb.c | 2 -
    drivers/gpu/drm/mgag200/mgag200_mode.c | 62 ++------
    drivers/gpu/drm/nouveau/dispnv04/crtc.c | 26 ++--
    drivers/gpu/drm/nouveau/nouveau_crtc.h | 3 -
    drivers/gpu/drm/nouveau/nouveau_fbcon.c | 22 ---
    drivers/gpu/drm/nouveau/nv50_display.c | 40 ++---
    drivers/gpu/drm/radeon/atombios_crtc.c | 1 -
    drivers/gpu/drm/radeon/radeon_connectors.c | 7 +-
    drivers/gpu/drm/radeon/radeon_display.c | 71 ++++-----
    drivers/gpu/drm/radeon/radeon_fb.c | 2 -
    drivers/gpu/drm/radeon/radeon_legacy_crtc.c | 1 -
    drivers/gpu/drm/radeon/radeon_mode.h | 4 -
    drivers/gpu/drm/stm/ltdc.c | 12 --
    drivers/gpu/drm/stm/ltdc.h | 1 -
    include/drm/drm_crtc.h | 8 -
    include/drm/drm_fb_helper.h | 32 ----
    include/drm/drm_modeset_helper_vtables.h | 16 --
    include/drm/drm_property.h | 2 +
    45 files changed, 323 insertions(+), 690 deletions(-)

    --
    2.11.0

    \
     
     \ /
      Last update: 2017-07-13 18:30    [W:3.528 / U:0.340 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site