drm/amd/display: Add gfx12 modifiers
authorAurabindo Pillai <aurabindo.pillai@amd.com>
Fri, 2 Feb 2024 18:53:16 +0000 (13:53 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 26 Apr 2024 21:23:20 +0000 (17:23 -0400)
Expose linear modifier definitions for use with DCN401

Signed-off-by: Aurabindo Pillai <aurabindo.pillai@amd.com>
Acked-by: Rodrigo Siqueira <rodrigo.siqueira@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c

index 8a4c40b..4953143 100644 (file)
@@ -647,6 +647,18 @@ static void amdgpu_dm_plane_add_gfx11_modifiers(struct amdgpu_device *adev,
                                     AMD_FMT_MOD_SET(TILE, AMD_FMT_MOD_TILE_GFX9_64K_D));
 }
 
+static void amdgpu_dm_plane_add_gfx12_modifiers(struct amdgpu_device *adev,
+                     uint64_t **mods, uint64_t *size, uint64_t *capacity)
+{
+       uint64_t mod_64K_2D = AMD_FMT_MOD |
+               AMD_FMT_MOD_SET(TILE_VERSION, AMD_FMT_MOD_TILE_VER_GFX12) |
+               AMD_FMT_MOD_SET(TILE, AMD_FMT_MOD_TILE_GFX12_64K_2D);
+
+       /* 64K without DCC */
+       amdgpu_dm_plane_add_modifier(mods, size, capacity, mod_64K_2D);
+       amdgpu_dm_plane_add_modifier(mods, size, capacity, DRM_FORMAT_MOD_LINEAR);
+}
+
 static int amdgpu_dm_plane_get_plane_modifiers(struct amdgpu_device *adev, unsigned int plane_type, uint64_t **mods)
 {
        uint64_t size = 0, capacity = 128;
@@ -684,6 +696,9 @@ static int amdgpu_dm_plane_get_plane_modifiers(struct amdgpu_device *adev, unsig
        case AMDGPU_FAMILY_GC_11_5_0:
                amdgpu_dm_plane_add_gfx11_modifiers(adev, mods, &size, &capacity);
                break;
+       case AMDGPU_FAMILY_GC_12_0_0:
+               amdgpu_dm_plane_add_gfx12_modifiers(adev, mods, &size, &capacity);
+               break;
        }
 
        amdgpu_dm_plane_add_modifier(mods, &size, &capacity, DRM_FORMAT_MOD_LINEAR);