Re: [PATCH v4 1/2] drm: automatic legacy gamma support
On 11/12/2020 13:42, Tomi Valkeinen wrote: +/** + * drm_crtc_supports_legacy_gamma - does the crtc support legacy gamma correction table + * @crtc: CRTC object + * + * Returns true/false if the given crtc supports setting the legacy gamma + * correction table. + */ +static bool drm_crtc_supports_legacy_gamma(struct drm_crtc *crtc) +{ + uint32_t gamma_id = crtc->dev->mode_config.gamma_lut_property->base.id; Userspace-mode strikes again... I'll change uint32_t's to u32 while applying. (But in my defense, there were uint32_t uses already in the code touched by these patches, and drm seems to have lots of uint32_t all around...) Tomi -- Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki ___ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel
Re: [PATCH v4 1/2] drm: automatic legacy gamma support
Hi Tomi, On 12/11/20 12:42 PM, Tomi Valkeinen wrote: > To support legacy gamma ioctls the drivers need to set > drm_crtc_funcs.gamma_set either to a custom implementation or to > drm_atomic_helper_legacy_gamma_set. Most of the atomic drivers do the > latter. > > We can simplify this by making the core handle it automatically. > > Move the drm_atomic_helper_legacy_gamma_set() functionality into > drm_color_mgmt.c to make drm_mode_gamma_set_ioctl() use > drm_crtc_funcs.gamma_set if set or GAMMA_LUT property if not. > > Signed-off-by: Tomi Valkeinen > --- > .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 1 - > .../gpu/drm/arm/display/komeda/komeda_crtc.c | 1 - > drivers/gpu/drm/arm/malidp_crtc.c | 1 - > drivers/gpu/drm/armada/armada_crtc.c | 1 - > drivers/gpu/drm/ast/ast_mode.c| 1 - > .../gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c| 1 - > drivers/gpu/drm/drm_atomic_helper.c | 70 --- > drivers/gpu/drm/drm_color_mgmt.c | 111 -- > drivers/gpu/drm/i915/display/intel_display.c | 1 - > drivers/gpu/drm/ingenic/ingenic-drm-drv.c | 2 - > drivers/gpu/drm/mediatek/mtk_drm_crtc.c | 1 - > drivers/gpu/drm/nouveau/dispnv50/head.c | 2 - > drivers/gpu/drm/omapdrm/omap_crtc.c | 1 - > drivers/gpu/drm/rcar-du/rcar_du_crtc.c| 1 - > drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 1 - > drivers/gpu/drm/stm/ltdc.c| 1 - For the stm part, Reviewed-by: Philippe Cornu Thank you Philippe :-) ___ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel
Re: [PATCH v4 1/2] drm: automatic legacy gamma support
On 11/12/2020 13:50, Laurent Pinchart wrote: > Hi Tomi, > > Thank you for the patch. > > On Fri, Dec 11, 2020 at 01:42:36PM +0200, Tomi Valkeinen wrote: >> To support legacy gamma ioctls the drivers need to set >> drm_crtc_funcs.gamma_set either to a custom implementation or to >> drm_atomic_helper_legacy_gamma_set. Most of the atomic drivers do the >> latter. >> >> We can simplify this by making the core handle it automatically. >> >> Move the drm_atomic_helper_legacy_gamma_set() functionality into >> drm_color_mgmt.c to make drm_mode_gamma_set_ioctl() use >> drm_crtc_funcs.gamma_set if set or GAMMA_LUT property if not. >> >> Signed-off-by: Tomi Valkeinen > > Reviewed-by: Laurent Pinchart Thanks Laurent! If there are no objections, I'd like to push these to drm-misc-next tomorrow (along with the omapdrm gamma + CTM patches). Tomi -- Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki ___ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel
[PATCH v4 1/2] drm: automatic legacy gamma support
To support legacy gamma ioctls the drivers need to set drm_crtc_funcs.gamma_set either to a custom implementation or to drm_atomic_helper_legacy_gamma_set. Most of the atomic drivers do the latter. We can simplify this by making the core handle it automatically. Move the drm_atomic_helper_legacy_gamma_set() functionality into drm_color_mgmt.c to make drm_mode_gamma_set_ioctl() use drm_crtc_funcs.gamma_set if set or GAMMA_LUT property if not. Signed-off-by: Tomi Valkeinen --- .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 1 - .../gpu/drm/arm/display/komeda/komeda_crtc.c | 1 - drivers/gpu/drm/arm/malidp_crtc.c | 1 - drivers/gpu/drm/armada/armada_crtc.c | 1 - drivers/gpu/drm/ast/ast_mode.c| 1 - .../gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c| 1 - drivers/gpu/drm/drm_atomic_helper.c | 70 --- drivers/gpu/drm/drm_color_mgmt.c | 111 -- drivers/gpu/drm/i915/display/intel_display.c | 1 - drivers/gpu/drm/ingenic/ingenic-drm-drv.c | 2 - drivers/gpu/drm/mediatek/mtk_drm_crtc.c | 1 - drivers/gpu/drm/nouveau/dispnv50/head.c | 2 - drivers/gpu/drm/omapdrm/omap_crtc.c | 1 - drivers/gpu/drm/rcar-du/rcar_du_crtc.c| 1 - drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 1 - drivers/gpu/drm/stm/ltdc.c| 1 - drivers/gpu/drm/vc4/vc4_crtc.c| 1 - drivers/gpu/drm/vc4/vc4_txp.c | 1 - include/drm/drm_atomic_helper.h | 4 - 19 files changed, 102 insertions(+), 101 deletions(-) diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c index 2855bb918535..848b06c51b0e 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -5396,7 +5396,6 @@ static void dm_disable_vblank(struct drm_crtc *crtc) static const struct drm_crtc_funcs amdgpu_dm_crtc_funcs = { .reset = dm_crtc_reset_state, .destroy = amdgpu_dm_crtc_destroy, - .gamma_set = drm_atomic_helper_legacy_gamma_set, .set_config = drm_atomic_helper_set_config, .page_flip = drm_atomic_helper_page_flip, .atomic_duplicate_state = dm_crtc_duplicate_state, diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c b/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c index 4b485eb512e2..59172acb9738 100644 --- a/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c +++ b/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c @@ -550,7 +550,6 @@ static void komeda_crtc_vblank_disable(struct drm_crtc *crtc) } static const struct drm_crtc_funcs komeda_crtc_funcs = { - .gamma_set = drm_atomic_helper_legacy_gamma_set, .destroy= drm_crtc_cleanup, .set_config = drm_atomic_helper_set_config, .page_flip = drm_atomic_helper_page_flip, diff --git a/drivers/gpu/drm/arm/malidp_crtc.c b/drivers/gpu/drm/arm/malidp_crtc.c index 108e7a31bd26..494075ddbef6 100644 --- a/drivers/gpu/drm/arm/malidp_crtc.c +++ b/drivers/gpu/drm/arm/malidp_crtc.c @@ -510,7 +510,6 @@ static void malidp_crtc_disable_vblank(struct drm_crtc *crtc) } static const struct drm_crtc_funcs malidp_crtc_funcs = { - .gamma_set = drm_atomic_helper_legacy_gamma_set, .destroy = drm_crtc_cleanup, .set_config = drm_atomic_helper_set_config, .page_flip = drm_atomic_helper_page_flip, diff --git a/drivers/gpu/drm/armada/armada_crtc.c b/drivers/gpu/drm/armada/armada_crtc.c index 3ebcf5a52c8b..b7bb90ae787f 100644 --- a/drivers/gpu/drm/armada/armada_crtc.c +++ b/drivers/gpu/drm/armada/armada_crtc.c @@ -820,7 +820,6 @@ static const struct drm_crtc_funcs armada_crtc_funcs = { .cursor_set = armada_drm_crtc_cursor_set, .cursor_move= armada_drm_crtc_cursor_move, .destroy= armada_drm_crtc_destroy, - .gamma_set = drm_atomic_helper_legacy_gamma_set, .set_config = drm_atomic_helper_set_config, .page_flip = drm_atomic_helper_page_flip, .atomic_duplicate_state = drm_atomic_helper_crtc_duplicate_state, diff --git a/drivers/gpu/drm/ast/ast_mode.c b/drivers/gpu/drm/ast/ast_mode.c index 9db371f4054f..5b0ec785c516 100644 --- a/drivers/gpu/drm/ast/ast_mode.c +++ b/drivers/gpu/drm/ast/ast_mode.c @@ -903,7 +903,6 @@ static void ast_crtc_atomic_destroy_state(struct drm_crtc *crtc, static const struct drm_crtc_funcs ast_crtc_funcs = { .reset = ast_crtc_reset, - .gamma_set = drm_atomic_helper_legacy_gamma_set, .destroy = drm_crtc_cleanup, .set_config = drm_atomic_helper_set_config, .page_flip = drm_atomic_helper_page_flip, diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c index c58fa00b4848..05ad75d155e8 100644 --- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c +++ b/drivers
Re: [PATCH v4 1/2] drm: automatic legacy gamma support
Hi Tomi, Thank you for the patch. On Fri, Dec 11, 2020 at 01:42:36PM +0200, Tomi Valkeinen wrote: > To support legacy gamma ioctls the drivers need to set > drm_crtc_funcs.gamma_set either to a custom implementation or to > drm_atomic_helper_legacy_gamma_set. Most of the atomic drivers do the > latter. > > We can simplify this by making the core handle it automatically. > > Move the drm_atomic_helper_legacy_gamma_set() functionality into > drm_color_mgmt.c to make drm_mode_gamma_set_ioctl() use > drm_crtc_funcs.gamma_set if set or GAMMA_LUT property if not. > > Signed-off-by: Tomi Valkeinen Reviewed-by: Laurent Pinchart > --- > .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 1 - > .../gpu/drm/arm/display/komeda/komeda_crtc.c | 1 - > drivers/gpu/drm/arm/malidp_crtc.c | 1 - > drivers/gpu/drm/armada/armada_crtc.c | 1 - > drivers/gpu/drm/ast/ast_mode.c| 1 - > .../gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c| 1 - > drivers/gpu/drm/drm_atomic_helper.c | 70 --- > drivers/gpu/drm/drm_color_mgmt.c | 111 -- > drivers/gpu/drm/i915/display/intel_display.c | 1 - > drivers/gpu/drm/ingenic/ingenic-drm-drv.c | 2 - > drivers/gpu/drm/mediatek/mtk_drm_crtc.c | 1 - > drivers/gpu/drm/nouveau/dispnv50/head.c | 2 - > drivers/gpu/drm/omapdrm/omap_crtc.c | 1 - > drivers/gpu/drm/rcar-du/rcar_du_crtc.c| 1 - > drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 1 - > drivers/gpu/drm/stm/ltdc.c| 1 - > drivers/gpu/drm/vc4/vc4_crtc.c| 1 - > drivers/gpu/drm/vc4/vc4_txp.c | 1 - > include/drm/drm_atomic_helper.h | 4 - > 19 files changed, 102 insertions(+), 101 deletions(-) > > diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c > b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c > index 2855bb918535..848b06c51b0e 100644 > --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c > +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c > @@ -5396,7 +5396,6 @@ static void dm_disable_vblank(struct drm_crtc *crtc) > static const struct drm_crtc_funcs amdgpu_dm_crtc_funcs = { > .reset = dm_crtc_reset_state, > .destroy = amdgpu_dm_crtc_destroy, > - .gamma_set = drm_atomic_helper_legacy_gamma_set, > .set_config = drm_atomic_helper_set_config, > .page_flip = drm_atomic_helper_page_flip, > .atomic_duplicate_state = dm_crtc_duplicate_state, > diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c > b/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c > index 4b485eb512e2..59172acb9738 100644 > --- a/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c > +++ b/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c > @@ -550,7 +550,6 @@ static void komeda_crtc_vblank_disable(struct drm_crtc > *crtc) > } > > static const struct drm_crtc_funcs komeda_crtc_funcs = { > - .gamma_set = drm_atomic_helper_legacy_gamma_set, > .destroy= drm_crtc_cleanup, > .set_config = drm_atomic_helper_set_config, > .page_flip = drm_atomic_helper_page_flip, > diff --git a/drivers/gpu/drm/arm/malidp_crtc.c > b/drivers/gpu/drm/arm/malidp_crtc.c > index 108e7a31bd26..494075ddbef6 100644 > --- a/drivers/gpu/drm/arm/malidp_crtc.c > +++ b/drivers/gpu/drm/arm/malidp_crtc.c > @@ -510,7 +510,6 @@ static void malidp_crtc_disable_vblank(struct drm_crtc > *crtc) > } > > static const struct drm_crtc_funcs malidp_crtc_funcs = { > - .gamma_set = drm_atomic_helper_legacy_gamma_set, > .destroy = drm_crtc_cleanup, > .set_config = drm_atomic_helper_set_config, > .page_flip = drm_atomic_helper_page_flip, > diff --git a/drivers/gpu/drm/armada/armada_crtc.c > b/drivers/gpu/drm/armada/armada_crtc.c > index 3ebcf5a52c8b..b7bb90ae787f 100644 > --- a/drivers/gpu/drm/armada/armada_crtc.c > +++ b/drivers/gpu/drm/armada/armada_crtc.c > @@ -820,7 +820,6 @@ static const struct drm_crtc_funcs armada_crtc_funcs = { > .cursor_set = armada_drm_crtc_cursor_set, > .cursor_move= armada_drm_crtc_cursor_move, > .destroy= armada_drm_crtc_destroy, > - .gamma_set = drm_atomic_helper_legacy_gamma_set, > .set_config = drm_atomic_helper_set_config, > .page_flip = drm_atomic_helper_page_flip, > .atomic_duplicate_state = drm_atomic_helper_crtc_duplicate_state, > diff --git a/drivers/gpu/drm/ast/ast_mode.c b/drivers/gpu/drm/ast/ast_mode.c > index 9db371f4054f..5b0ec785c516 100644 > --- a/drivers/gpu/drm/ast/ast_mode.c > +++ b/drivers/gpu/drm/ast/ast_mode.c > @@ -903,7 +903,6 @@ static void ast_crtc_atomic_destroy_state(struct drm_crtc > *crtc, > > static const struct drm_crtc_funcs ast_crtc_funcs = { > .reset = ast_crtc_reset, > - .gamma_set = drm_atomic_helper_legacy_gamma_set, > .destroy = drm_crtc_cleanup, > .set_config = drm_atomic_he