@@ -522,6 +522,28 @@ def print_load(self, name, owner): # called for each parameter
522522 z .do ('%s = debug_report_callback; // hijacking this pointer with our own callback function' % varname )
523523 elif self .name == 'pNext' :
524524 z .do ('read_extension(reader, (VkBaseOutStructure**)&%s);' % varname )
525+ elif self .type == 'VkDescriptorDataEXT' :
526+ z .decl ('uint8_t' , 'opt' )
527+ z .do ('switch (sptr->type)' )
528+ z .brace_begin ()
529+ z .do ('case VK_DESCRIPTOR_TYPE_SAMPLER: { VkSampler* tmp = reader.pool.allocate<VkSampler>(1); uint32_t index = reader.read_handle(DEBUGPARAM("%s")); *tmp = index_to_VkSampler.at(index); sptr->data.pSampler = tmp; } break;' % self .type )
530+ z .do ('case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER: opt = reader.read_uint8_t(); if (opt) read_VkDescriptorImageInfo(reader, (VkDescriptorImageInfo*)sptr->data.pCombinedImageSampler); break;' )
531+ z .do ('case VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT: opt = reader.read_uint8_t(); if (opt) read_VkDescriptorImageInfo(reader, (VkDescriptorImageInfo*)sptr->data.pInputAttachmentImage); break;' )
532+ z .do ('case VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE: opt = reader.read_uint8_t(); if (opt) read_VkDescriptorImageInfo(reader, (VkDescriptorImageInfo*)sptr->data.pSampledImage); break;' )
533+ z .do ('case VK_DESCRIPTOR_TYPE_STORAGE_IMAGE: opt = reader.read_uint8_t(); if (opt) read_VkDescriptorImageInfo(reader, (VkDescriptorImageInfo*)sptr->data.pStorageImage); break;' )
534+ z .do ('case VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER: opt = reader.read_uint8_t(); if (opt) read_VkDescriptorAddressInfoEXT(reader, (VkDescriptorAddressInfoEXT*)sptr->data.pUniformTexelBuffer); break;' )
535+ z .do ('case VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER: opt = reader.read_uint8_t(); if (opt) read_VkDescriptorAddressInfoEXT(reader, (VkDescriptorAddressInfoEXT*)sptr->data.pStorageTexelBuffer); break;' )
536+ z .do ('case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER: opt = reader.read_uint8_t(); if (opt) read_VkDescriptorAddressInfoEXT(reader, (VkDescriptorAddressInfoEXT*)sptr->data.pUniformBuffer); break;' )
537+ z .do ('case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER: opt = reader.read_uint8_t(); if (opt) read_VkDescriptorAddressInfoEXT(reader, (VkDescriptorAddressInfoEXT*)sptr->data.pStorageBuffer); break;' )
538+ z .do ('case VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR:' )
539+ z .brace_begin ()
540+ z .do ('uint64_t stored_address = reader.read_uint64_t();' )
541+ z .do ('sptr->data.accelerationStructure = reader.parent->device_address_remapping.translate_address(stored_address);' )
542+ z .do ('ILOG("%s changing device address from %%lu to %%lu", (unsigned long)stored_address, (unsigned long)%s.accelerationStructure);' % (self .funcname , varname ))
543+ z .brace_end ()
544+ z .do ('break;' )
545+ z .do ('default: ABORT("Unsupported descriptor type for VkDescriptorDataEXT"); break;' )
546+ z .brace_end ()
525547 elif self .string_array :
526548 len = self .length .split (',' )[0 ]
527549 if self .funcname == 'VkInstanceCreateInfo' and self .name == 'ppEnabledExtensionNames' :
@@ -816,6 +838,21 @@ def print_save(self, name, owner, postprocess = False): # called for each parame
816838 elif self .funcname in ['VkDebugMarkerObjectNameInfoEXT' , 'VkDebugMarkerObjectTagInfoEXT' , 'vkDebugReportMessageEXT' ] and self .name == 'object' :
817839 z .do ('auto* object_data = debug_object_trackable(writer.parent->records, %sobjectType, %s);' % (owner , varname ))
818840 z .do ('writer.write_handle(object_data);' )
841+ elif self .type == 'VkDescriptorDataEXT' :
842+ z .do ('switch (sptr->type)' )
843+ z .brace_begin ()
844+ z .do ('case VK_DESCRIPTOR_TYPE_SAMPLER: { auto* sampler_data = writer.parent->records.VkSampler_index.at(*sptr->data.pSampler); writer.write_handle(sampler_data); } break;' )
845+ z .do ('case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER: writer.write_uint8_t(sptr->data.pCombinedImageSampler != nullptr); if (sptr->data.pCombinedImageSampler) write_VkDescriptorImageInfo(writer, sptr->data.pCombinedImageSampler); break;' )
846+ z .do ('case VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT: writer.write_uint8_t(sptr->data.pInputAttachmentImage != nullptr); if (sptr->data.pInputAttachmentImage) write_VkDescriptorImageInfo(writer, sptr->data.pInputAttachmentImage); break;' )
847+ z .do ('case VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE: writer.write_uint8_t(sptr->data.pSampledImage != nullptr); if (sptr->data.pSampledImage) write_VkDescriptorImageInfo(writer, sptr->data.pSampledImage); break;' )
848+ z .do ('case VK_DESCRIPTOR_TYPE_STORAGE_IMAGE: writer.write_uint8_t(sptr->data.pStorageImage != nullptr); if (sptr->data.pStorageImage) write_VkDescriptorImageInfo(writer, sptr->data.pStorageImage); break;' )
849+ z .do ('case VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER: writer.write_uint8_t(sptr->data.pUniformTexelBuffer != nullptr); if (sptr->data.pUniformTexelBuffer) write_VkDescriptorAddressInfoEXT(writer, sptr->data.pUniformTexelBuffer); break;' )
850+ z .do ('case VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER: writer.write_uint8_t(sptr->data.pStorageTexelBuffer != nullptr); if (sptr->data.pStorageTexelBuffer) write_VkDescriptorAddressInfoEXT(writer, sptr->data.pStorageTexelBuffer); break;' )
851+ z .do ('case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER: writer.write_uint8_t(sptr->data.pUniformBuffer != nullptr); if (sptr->data.pUniformBuffer) write_VkDescriptorAddressInfoEXT(writer, sptr->data.pUniformBuffer); break;' )
852+ z .do ('case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER: writer.write_uint8_t(sptr->data.pStorageBuffer != nullptr); if (sptr->data.pStorageBuffer) write_VkDescriptorAddressInfoEXT(writer, sptr->data.pStorageBuffer); break;' )
853+ z .do ('case VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR: writer.write_uint64_t(sptr->data.accelerationStructure); break;' )
854+ z .do ('default: ABORT("Unsupported descriptor type for VkDescriptorDataEXT"); break;' )
855+ z .brace_end ()
819856 elif 'CaptureReplayHandle' in self .name :
820857 z .do ('writer.write_uint64_t((uint64_t)%s);' % varname )
821858 elif self .funcname in ['VkDebugUtilsObjectNameInfoEXT' , 'VkDebugUtilsObjectTagInfoEXT' , 'vkSetPrivateData' , 'vkSetPrivateDataEXT' , 'vkGetPrivateData' , 'vkGetPrivateDataEXT' ] and self .name == 'objectHandle' :
0 commit comments