Commit 486cc0ee authored by Nikola Cornij's avatar Nikola Cornij Committed by Alex Deucher

drm/amd/display: Add output bitrate to DML calculations

[why]
Output bitrate was mistakenly left out, causing corruption on some
DSC low resolution (such as 800x600) modes.
Signed-off-by: default avatarNikola Cornij <nikola.cornij@amd.com>
Reviewed-by: default avatarDmytro Laktyushkin <Dmytro.Laktyushkin@amd.com>
Acked-by: default avatarBhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent c5980231
...@@ -1894,7 +1894,7 @@ int dcn20_populate_dml_pipes_from_context( ...@@ -1894,7 +1894,7 @@ int dcn20_populate_dml_pipes_from_context(
break; break;
case PIXEL_ENCODING_YCBCR420: case PIXEL_ENCODING_YCBCR420:
pipes[pipe_cnt].dout.output_format = dm_420; 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; break;
case PIXEL_ENCODING_YCBCR422: case PIXEL_ENCODING_YCBCR422:
if (true) /* todo */ if (true) /* todo */
...@@ -1908,6 +1908,9 @@ int dcn20_populate_dml_pipes_from_context( ...@@ -1908,6 +1908,9 @@ int dcn20_populate_dml_pipes_from_context(
pipes[pipe_cnt].dout.output_bpp = output_bpc * 3; 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*/ /* todo: default max for now, until there is logic reflecting this in dc*/
pipes[pipe_cnt].dout.output_bpc = 12; pipes[pipe_cnt].dout.output_bpc = 12;
/* /*
......
...@@ -269,7 +269,7 @@ struct writeback_st { ...@@ -269,7 +269,7 @@ struct writeback_st {
struct _vcs_dpi_display_output_params_st { struct _vcs_dpi_display_output_params_st {
int dp_lanes; int dp_lanes;
int output_bpp; double output_bpp;
int dsc_enable; int dsc_enable;
int wb_enable; int wb_enable;
int num_active_wb; int num_active_wb;
......
...@@ -434,6 +434,8 @@ static void fetch_pipe_params(struct display_mode_lib *mode_lib) ...@@ -434,6 +434,8 @@ static void fetch_pipe_params(struct display_mode_lib *mode_lib)
dst->odm_combine; dst->odm_combine;
mode_lib->vba.OutputFormat[mode_lib->vba.NumberOfActivePlanes] = mode_lib->vba.OutputFormat[mode_lib->vba.NumberOfActivePlanes] =
(enum output_format_class) (dout->output_format); (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] = mode_lib->vba.Output[mode_lib->vba.NumberOfActivePlanes] =
(enum output_encoder_class) (dout->output_type); (enum output_encoder_class) (dout->output_type);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment