Revert "drm/amd/display: Hardware cursor changes color when switched to software...
authorMelissa Wen <mwen@igalia.com>
Tue, 22 Apr 2025 14:58:11 +0000 (11:58 -0300)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 14 May 2025 15:27:09 +0000 (11:27 -0400)
This reverts commit 272e6aab14bbf98d7a06b2b1cd6308a02d4a10a1.

Applying degamma curve to the cursor by default breaks Linux userspace
expectation.

On Linux, AMD display manager enables cursor degamma ROM just for
implict sRGB on HW versions where 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.

Link: https://gitlab.freedesktop.org/drm/amd/-/issues/1513
Link: https://gitlab.freedesktop.org/drm/amd/-/issues/2803
Reported-by: Michel Dänzer <michel.daenzer@mailbox.org>
Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/4144
Signed-off-by: Melissa Wen <mwen@igalia.com>
Reviewed-by: Alex Hung <alex.hung@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/dpp/dcn401/dcn401_dpp_cm.c

index 1236e0f9a2560cbf87894adddb5faac817da4292..712aff7e17f7a0f727f7751676216c9168d875a2 100644 (file)
@@ -120,10 +120,11 @@ void dpp401_set_cursor_attributes(
        enum dc_cursor_color_format color_format = cursor_attributes->color_format;
        int cur_rom_en = 0;
 
-       // DCN4 should always do Cursor degamma for Cursor Color modes
        if (color_format == CURSOR_MODE_COLOR_PRE_MULTIPLIED_ALPHA ||
                color_format == CURSOR_MODE_COLOR_UN_PRE_MULTIPLIED_ALPHA) {
-               cur_rom_en = 1;
+               if (cursor_attributes->attribute_flags.bits.ENABLE_CURSOR_DEGAMMA) {
+                       cur_rom_en = 1;
+               }
        }
 
        REG_UPDATE_3(CURSOR0_CONTROL,