mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-07 23:20:32 -04:00
drm/amd/display: Set compbuf size to min at prep prevent overbook crb
[Why] Detbuffer size is dynamically set for dcn31x. At certain moment, compbuf+(def size * num pipes) > config return buffer size causing flickering. This is easily reproducible when MPO is enabled with two displays. [How] At prepare BW, use the min comp buffer size. When it is to optimize BW, set compbuf size back to maximum possible size. Reviewed-by: Charlene Liu <Charlene.Liu@amd.com> Acked-by: Solomon Chiu <solomon.chiu@amd.com> Signed-off-by: Duncan Ma <duncanma@amd.com> Tested-by: Daniel Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
@@ -1818,6 +1818,7 @@ void dcn20_prepare_bandwidth(
|
||||
struct dc_state *context)
|
||||
{
|
||||
struct hubbub *hubbub = dc->res_pool->hubbub;
|
||||
unsigned int compbuf_size_kb = 0;
|
||||
|
||||
dc->clk_mgr->funcs->update_clocks(
|
||||
dc->clk_mgr,
|
||||
@@ -1829,9 +1830,16 @@ void dcn20_prepare_bandwidth(
|
||||
&context->bw_ctx.bw.dcn.watermarks,
|
||||
dc->res_pool->ref_clocks.dchub_ref_clock_inKhz / 1000,
|
||||
false);
|
||||
|
||||
/* decrease compbuf size */
|
||||
if (hubbub->funcs->program_compbuf_size)
|
||||
hubbub->funcs->program_compbuf_size(hubbub, context->bw_ctx.bw.dcn.compbuf_size_kb, false);
|
||||
if (hubbub->funcs->program_compbuf_size) {
|
||||
if (context->bw_ctx.dml.ip.min_comp_buffer_size_kbytes)
|
||||
compbuf_size_kb = context->bw_ctx.dml.ip.min_comp_buffer_size_kbytes;
|
||||
else
|
||||
compbuf_size_kb = context->bw_ctx.bw.dcn.compbuf_size_kb;
|
||||
|
||||
hubbub->funcs->program_compbuf_size(hubbub, compbuf_size_kb, false);
|
||||
}
|
||||
}
|
||||
|
||||
void dcn20_optimize_bandwidth(
|
||||
|
||||
@@ -141,6 +141,7 @@ struct _vcs_dpi_ip_params_st {
|
||||
unsigned int odm_capable;
|
||||
unsigned int rob_buffer_size_kbytes;
|
||||
unsigned int det_buffer_size_kbytes;
|
||||
unsigned int min_comp_buffer_size_kbytes;
|
||||
unsigned int dpte_buffer_size_in_pte_reqs_luma;
|
||||
unsigned int dpte_buffer_size_in_pte_reqs_chroma;
|
||||
unsigned int pde_proc_buffer_size_64k_reqs;
|
||||
|
||||
Reference in New Issue
Block a user