This patch expands the cursor checks added in "drm/amd/display: add basic atomic check for cursor plane" to also include a pitch check. Without this patch, setting a FB smaller than max_cursor_size with an invalid pitch would result in amdgpu error messages and a fallback to a 64-byte pitch: [drm:hubp1_cursor_set_attributes [amdgpu]] *ERROR* Invalid cursor pitch of 100. Only 64/128/256 is supported on DCN. Signed-off-by: Simon Ser <contact@xxxxxxxxxxx> Reported-by: Pierre-Loup A. Griffais <pgriffais@xxxxxxxxxxxxxxxxx> Cc: Alex Deucher <alexander.deucher@xxxxxxx> Cc: Harry Wentland <hwentlan@xxxxxxx> Cc: Nicholas Kazlauskas <nicholas.kazlauskas@xxxxxxx> --- Couple questions: - This implements a single check for all GPU generations. Is my assumption correct here? It seems like this check is OK for at least DCN 1.0 and DCN 2.0. - We should really implement better checks. What features are supported on the cursor plane? Is scaling supported? Is cropping supported? Is rotation always supported? drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c index 2855bb918535..42b0ade7de39 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -8902,6 +8902,20 @@ static int dm_update_plane_state(struct dc *dc, return -EINVAL; } + if (new_plane_state->fb) { + switch (new_plane_state->fb->pitches[0]) { + case 64: + case 128: + case 256: + /* Pitch is supported by cursor plane */ + break; + default: + DRM_DEBUG_ATOMIC("Bad cursor pitch %d\n", + new_plane_state->fb->pitches[0]); + return -EINVAL; + } + } + return 0; } -- 2.29.2 _______________________________________________ amd-gfx mailing list amd-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/amd-gfx