From: Nikola Cornij <[email protected]>

[why]
Output bitrate was mistakenly left out, causing corruption on some
DSC low resolution (such as 800x600) modes.

Change-Id: I47962603773d106a810a0b1b829dbd4168a53e47
Signed-off-by: Nikola Cornij <[email protected]>
Reviewed-by: Dmytro Laktyushkin <[email protected]>
Acked-by: Bhawanpreet Lakha <[email protected]>
---
 drivers/gpu/drm/amd/display/dc/dcn20/dcn20_resource.c     | 5 ++++-
 drivers/gpu/drm/amd/display/dc/dml/display_mode_structs.h | 2 +-
 drivers/gpu/drm/amd/display/dc/dml/display_mode_vba.c     | 2 ++
 3 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_resource.c 
b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_resource.c
index 13484fff7ad6..3bc7f9adf8ca 100644
--- a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_resource.c
+++ b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_resource.c
@@ -1893,7 +1893,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 */
@@ -1907,6 +1907,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;
                /*
diff --git a/drivers/gpu/drm/amd/display/dc/dml/display_mode_structs.h 
b/drivers/gpu/drm/amd/display/dc/dml/display_mode_structs.h
index f4c1ef9046bf..83f84cdd4055 100644
--- a/drivers/gpu/drm/amd/display/dc/dml/display_mode_structs.h
+++ b/drivers/gpu/drm/amd/display/dc/dml/display_mode_structs.h
@@ -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;
diff --git a/drivers/gpu/drm/amd/display/dc/dml/display_mode_vba.c 
b/drivers/gpu/drm/amd/display/dc/dml/display_mode_vba.c
index 65cf4edddaff..362dc6ea98ae 100644
--- a/drivers/gpu/drm/amd/display/dc/dml/display_mode_vba.c
+++ b/drivers/gpu/drm/amd/display/dc/dml/display_mode_vba.c
@@ -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);
 
-- 
2.17.1

_______________________________________________
amd-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to