Commit 7dcc3fcf authored by Dillon Varone's avatar Dillon Varone Committed by Alex Deucher

drm/amd/display: Align phantom pipe dst/src scaling with main for subvp

[WHY?]
Subvp src/dst stream rectangles are not being created with the same scaling
factors as the main stream.

[HOW?]
Make sure subvp stream src rectangle scales its height to have the same src/dst
ratio as the main stream.
Reviewed-by: default avatarAlvin Lee <Alvin.Lee2@amd.com>
Reviewed-by: default avatarJun Lei <Jun.Lei@amd.com>
Acked-by: default avatarTom Chung <chiahsuan.chung@amd.com>
Signed-off-by: default avatarDillon Varone <Dillon.Varone@amd.com>
Tested-by: default avatarDaniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 31494626
...@@ -1680,7 +1680,7 @@ static void dcn32_enable_phantom_plane(struct dc *dc, ...@@ -1680,7 +1680,7 @@ static void dcn32_enable_phantom_plane(struct dc *dc,
/* Shadow pipe has small viewport. */ /* Shadow pipe has small viewport. */
phantom_plane->clip_rect.y = 0; phantom_plane->clip_rect.y = 0;
phantom_plane->clip_rect.height = phantom_stream->timing.v_addressable; phantom_plane->clip_rect.height = phantom_stream->src.height;
phantom_plane->is_phantom = true; phantom_plane->is_phantom = true;
......
...@@ -536,6 +536,7 @@ void dcn32_set_phantom_stream_timing(struct dc *dc, ...@@ -536,6 +536,7 @@ void dcn32_set_phantom_stream_timing(struct dc *dc,
unsigned int dcfclk = context->bw_ctx.dml.vba.DCFCLKState[vlevel][context->bw_ctx.dml.vba.maxMpcComb]; 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]; unsigned int socclk = context->bw_ctx.dml.vba.SOCCLKPerState[vlevel];
struct vba_vars_st *vba = &context->bw_ctx.dml.vba; struct vba_vars_st *vba = &context->bw_ctx.dml.vba;
struct dc_stream_state *main_stream = ref_pipe->stream;
dc_assert_fp_enabled(); dc_assert_fp_enabled();
...@@ -581,8 +582,13 @@ void dcn32_set_phantom_stream_timing(struct dc *dc, ...@@ -581,8 +582,13 @@ void dcn32_set_phantom_stream_timing(struct dc *dc,
phantom_stream->dst.y = 0; phantom_stream->dst.y = 0;
phantom_stream->dst.height = phantom_vactive; phantom_stream->dst.height = phantom_vactive;
/* When scaling, DML provides the end to end required number of lines for MALL.
* dst.height is always correct for this case, but src.height is not which causes a
* delta between main and phantom pipe scaling outputs. Need to adjust src.height on
* phantom for this case.
*/
phantom_stream->src.y = 0; phantom_stream->src.y = 0;
phantom_stream->src.height = phantom_vactive; phantom_stream->src.height = (double)phantom_vactive * (double)main_stream->src.height / (double)main_stream->dst.height;
phantom_stream->timing.v_addressable = phantom_vactive; phantom_stream->timing.v_addressable = phantom_vactive;
phantom_stream->timing.v_front_porch = 1; phantom_stream->timing.v_front_porch = 1;
......
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