]> www.infradead.org Git - nvme.git/commitdiff
drm/amdgpu/display: handle gfx12 in dm_check_cursor_fb
authorMarek Olšák <marek.olsak@amd.com>
Sat, 1 Jun 2024 18:36:41 +0000 (14:36 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 1 Jul 2024 20:10:46 +0000 (16:10 -0400)
Checking SWIZZLE_MODE has undefined behavior on gfx12.

Signed-off-by: Marek Olšák <marek.olsak@amd.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Aurabindo Pillai <aurabindo.pillai@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c

index f83ef3e1554c542d11d7438f233971ea4254ab8b..98cf523a629ef53f50baf174fc190953b6dd40c4 100644 (file)
@@ -10667,12 +10667,14 @@ static int dm_check_cursor_fb(struct amdgpu_crtc *new_acrtc,
         * check tiling flags when the FB doesn't have a modifier.
         */
        if (!(fb->flags & DRM_MODE_FB_MODIFIERS)) {
-               if (adev->family < AMDGPU_FAMILY_AI) {
+               if (adev->family >= AMDGPU_FAMILY_GC_12_0_0) {
+                       linear = AMDGPU_TILING_GET(afb->tiling_flags, GFX12_SWIZZLE_MODE) == 0;
+               } else if (adev->family >= AMDGPU_FAMILY_AI) {
+                       linear = AMDGPU_TILING_GET(afb->tiling_flags, SWIZZLE_MODE) == 0;
+               } else {
                        linear = AMDGPU_TILING_GET(afb->tiling_flags, ARRAY_MODE) != DC_ARRAY_2D_TILED_THIN1 &&
                                 AMDGPU_TILING_GET(afb->tiling_flags, ARRAY_MODE) != DC_ARRAY_1D_TILED_THIN1 &&
                                 AMDGPU_TILING_GET(afb->tiling_flags, MICRO_TILE_MODE) == 0;
-               } else {
-                       linear = AMDGPU_TILING_GET(afb->tiling_flags, SWIZZLE_MODE) == 0;
                }
                if (!linear) {
                        DRM_DEBUG_ATOMIC("Cursor FB not linear");