diff mbox series

[v2] drm/amd/display: enable cursor degamma for DCN3+ DRM legacy gamma

Message ID 20230831161228.206735-1-mwen@igalia.com (mailing list archive)
State New, archived
Headers show
Series [v2] drm/amd/display: enable cursor degamma for DCN3+ DRM legacy gamma | expand

Commit Message

Melissa Wen Aug. 31, 2023, 4:12 p.m. UTC
For DRM legacy gamma, AMD display manager applies implicit sRGB degamma
using a pre-defined sRGB transfer function. It works fine for DCN2
family where degamma ROM and custom curves go to the same color block.
But, on DCN3+, degamma is split into two blocks: degamma ROM for
pre-defined TFs and `gamma correction` for user/custom curves and
degamma ROM settings doesn't apply to cursor plane. To get DRM legacy
gamma working as expected, enable cursor degamma ROM for implict sRGB
degamma on HW with this configuration.

Cc: stable@vger.kernel.org
Link: https://gitlab.freedesktop.org/drm/amd/-/issues/2803
Fixes: 96b020e2163f ("drm/amd/display: check attr flag before set cursor degamma on DCN3+")
Signed-off-by: Melissa Wen <mwen@igalia.com>
---
v2: cc'ing stable
---
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c | 7 +++++++
 1 file changed, 7 insertions(+)

Comments

Alex Deucher Aug. 31, 2023, 7:41 p.m. UTC | #1
Applied.  Thanks!

Alex

On Thu, Aug 31, 2023 at 12:12 PM Melissa Wen <mwen@igalia.com> wrote:
>
> For DRM legacy gamma, AMD display manager applies implicit sRGB degamma
> using a pre-defined sRGB transfer function. It works fine for DCN2
> family where degamma ROM and custom curves go to the same color block.
> But, on DCN3+, degamma is split into two blocks: degamma ROM for
> pre-defined TFs and `gamma correction` for user/custom curves and
> degamma ROM settings doesn't apply to cursor plane. To get DRM legacy
> gamma working as expected, enable cursor degamma ROM for implict sRGB
> degamma on HW with this configuration.
>
> Cc: stable@vger.kernel.org
> Link: https://gitlab.freedesktop.org/drm/amd/-/issues/2803
> Fixes: 96b020e2163f ("drm/amd/display: check attr flag before set cursor degamma on DCN3+")
> Signed-off-by: Melissa Wen <mwen@igalia.com>
> ---
> v2: cc'ing stable
> ---
>  drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c | 7 +++++++
>  1 file changed, 7 insertions(+)
>
> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c
> index df568a7cd005..b97cbc4e5477 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c
> @@ -1270,6 +1270,13 @@ void amdgpu_dm_plane_handle_cursor_update(struct drm_plane *plane,
>         attributes.rotation_angle    = 0;
>         attributes.attribute_flags.value = 0;
>
> +       /* Enable cursor degamma ROM on DCN3+ for implicit sRGB degamma in DRM
> +        * legacy gamma setup.
> +        */
> +       if (crtc_state->cm_is_degamma_srgb &&
> +           adev->dm.dc->caps.color.dpp.gamma_corr)
> +               attributes.attribute_flags.bits.ENABLE_CURSOR_DEGAMMA = 1;
> +
>         attributes.pitch = afb->base.pitches[0] / afb->base.format->cpp[0];
>
>         if (crtc_state->stream) {
> --
> 2.40.1
>
diff mbox series

Patch

diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c
index df568a7cd005..b97cbc4e5477 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c
@@ -1270,6 +1270,13 @@  void amdgpu_dm_plane_handle_cursor_update(struct drm_plane *plane,
 	attributes.rotation_angle    = 0;
 	attributes.attribute_flags.value = 0;
 
+	/* Enable cursor degamma ROM on DCN3+ for implicit sRGB degamma in DRM
+	 * legacy gamma setup.
+	 */
+	if (crtc_state->cm_is_degamma_srgb &&
+	    adev->dm.dc->caps.color.dpp.gamma_corr)
+		attributes.attribute_flags.bits.ENABLE_CURSOR_DEGAMMA = 1;
+
 	attributes.pitch = afb->base.pitches[0] / afb->base.format->cpp[0];
 
 	if (crtc_state->stream) {