@@ -60,6 +60,7 @@ amdgpu_tiling_info_to_modifier(uint64_t tiling_info, int asic_family)
6060
6161 /* GFX12 and later use a different tiling format */
6262 if (asic_family >= AMDGPU_FAMILY_GC_12_0_0 ) {
63+ #ifdef HAVE_AMD_FMT_MOD_TILE_VER_GFX12
6364 uint32_t swizzle_mode = AMDGPU_TILING_GET (tiling_info , GFX12_SWIZZLE_MODE );
6465 uint64_t modifier = AMD_FMT_MOD |
6566 AMD_FMT_MOD_SET (TILE_VERSION , AMD_FMT_MOD_TILE_VER_GFX12 );
@@ -85,6 +86,10 @@ amdgpu_tiling_info_to_modifier(uint64_t tiling_info, int asic_family)
8586 }
8687
8788 return modifier ;
89+ #else
90+ /* GFX12 not supported by this libdrm version */
91+ return DRM_FORMAT_MOD_INVALID ;
92+ #endif
8893 }
8994
9095 /* GFX9 - GFX11: Check for 64K tiled modes */
@@ -864,13 +869,15 @@ amdgpu_dri3_get_modifiers(ScreenPtr screen, uint32_t format,
864869 AMD_FMT_MOD | AMD_FMT_MOD_TILE_VER_GFX10 |
865870 AMD_FMT_MOD_TILE_GFX9_64K_D ,
866871 };
872+ #ifdef HAVE_AMD_FMT_MOD_TILE_VER_GFX12
867873 static uint64_t amd_tiled_modifiers_gfx12 [] = {
868874 /* LINEAR - no tiling */
869875 DRM_FORMAT_MOD_INVALID ,
870876 /* AMD GFX12 64K_2D tiled */
871877 AMD_FMT_MOD | AMD_FMT_MOD_TILE_VER_GFX12 |
872878 AMD_FMT_MOD_TILE_GFX12_64K_2D ,
873879 };
880+ #endif
874881 uint64_t * mods ;
875882 uint32_t count ;
876883 int asic_family ;
@@ -880,8 +887,14 @@ amdgpu_dri3_get_modifiers(ScreenPtr screen, uint32_t format,
880887
881888 /* Determine which set of modifiers to return based on ASIC family */
882889 if (asic_family >= AMDGPU_FAMILY_GC_12_0_0 ) {
890+ #ifdef HAVE_AMD_FMT_MOD_TILE_VER_GFX12
883891 mods = amd_tiled_modifiers_gfx12 ;
884892 count = sizeof (amd_tiled_modifiers_gfx12 ) / sizeof (amd_tiled_modifiers_gfx12 [0 ]);
893+ #else
894+ /* GFX12 not supported, fall back to GFX10 modifiers */
895+ mods = amd_tiled_modifiers_gfx10 ;
896+ count = sizeof (amd_tiled_modifiers_gfx10 ) / sizeof (amd_tiled_modifiers_gfx10 [0 ]);
897+ #endif
885898 } else if (asic_family >= AMDGPU_FAMILY_NV ) {
886899 /* Navi and newer (GFX10+) */
887900 mods = amd_tiled_modifiers_gfx10 ;
@@ -935,13 +948,20 @@ amdgpu_dri3_get_drawable_modifiers(DrawablePtr draw, uint32_t format,
935948 * For drawables, we return the same modifiers as screen-level modifiers.
936949 */
937950 if (asic_family >= AMDGPU_FAMILY_GC_12_0_0 ) {
951+ #ifdef HAVE_AMD_FMT_MOD_TILE_VER_GFX12
938952 static uint64_t gfx12_mods [] = {
939953 DRM_FORMAT_MOD_INVALID ,
940954 AMD_FMT_MOD | AMD_FMT_MOD_TILE_VER_GFX12 |
941955 AMD_FMT_MOD_TILE_GFX12_64K_2D ,
942956 };
943957 mods = gfx12_mods ;
944958 count = sizeof (gfx12_mods ) / sizeof (gfx12_mods [0 ]);
959+ #else
960+ /* GFX12 not supported, fall back to invalid modifier */
961+ static uint64_t invalid_mods [] = { DRM_FORMAT_MOD_INVALID };
962+ mods = invalid_mods ;
963+ count = 1 ;
964+ #endif
945965 } else if (asic_family >= AMDGPU_FAMILY_NV ) {
946966 /* Navi and newer (GFX10+) */
947967 static uint64_t gfx10_mods [] = {
0 commit comments