From 4441ad835ccd422cc631d595159f68f926c7ebdd Mon Sep 17 00:00:00 2001 From: Connor Abbott Date: Fri, 15 May 2026 16:34:31 -0400 Subject: [PATCH] tu: Zero out unused parts of descriptors UBO and sampler descriptors are smaller than texture descriptors, but the nature of Vulkan descriptor sets means we need to make them just as big. Zero out the remaining dwords so that we don't get garbage that trips up asserts in gfxrecon-replay. Part-of: --- src/freedreno/vulkan/tu_descriptor_set.cc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/freedreno/vulkan/tu_descriptor_set.cc b/src/freedreno/vulkan/tu_descriptor_set.cc index 6dab563bea7..de35489f3e3 100644 --- a/src/freedreno/vulkan/tu_descriptor_set.cc +++ b/src/freedreno/vulkan/tu_descriptor_set.cc @@ -1088,6 +1088,9 @@ write_ubo_descriptor_addr(uint32_t *dst, uint32_t range = va ? DIV_ROUND_UP(buffer_info->range, 16) : 0; dst[0] = A6XX_UBO_0_BASE_LO(va); dst[1] = A6XX_UBO_1_BASE_HI(va >> 32) | A6XX_UBO_1_SIZE(range); + + for (unsigned i = 2; i < FDL6_TEX_CONST_DWORDS; i++) + dst[i] = 0; } static void @@ -1129,6 +1132,8 @@ write_combined_image_sampler_descriptor(uint32_t *dst, if (write_sampler) { VK_FROM_HANDLE(tu_sampler, sampler, image_info->sampler); memcpy(dst + FDL6_TEX_CONST_DWORDS, sampler->descriptor, sizeof(sampler->descriptor)); + for (unsigned i = A6XX_TEX_SAMP_DWORDS; i < FDL6_TEX_CONST_DWORDS; i++) + dst[i + FDL6_TEX_CONST_DWORDS] = 0; } /* It's technically legal to sample from a mismatched descriptor (i.e. only @@ -1157,6 +1162,8 @@ write_sampler_descriptor(uint32_t *dst, VkSampler _sampler) VK_FROM_HANDLE(tu_sampler, sampler, _sampler); memcpy(dst, sampler->descriptor, sizeof(sampler->descriptor)); + for (unsigned i = A6XX_TEX_SAMP_DWORDS; i < FDL6_TEX_CONST_DWORDS; i++) + dst[i] = 0; } template