radv: Add base array layer to htile offset

For gfx10_3, the base array layer needs to be included when calculating the HTILE offset.

Otherwise, copy_vrs_to_htile writes the VRS rate to an HTILE location different from the one used by depth/stencil.

Cc: mesa-stable
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/42203>
This commit is contained in:
Zeyang Lyu 2026-06-12 10:59:16 +08:00 committed by Marge Bot
parent 02077584a6
commit a5a7acb657

View file

@ -10463,8 +10463,9 @@ radv_CmdBeginRendering(VkCommandBuffer commandBuffer, const VkRenderingInfo *pRe
uint32_t level = ds_iview->vk.base_mip_level;
/* HTILE buffer */
uint64_t htile_offset =
ds_image->planes[0].surface.meta_offset + ds_image->planes[0].surface.u.gfx9.meta_levels[level].offset;
uint64_t htile_offset = ds_image->planes[0].surface.meta_offset +
(uint64_t)ds_iview->vk.base_array_layer * ds_image->planes[0].surface.meta_slice_size +
ds_image->planes[0].surface.u.gfx9.meta_levels[level].offset;
const uint64_t htile_va = ds_image->bindings[0].addr + htile_offset;
assert(render_area.offset.x + render_area.extent.width <= ds_image->vk.extent.width &&