mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-02 02:47:31 -04:00
drm/amd/display: Workaround to increase phantom pipe vactive in pipesplit
[Why] Certain high resolution displays exhibit DCC line corruption with SubVP enabled. This is likely due to insufficient DCC meta data buffered immediately after the mclk switch. [How] Add workaround to increase phantom pipe vactive height by meta_row_height number of lines, thus increasing the amount of meta data buffered immediately after mclk switch finishes. Reviewed-by: Alvin Lee <Alvin.Lee2@amd.com> Acked-by: Tom Chung <chiahsuan.chung@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>
This commit is contained in:
committed by
Alex Deucher
parent
d97fd7a07b
commit
5b8f9deaf3
@@ -531,9 +531,11 @@ void dcn32_set_phantom_stream_timing(struct dc *dc,
|
||||
unsigned int i, pipe_idx;
|
||||
struct pipe_ctx *pipe;
|
||||
uint32_t phantom_vactive, phantom_bp, pstate_width_fw_delay_lines;
|
||||
unsigned int num_dpp;
|
||||
unsigned int vlevel = context->bw_ctx.dml.vba.VoltageLevel;
|
||||
unsigned int dcfclk = context->bw_ctx.dml.vba.DCFCLKState[vlevel][context->bw_ctx.dml.vba.maxMpcComb];
|
||||
unsigned int socclk = context->bw_ctx.dml.vba.SOCCLKPerState[vlevel];
|
||||
struct vba_vars_st *vba = &context->bw_ctx.dml.vba;
|
||||
|
||||
dc_assert_fp_enabled();
|
||||
|
||||
@@ -569,6 +571,11 @@ void dcn32_set_phantom_stream_timing(struct dc *dc,
|
||||
phantom_vactive = get_subviewport_lines_needed_in_mall(&context->bw_ctx.dml, pipes, pipe_cnt, pipe_idx) +
|
||||
pstate_width_fw_delay_lines + dc->caps.subvp_swath_height_margin_lines;
|
||||
|
||||
// W/A for DCC corruption with certain high resolution timings.
|
||||
// Determing if pipesplit is used. If so, add meta_row_height to the phantom vactive.
|
||||
num_dpp = vba->NoOfDPP[vba->VoltageLevel][vba->maxMpcComb][vba->pipe_plane[pipe_idx]];
|
||||
phantom_vactive += num_dpp > 1 ? vba->meta_row_height[vba->pipe_plane[pipe_idx]] : 0;
|
||||
|
||||
// For backporch of phantom pipe, use vstartup of the main pipe
|
||||
phantom_bp = get_vstartup(&context->bw_ctx.dml, pipes, pipe_cnt, pipe_idx);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user