OSDN Git Service

drm/amd/display: Handle pixel format test request
authorIlya Bakoulin <Ilya.Bakoulin@amd.com>
Thu, 15 Apr 2021 20:02:25 +0000 (16:02 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 10 May 2021 22:10:56 +0000 (18:10 -0400)
[Why]
Some DSC tests fail because stream pixel encoding does not change
its value according to the type requested in the DPCD test params.

[How]
Set stream pixel encoding before updating DSC config and configuring
the test pattern.

Signed-off-by: Ilya Bakoulin <Ilya.Bakoulin@amd.com>
Reviewed-by: Hanghong Ma <Hanghong.Ma@amd.com>
Acked-by: Stylon Wang <stylon.wang@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c

index 37ec894..4a08fe0 100644 (file)
@@ -2957,6 +2957,22 @@ static void dp_test_send_link_test_pattern(struct dc_link *link)
                break;
        }
 
+       switch (dpcd_test_params.bits.CLR_FORMAT) {
+       case 0:
+               pipe_ctx->stream->timing.pixel_encoding = PIXEL_ENCODING_RGB;
+               break;
+       case 1:
+               pipe_ctx->stream->timing.pixel_encoding = PIXEL_ENCODING_YCBCR422;
+               break;
+       case 2:
+               pipe_ctx->stream->timing.pixel_encoding = PIXEL_ENCODING_YCBCR444;
+               break;
+       default:
+               pipe_ctx->stream->timing.pixel_encoding = PIXEL_ENCODING_RGB;
+               break;
+       }
+
+
        if (requestColorDepth != COLOR_DEPTH_UNDEFINED
                        && pipe_ctx->stream->timing.display_color_depth != requestColorDepth) {
                DC_LOG_DEBUG("%s: original bpc %d, changing to %d\n",
@@ -2964,9 +2980,10 @@ static void dp_test_send_link_test_pattern(struct dc_link *link)
                                pipe_ctx->stream->timing.display_color_depth,
                                requestColorDepth);
                pipe_ctx->stream->timing.display_color_depth = requestColorDepth;
-               dp_update_dsc_config(pipe_ctx);
        }
 
+       dp_update_dsc_config(pipe_ctx);
+
        dc_link_dp_set_test_pattern(
                        link,
                        test_pattern,