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

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
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1680,7 +1680,7 @@ static void dcn32_enable_phantom_plane(struct dc *dc,

		/* Shadow pipe has small viewport. */
		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;

+7 −1
Original line number Diff line number Diff line
@@ -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 socclk = context->bw_ctx.dml.vba.SOCCLKPerState[vlevel];
	struct vba_vars_st *vba = &context->bw_ctx.dml.vba;
	struct dc_stream_state *main_stream = ref_pipe->stream;

	dc_assert_fp_enabled();

@@ -581,8 +582,13 @@ void dcn32_set_phantom_stream_timing(struct dc *dc,

	phantom_stream->dst.y = 0;
	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.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_front_porch = 1;