From b14cc344155c969dc3ffefd0d1aa9bf387bd4216 Mon Sep 17 00:00:00 2001 From: Qiang Yu Date: Tue, 3 Dec 2024 10:55:06 +0800 Subject: [PATCH] ac/surf: add more modifiers to gfx12 supported list OpenGL will export these modifiers for various sized textures. Part-of: --- src/amd/common/ac_drm_fourcc.h | 2 ++ src/amd/common/ac_surface.c | 11 +++++++++++ 2 files changed, 13 insertions(+) diff --git a/src/amd/common/ac_drm_fourcc.h b/src/amd/common/ac_drm_fourcc.h index 163f8c0b658..ec453de91c9 100644 --- a/src/amd/common/ac_drm_fourcc.h +++ b/src/amd/common/ac_drm_fourcc.h @@ -31,7 +31,9 @@ typedef uint64_t __u64; #define AMD_FMT_MOD_TILE_GFX9_64K_R_X 27 #define AMD_FMT_MOD_TILE_GFX11_256K_R_X 31 #define AMD_FMT_MOD_TILE_GFX12_256B_2D 1 +#define AMD_FMT_MOD_TILE_GFX12_4K_2D 2 #define AMD_FMT_MOD_TILE_GFX12_64K_2D 3 +#define AMD_FMT_MOD_TILE_GFX12_256K_2D 4 #define AMD_FMT_MOD_DCC_BLOCK_64B 0 #define AMD_FMT_MOD_DCC_BLOCK_128B 1 #define AMD_FMT_MOD_DCC_BLOCK_256B 2 diff --git a/src/amd/common/ac_surface.c b/src/amd/common/ac_surface.c index 20e9a8c6494..5f89b738024 100644 --- a/src/amd/common/ac_surface.c +++ b/src/amd/common/ac_surface.c @@ -557,11 +557,22 @@ bool ac_get_supported_modifiers(const struct radeon_info *info, AMD_FMT_MOD_SET(TILE_VERSION, AMD_FMT_MOD_TILE_VER_GFX12) | AMD_FMT_MOD_SET(TILE, AMD_FMT_MOD_TILE_GFX12_256B_2D); + uint64_t mod_4K_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_4K_2D); + + uint64_t mod_256K_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_256K_2D); + /* Modifiers must be sorted from best to worst. */ ADD_MOD(mod_64K_2D | dcc_128B) /* 64K with DCC and 128B compressed blocks */ ADD_MOD(mod_64K_2D | dcc_64B) /* 64K with DCC and 64B compressed blocks */ ADD_MOD(mod_64K_2D) /* 64K without DCC */ ADD_MOD(mod_64K_2D_as_gfx11) /* the same as above, but for gfx11 interop */ + ADD_MOD(mod_256K_2D | dcc_128B) /* OpenGL exported modifier */ + ADD_MOD(mod_4K_2D | dcc_128B) /* OpenGL exported modifier */ + ADD_MOD(mod_256B_2D | dcc_128B) /* OpenGL exported modifier */ ADD_MOD(mod_256B_2D) ADD_MOD(DRM_FORMAT_MOD_LINEAR) break;