Commit 507293b1 authored by Michael Strauss's avatar Michael Strauss Committed by Alex Deucher
Browse files

drm/amd/display: Fix overlay with pre-blend color processing



[WHY]
Overlay works similarly to MPO, but uses global alpha on both planes and
sets the desktop as the rear plane instead of the front plane

[HOW]
Ensure that top plane isn't overlay by checking global alpha before
applying the previously added MPO fix

Reviewed-by: default avatarRodrigo Siqueira <rodrigo.siqueira@amd.com>
Signed-off-by: default avatarMichael Strauss <michael.strauss@amd.com>
Signed-off-by: default avatarWayne Lin <wayne.lin@amd.com>
Tested-by: default avatarDaniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent db65eb46
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -2586,8 +2586,11 @@ static bool dcn10_is_rear_mpo_fix_required(struct pipe_ctx *pipe_ctx, enum dc_co

			while (top->top_pipe)
				top = top->top_pipe; // Traverse to top pipe_ctx
			if (top->plane_state && top->plane_state->layer_index == 0)
				return true; // Front MPO plane not hidden
			if (top->plane_state && top->plane_state->layer_index == 0 && !top->plane_state->global_alpha)
				// Global alpha used by top plane for PIP overlay
				// Pre-multiplied/per-pixel alpha used by MPO
				// Check top plane's global alpha to ensure layer_index > 0 not caused by PIP
				return true; // MPO in use and front plane not hidden
		}
	}
	return false;