Skip to content

Commit 578aab4

Browse files
leo-sunli1alexdeucher
authored andcommitted
drm/amd/display: Do not reset planes based on crtc zpos_changed
[Why] drm_normalize_zpos will set the crtc_state->zpos_changed to 1 if any of it's assigned planes changes zpos, or is removed/added from it. To have amdgpu_dm request a plane reset on this is too broad. For example, if only the cursor plane was moved from one crtc to another, the crtc's zpos_changed will be set to true. But that does not mean that the underlying primary plane requires a reset. [How] Narrow it down so that only the plane that has a change in zpos will require a reset. As a future TODO, we can further optimize this by only requiring a reset on z-order change. Z-order is different from z-pos, since a zpos change doesn't necessarily mean the z-ordering changed, and DC should only require a reset if the z-ordering changed. For example, the following zpos update does not change z-ordering: Plane A: zpos 2 -> 3 Plane B: zpos 1 -> 2 => Plane A is still on top of plane B: no reset needed Whereas this one does change z-ordering: Plane A: zpos 2 -> 1 Plane B: zpos 1 -> 2 => Plane A changed from on top, to below plane B: reset needed Fixes: 38e0c3d ("drm/amd/display: Move PRIMARY plane zpos higher") Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/3569 Signed-off-by: Leo Li <[email protected]> Reviewed-by: Harry Wentland <[email protected]> Signed-off-by: Alex Deucher <[email protected]>
1 parent 0df8ef6 commit 578aab4

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10561,7 +10561,7 @@ static bool should_reset_plane(struct drm_atomic_state *state,
1056110561
* TODO: We can likely skip bandwidth validation if the only thing that
1056210562
* changed about the plane was it'z z-ordering.
1056310563
*/
10564-
if (new_crtc_state->zpos_changed)
10564+
if (old_plane_state->normalized_zpos != new_plane_state->normalized_zpos)
1056510565
return true;
1056610566

1056710567
if (drm_atomic_crtc_needs_modeset(new_crtc_state))

0 commit comments

Comments
 (0)