From 195a4e6d6bdf6bbf885132e41616c2a30f5ba646 Mon Sep 17 00:00:00 2001 From: Artem Kharytoniuk Date: Thu, 12 Mar 2026 11:06:24 +0100 Subject: [PATCH] Detect unused fields in VkDescriptorImageInfo The Vulkan specification allows to have uninitialized fields in VkDescriptorImageInfo based on descriptor type. Such fields should not be touched by the implementation (which includes drivers, validation layers and tools). --- renderdoc/driver/vulkan/vk_serialise.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/renderdoc/driver/vulkan/vk_serialise.cpp b/renderdoc/driver/vulkan/vk_serialise.cpp index 13ac15586..03b8a30a3 100644 --- a/renderdoc/driver/vulkan/vk_serialise.cpp +++ b/renderdoc/driver/vulkan/vk_serialise.cpp @@ -10469,20 +10469,19 @@ void DoSerialise(SerialiserType &ser, VkDescriptorGetInfoEXT &el) RDCASSERT(ser.IsReading() || el.sType == VK_STRUCTURE_TYPE_DESCRIPTOR_GET_INFO_EXT); SerialiseNext(ser, el.sType, el.pNext); - // these fields must either be NULL or valid if present, never garbage - ser.SetStructArg( - uint64_t(VkDescriptorImageInfoValidity::Sampler | VkDescriptorImageInfoValidity::ImageView)); - SERIALISE_MEMBER(type); switch(el.type) { case VK_DESCRIPTOR_TYPE_SAMPLER: { + ser.SetStructArg(uint64_t(VkDescriptorImageInfoValidity::Sampler)); SERIALISE_MEMBER_OPT(data.pSampler).Named("pSampler"); break; } case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER: { + ser.SetStructArg(uint64_t(VkDescriptorImageInfoValidity::Sampler | + VkDescriptorImageInfoValidity::ImageView)); SERIALISE_MEMBER_OPT(data.pCombinedImageSampler).Named("pCombinedImageSampler"); break; } @@ -10490,6 +10489,7 @@ void DoSerialise(SerialiserType &ser, VkDescriptorGetInfoEXT &el) case VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE: case VK_DESCRIPTOR_TYPE_STORAGE_IMAGE: { + ser.SetStructArg(uint64_t(VkDescriptorImageInfoValidity::ImageView)); SERIALISE_MEMBER_OPT(data.pStorageImage).Named("pStorageImage"); break; }