]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/amd/display: Always use legacy way of setting cursor on DCE
authorHarry Wentland <harry.wentland@amd.com>
Fri, 19 Apr 2024 18:29:46 +0000 (14:29 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 30 Apr 2024 13:51:51 +0000 (09:51 -0400)
Some IGT tests fail with the new atomic cursor updates
when running on older DCE-based ASICs. To work around
these issues keep calling the amdgpu_dm_commit_cursors
for each cursor update on DCE, even if those cursor
updates coincide with other plane updates.

Reviewed-by: Agustin Gutierrez <agustin.gutierrez@amd.com>
Reviewed-by: Sun peng Li <sunpeng.li@amd.com>
Acked-by: Wayne Lin <wayne.lin@amd.com>
Signed-off-by: Harry Wentland <harry.wentland@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c

index 1e46a99b1f3d9b54e4cea64ce17f27e972f359bd..c863f400024b4196367a30e06d22dc87f3a00b65 100644 (file)
@@ -8497,7 +8497,8 @@ static void amdgpu_dm_commit_planes(struct drm_atomic_state *state,
                        if ((fb && crtc == pcrtc) ||
                            (old_plane_state->fb && old_plane_state->crtc == pcrtc)) {
                                cursor_update = true;
-                               amdgpu_dm_update_cursor(plane, old_plane_state, &bundle->stream_update);
+                               if (amdgpu_ip_version(dm->adev, DCE_HWIP, 0) != 0)
+                                       amdgpu_dm_update_cursor(plane, old_plane_state, &bundle->stream_update);
                        }
 
                        continue;
@@ -8849,7 +8850,8 @@ static void amdgpu_dm_commit_planes(struct drm_atomic_state *state,
         * This avoids redundant programming in the case where we're going
         * to be disabling a single plane - those pipes are being disabled.
         */
-       if (acrtc_state->active_planes && !updated_planes_and_streams)
+       if (acrtc_state->active_planes &&
+           (!updated_planes_and_streams || amdgpu_ip_version(dm->adev, DCE_HWIP, 0) == 0))
                amdgpu_dm_commit_cursors(state);
 
 cleanup: