From d1fa5ffab04b84bb24a13d4511fc579b75cea446 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Mon, 20 May 2024 09:28:45 +0200 Subject: [PATCH] radv: tidy up swizzle in radv_set_mutable_tex_desc_fields() To be closer to the RadeonSI helper. Signed-off-by: Samuel Pitoiset Part-of: --- src/amd/vulkan/radv_image_view.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/amd/vulkan/radv_image_view.c b/src/amd/vulkan/radv_image_view.c index 1c9442a11b0..d91bfc5dea2 100644 --- a/src/amd/vulkan/radv_image_view.c +++ b/src/amd/vulkan/radv_image_view.c @@ -118,8 +118,6 @@ radv_set_mutable_tex_desc_fields(struct radv_device *device, struct radv_image * } state[0] = va >> 8; - if (gfx_level >= GFX9 || base_level_info->mode == RADEON_SURF_MODE_2D) - state[0] |= swizzle; state[1] &= C_008F14_BASE_ADDRESS_HI; state[1] |= S_008F14_BASE_ADDRESS_HI(va >> 40); @@ -168,6 +166,8 @@ radv_set_mutable_tex_desc_fields(struct radv_device *device, struct radv_image * } if (gfx_level >= GFX10) { + state[0] |= swizzle; + state[3] &= C_00A00C_SW_MODE; if (is_stencil) { @@ -195,6 +195,8 @@ radv_set_mutable_tex_desc_fields(struct radv_device *device, struct radv_image * state[7] = meta_va >> 16; } else if (gfx_level == GFX9) { + state[0] |= swizzle; + state[3] &= C_008F1C_SW_MODE; state[4] &= C_008F20_PITCH; @@ -224,6 +226,10 @@ radv_set_mutable_tex_desc_fields(struct radv_device *device, struct radv_image * unsigned pitch = base_level_info->nblk_x * block_width; unsigned index = ac_tile_mode_index(&plane->surface, base_level, is_stencil); + /* Only macrotiled modes can set tile swizzle. */ + if (base_level_info->mode == RADEON_SURF_MODE_2D) + state[0] |= swizzle; + state[3] &= C_008F1C_TILING_INDEX; state[3] |= S_008F1C_TILING_INDEX(index); state[4] &= C_008F20_PITCH;