drm/amd/display: Check all enabled planes in dm_check_crtc_cursor
[ Upstream commit 003048ddf44b1a6cfa57afa5a0cf40673e13f1ba ] It was only checking planes which had any state changes in the same commit. However, it also needs to check other enabled planes. Not doing this meant that a commit might spuriously "succeed", resulting in the cursor plane displaying with incorrect scaling. See https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3177#note_1824263 for an example. Fixes: d1bfbe8a3202 ("amd/display: check cursor plane matches underlying plane") Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Michel Dänzer <mdaenzer@redhat.com> Signed-off-by: Hamza Mahfooz <hamza.mahfooz@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
8b72c5d4a5
commit
c9106fb186
@ -9908,14 +9908,24 @@ static int dm_check_crtc_cursor(struct drm_atomic_state *state,
|
||||
* blending properties match the underlying planes'.
|
||||
*/
|
||||
|
||||
new_cursor_state = drm_atomic_get_new_plane_state(state, cursor);
|
||||
if (!new_cursor_state || !new_cursor_state->fb)
|
||||
new_cursor_state = drm_atomic_get_plane_state(state, cursor);
|
||||
if (IS_ERR(new_cursor_state))
|
||||
return PTR_ERR(new_cursor_state);
|
||||
|
||||
if (!new_cursor_state->fb)
|
||||
return 0;
|
||||
|
||||
dm_get_oriented_plane_size(new_cursor_state, &cursor_src_w, &cursor_src_h);
|
||||
cursor_scale_w = new_cursor_state->crtc_w * 1000 / cursor_src_w;
|
||||
cursor_scale_h = new_cursor_state->crtc_h * 1000 / cursor_src_h;
|
||||
|
||||
/* Need to check all enabled planes, even if this commit doesn't change
|
||||
* their state
|
||||
*/
|
||||
i = drm_atomic_add_affected_planes(state, crtc);
|
||||
if (i)
|
||||
return i;
|
||||
|
||||
for_each_new_plane_in_state_reverse(state, underlying, new_underlying_state, i) {
|
||||
/* Narrow down to non-cursor planes on the same CRTC as the cursor */
|
||||
if (new_underlying_state->crtc != crtc || underlying == crtc->cursor)
|
||||
|
Loading…
x
Reference in New Issue
Block a user