From 6026cf43b3e4148f41946189980d9929e57e5c98 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Thu, 5 May 2022 11:28:52 +0200 Subject: [PATCH] radv: update image descriptor registers on GFX11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Samuel Pitoiset Reviewed-by: Timur Kristóf Part-of: --- src/amd/vulkan/radv_image.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/amd/vulkan/radv_image.c b/src/amd/vulkan/radv_image.c index 99b702d6b99..b2ace61e590 100644 --- a/src/amd/vulkan/radv_image.c +++ b/src/amd/vulkan/radv_image.c @@ -999,7 +999,7 @@ gfx10_make_texture_descriptor(struct radv_device *device, struct radv_image *ima S_00A004_FORMAT(img_format) | S_00A004_WIDTH_LO(width - 1); state[2] = S_00A008_WIDTH_HI((width - 1) >> 2) | S_00A008_HEIGHT(height - 1) | - S_00A008_RESOURCE_LEVEL(1); + S_00A008_RESOURCE_LEVEL(device->physical_device->rad_info.gfx_level < GFX11); state[3] = S_00A00C_DST_SEL_X(radv_map_swizzle(swizzle[0])) | S_00A00C_DST_SEL_Y(radv_map_swizzle(swizzle[1])) | S_00A00C_DST_SEL_Z(radv_map_swizzle(swizzle[2])) | @@ -1014,8 +1014,6 @@ gfx10_make_texture_descriptor(struct radv_device *device, struct radv_image *ima state[4] = S_00A010_DEPTH(type == V_008F1C_SQ_RSRC_IMG_3D ? depth - 1 : last_layer) | S_00A010_BASE_ARRAY(first_layer); state[5] = S_00A014_ARRAY_PITCH(0) | - S_00A014_MAX_MIP(image->info.samples > 1 ? util_logbase2(image->info.samples) - : image->info.levels - 1) | S_00A014_PERF_MOD(4); state[6] = 0; state[7] = 0; @@ -1032,6 +1030,15 @@ gfx10_make_texture_descriptor(struct radv_device *device, struct radv_image *ima state[5] |= S_00A014_ARRAY_PITCH(is_storage_image); } + unsigned max_mip = + image->info.samples > 1 ? util_logbase2(image->info.samples) : image->info.levels - 1; + + if (device->physical_device->rad_info.gfx_level >= GFX11) { + state[1] |= S_00A004_MAX_MIP(max_mip); + } else { + state[5] |= S_00A014_MAX_MIP(max_mip); + } + if (radv_dcc_enabled(image, first_level)) { state[6] |= S_00A018_MAX_UNCOMPRESSED_BLOCK_SIZE(V_028C78_MAX_BLOCK_SIZE_256B) | S_00A018_MAX_COMPRESSED_BLOCK_SIZE(