drm/amd/display: Add output bitrate to DML calculations
authorNikola Cornij <nikola.cornij@amd.com>
Thu, 12 Sep 2019 21:15:16 +0000 (17:15 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 11 Oct 2019 00:32:24 +0000 (19:32 -0500)
[why]
Output bitrate was mistakenly left out, causing corruption on some
DSC low resolution (such as 800x600) modes.

Signed-off-by: Nikola Cornij <nikola.cornij@amd.com>
Reviewed-by: Dmytro Laktyushkin <Dmytro.Laktyushkin@amd.com>
Acked-by: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/dcn20/dcn20_resource.c
drivers/gpu/drm/amd/display/dc/dml/display_mode_structs.h
drivers/gpu/drm/amd/display/dc/dml/display_mode_vba.c

index 1ee9356..7ace3b2 100644 (file)
@@ -1894,7 +1894,7 @@ int dcn20_populate_dml_pipes_from_context(
                        break;
                case PIXEL_ENCODING_YCBCR420:
                        pipes[pipe_cnt].dout.output_format = dm_420;
-                       pipes[pipe_cnt].dout.output_bpp = (output_bpc * 3) / 2;
+                       pipes[pipe_cnt].dout.output_bpp = (output_bpc * 3.0) / 2;
                        break;
                case PIXEL_ENCODING_YCBCR422:
                        if (true) /* todo */
@@ -1908,6 +1908,9 @@ int dcn20_populate_dml_pipes_from_context(
                        pipes[pipe_cnt].dout.output_bpp = output_bpc * 3;
                }
 
+               if (res_ctx->pipe_ctx[i].stream->timing.flags.DSC)
+                       pipes[pipe_cnt].dout.output_bpp = res_ctx->pipe_ctx[i].stream->timing.dsc_cfg.bits_per_pixel / 16.0;
+
                /* todo: default max for now, until there is logic reflecting this in dc*/
                pipes[pipe_cnt].dout.output_bpc = 12;
                /*
index f4c1ef9..83f84cd 100644 (file)
@@ -269,7 +269,7 @@ struct writeback_st {
 
 struct _vcs_dpi_display_output_params_st {
        int dp_lanes;
-       int output_bpp;
+       double output_bpp;
        int dsc_enable;
        int wb_enable;
        int num_active_wb;
index 65cf4ed..362dc6e 100644 (file)
@@ -434,6 +434,8 @@ static void fetch_pipe_params(struct display_mode_lib *mode_lib)
                                dst->odm_combine;
                mode_lib->vba.OutputFormat[mode_lib->vba.NumberOfActivePlanes] =
                                (enum output_format_class) (dout->output_format);
+               mode_lib->vba.OutputBpp[mode_lib->vba.NumberOfActivePlanes] =
+                               dout->output_bpp;
                mode_lib->vba.Output[mode_lib->vba.NumberOfActivePlanes] =
                                (enum output_encoder_class) (dout->output_type);