drm/amd/display: Handle Y carry-over in VCP X.Y calculation
authorGeorge Shen <george.shen@amd.com>
Thu, 16 Sep 2021 23:55:39 +0000 (19:55 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 29 Sep 2021 21:30:00 +0000 (17:30 -0400)
[Why/How]
Theoretically rare corner case where ceil(Y) results in rounding
up to an integer. If this happens, the 1 should be carried over to
the X value.

Reviewed-by: Wenjing Liu <wenjing.liu@amd.com>
Acked-by: Anson Jacob <Anson.Jacob@amd.com>
Signed-off-by: George Shen <george.shen@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/dcn10/dcn10_stream_encoder.c

index 687c3c6881a986f8aa9012f74a08dcb2c7819093..b0c08ee6bc2cb316663bde8e5265a36a479785c9 100644 (file)
@@ -647,6 +647,12 @@ void enc1_stream_encoder_set_throttled_vcp_size(
                                x),
                        26));
 
+       // If y rounds up to integer, carry it over to x.
+       if (y >> 26) {
+               x += 1;
+               y = 0;
+       }
+
        REG_SET_2(DP_MSE_RATE_CNTL, 0,
                DP_MSE_RATE_X, x,
                DP_MSE_RATE_Y, y);