drm/amd/display: Always use legacy way of setting cursor on DCE

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>
This commit is contained in:
Harry Wentland
2024-04-19 14:29:46 -04:00
committed by Alex Deucher
parent 7e0357bef4
commit e582c097d3

View 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: