diff --git a/renderdoc/driver/vulkan/extension_support.md b/renderdoc/driver/vulkan/extension_support.md index ba97bb4f4..6a9d92416 100644 --- a/renderdoc/driver/vulkan/extension_support.md +++ b/renderdoc/driver/vulkan/extension_support.md @@ -172,6 +172,7 @@ Maintainers can update this file by updating vk.xml in this folder and running ` * `VK_KHR_driver_properties` * `VK_KHR_dynamic_rendering_local_read` * `VK_KHR_dynamic_rendering` +* `VK_KHR_extended_flags` * `VK_KHR_external_fence_capabilities` * `VK_KHR_external_fence_fd` * `VK_KHR_external_fence_win32` @@ -303,7 +304,6 @@ KHR extensions will definitely be implemented at some point, though KHR extensio * `VK_KHR_copy_memory_indirect` * `VK_KHR_device_address_commands` * `VK_KHR_device_fault` -* `VK_KHR_extended_flags` * `VK_KHR_internally_synchronized_queues` * `VK_KHR_maintenance10` * `VK_KHR_maintenance11` diff --git a/renderdoc/driver/vulkan/vk_common.h b/renderdoc/driver/vulkan/vk_common.h index 68d127700..42e01e867 100644 --- a/renderdoc/driver/vulkan/vk_common.h +++ b/renderdoc/driver/vulkan/vk_common.h @@ -76,6 +76,9 @@ #define VkFormatFeatureFlagBits2 VkFormatFeatureFlagBits2_VkFlags64_typedef #define VkBufferUsageFlagBits2 VkBufferUsageFlagBits2_VkFlags64_typedef #define VkPipelineCreateFlagBits2 VkPipelineCreateFlagBits2_VkFlags64_typedef +#define VkFormatFeatureFlagBits4KHR VkFormatFeatureFlagBits4KHR_VkFlags64_typedef +#define VkImageUsageFlagBits2KHR VkImageUsageFlagBits2KHR_VkFlags64_typedef +#define VkImageCreateFlagBits2KHR VkImageUsageFlagBits2KHR_VkFlags64_typedef #include "core/core.h" #include "core/resource_manager.h" @@ -90,6 +93,9 @@ #undef VkFormatFeatureFlagBits2 #undef VkBufferUsageFlagBits2 #undef VkPipelineCreateFlagBits2 +#undef VkFormatFeatureFlagBits4KHR +#undef VkImageUsageFlagBits2KHR +#undef VkImageCreateFlagBits2KHR #undef Bool #undef None @@ -141,17 +147,17 @@ VkShaderStageFlags ShaderMaskFromIndex(size_t index); // Generic getter/setter helpers to handle optional 64 flag structs in the pNext chain template -uint64_t GetBufferUsageFlags(const ParentStruct *info) +VkBufferUsageFlags2 GetBufferUsageFlags(const ParentStruct *info) { const VkBufferUsageFlags2CreateInfo *usage2 = (const VkBufferUsageFlags2CreateInfo *)FindNextStruct( info, VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO); if(usage2) return usage2->usage; - return info->usage; + return (VkBufferUsageFlags2)info->usage; } template -void SetBufferUsageFlags(ParentStruct *info, uint64_t usage) +void SetBufferUsageFlags(ParentStruct *info, VkBufferUsageFlags2 usage) { VkBufferUsageFlags2CreateInfo *usage2 = (VkBufferUsageFlags2CreateInfo *)FindNextStruct( info, VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO); @@ -163,6 +169,78 @@ void SetBufferUsageFlags(ParentStruct *info, uint64_t usage) info->usage = (VkBufferUsageFlags)usage; } +template +VkImageUsageFlags2KHR GetImageUsageFlags(const ParentStruct *info) +{ + const VkImageUsageFlags2CreateInfoKHR *usage2 = + (const VkImageUsageFlags2CreateInfoKHR *)FindNextStruct( + info, VK_STRUCTURE_TYPE_IMAGE_USAGE_FLAGS_2_CREATE_INFO_KHR); + if(usage2) + return usage2->usage; + return (VkImageUsageFlags2KHR)info->usage; +} + +template +void SetImageUsageFlags(ParentStruct *info, VkImageUsageFlags2KHR usage) +{ + VkImageUsageFlags2CreateInfoKHR *usage2 = (VkImageUsageFlags2CreateInfoKHR *)FindNextStruct( + info, VK_STRUCTURE_TYPE_IMAGE_USAGE_FLAGS_2_CREATE_INFO_KHR); + if(usage2) + { + usage2->usage = usage; + return; + } + info->usage = (VkImageUsageFlags)usage; +} + +template +VkImageUsageFlags2KHR GetImageViewUsageFlags(const ParentStruct *info) +{ + const VkImageViewUsage2CreateInfoKHR *usage2 = + (const VkImageViewUsage2CreateInfoKHR *)FindNextStruct( + info, VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_2_CREATE_INFO_KHR); + if(usage2) + return usage2->usage; + return (VkImageUsageFlags2KHR)info->usage; +} + +template +void SetImageViewUsageFlags(ParentStruct *info, VkImageUsageFlags2KHR usage) +{ + VkImageViewUsage2CreateInfoKHR *usage2 = (VkImageViewUsage2CreateInfoKHR *)FindNextStruct( + info, VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_2_CREATE_INFO_KHR); + if(usage2) + { + usage2->usage = usage; + return; + } + info->usage = (VkImageUsageFlags)usage; +} + +template +VkImageCreateFlags2KHR GetImageCreateFlags(const ParentStruct *info) +{ + const VkImageCreateFlags2CreateInfoKHR *create2 = + (const VkImageCreateFlags2CreateInfoKHR *)FindNextStruct( + info, VK_STRUCTURE_TYPE_IMAGE_CREATE_FLAGS_2_CREATE_INFO_KHR); + if(create2) + return create2->flags; + return (VkImageCreateFlags2KHR)info->flags; +} + +template +void SetImageCreateFlags(ParentStruct *info, VkImageCreateFlags2KHR flags) +{ + VkImageCreateFlags2CreateInfoKHR *create2 = (VkImageCreateFlags2CreateInfoKHR *)FindNextStruct( + info, VK_STRUCTURE_TYPE_IMAGE_CREATE_FLAGS_2_CREATE_INFO_KHR); + if(create2) + { + create2->flags = flags; + return; + } + info->flags = (VkImageCreateFlags)flags; +} + template uint64_t GetPipelineCreateFlags(const ParentStruct *info) { @@ -1604,6 +1682,7 @@ DECLARE_REFLECTION_STRUCT(VkFenceGetFdInfoKHR); DECLARE_REFLECTION_STRUCT(VkFilterCubicImageViewImageFormatPropertiesEXT); DECLARE_REFLECTION_STRUCT(VkFormatProperties2); DECLARE_REFLECTION_STRUCT(VkFormatProperties3); +DECLARE_REFLECTION_STRUCT(VkFormatProperties4KHR); DECLARE_REFLECTION_STRUCT(VkFragmentShadingRateAttachmentInfoKHR); DECLARE_REFLECTION_STRUCT(VkFramebufferAttachmentImageInfo); DECLARE_REFLECTION_STRUCT(VkFramebufferAttachmentsCreateInfo); @@ -1619,6 +1698,7 @@ DECLARE_REFLECTION_STRUCT(VkImageCompressionControlEXT); DECLARE_REFLECTION_STRUCT(VkImageCompressionPropertiesEXT); DECLARE_REFLECTION_STRUCT(VkImageCopy2); DECLARE_REFLECTION_STRUCT(VkImageCreateInfo); +DECLARE_REFLECTION_STRUCT(VkImageCreateFlags2CreateInfoKHR); DECLARE_REFLECTION_STRUCT(VkImageDrmFormatModifierExplicitCreateInfoEXT); DECLARE_REFLECTION_STRUCT(VkImageDrmFormatModifierListCreateInfoEXT); DECLARE_REFLECTION_STRUCT(VkImageDrmFormatModifierPropertiesEXT); @@ -1631,15 +1711,18 @@ DECLARE_REFLECTION_STRUCT(VkImagePlaneMemoryRequirementsInfo); DECLARE_REFLECTION_STRUCT(VkImageResolve2); DECLARE_REFLECTION_STRUCT(VkImageSparseMemoryRequirementsInfo2); DECLARE_REFLECTION_STRUCT(VkImageStencilUsageCreateInfo); +DECLARE_REFLECTION_STRUCT(VkImageStencilUsage2CreateInfoKHR); DECLARE_REFLECTION_STRUCT(VkImageSubresource2); DECLARE_REFLECTION_STRUCT(VkImageSwapchainCreateInfoKHR); DECLARE_REFLECTION_STRUCT(VkImageToMemoryCopy); +DECLARE_REFLECTION_STRUCT(VkImageUsageFlags2CreateInfoKHR); DECLARE_REFLECTION_STRUCT(VkImageViewASTCDecodeModeEXT); DECLARE_REFLECTION_STRUCT(VkImageViewCaptureDescriptorDataInfoEXT); DECLARE_REFLECTION_STRUCT(VkImageViewCreateInfo); DECLARE_REFLECTION_STRUCT(VkImageViewMinLodCreateInfoEXT); DECLARE_REFLECTION_STRUCT(VkImageViewSlicedCreateInfoEXT); DECLARE_REFLECTION_STRUCT(VkImageViewUsageCreateInfo); +DECLARE_REFLECTION_STRUCT(VkImageViewUsage2CreateInfoKHR); DECLARE_REFLECTION_STRUCT(VkImportFenceFdInfoKHR); DECLARE_REFLECTION_STRUCT(VkImportMemoryFdInfoKHR); DECLARE_REFLECTION_STRUCT(VkImportSemaphoreFdInfoKHR); @@ -1714,6 +1797,7 @@ DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceExtendedDynamicState2FeaturesEXT); DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceExtendedDynamicState3FeaturesEXT); DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceExtendedDynamicState3PropertiesEXT); DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceExtendedDynamicStateFeaturesEXT); +DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceExtendedFlagsFeaturesKHR); DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceExternalBufferInfo); DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceExternalFenceInfo); DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceExternalImageFormatInfo); @@ -2002,6 +2086,7 @@ DECLARE_REFLECTION_STRUCT(VkShaderCreateInfoEXT); DECLARE_REFLECTION_STRUCT(VkShaderModuleCreateInfo); DECLARE_REFLECTION_STRUCT(VkShaderModuleValidationCacheCreateInfoEXT); DECLARE_REFLECTION_STRUCT(VkSharedPresentSurfaceCapabilitiesKHR); +DECLARE_REFLECTION_STRUCT(VkSharedPresentSurfaceCapabilities2KHR); DECLARE_REFLECTION_STRUCT(VkSparseImageFormatProperties2); DECLARE_REFLECTION_STRUCT(VkSparseImageMemoryRequirements2); DECLARE_REFLECTION_STRUCT(VkSubmitInfo); @@ -2185,6 +2270,7 @@ DECLARE_DESERIALISE_TYPE(VkFenceGetFdInfoKHR); DECLARE_DESERIALISE_TYPE(VkFilterCubicImageViewImageFormatPropertiesEXT); DECLARE_DESERIALISE_TYPE(VkFormatProperties2); DECLARE_DESERIALISE_TYPE(VkFormatProperties3); +DECLARE_DESERIALISE_TYPE(VkFormatProperties4KHR); DECLARE_DESERIALISE_TYPE(VkFragmentShadingRateAttachmentInfoKHR); DECLARE_DESERIALISE_TYPE(VkFramebufferAttachmentImageInfo); DECLARE_DESERIALISE_TYPE(VkFramebufferAttachmentsCreateInfo); @@ -2199,6 +2285,7 @@ DECLARE_DESERIALISE_TYPE(VkImageCompressionControlEXT); DECLARE_DESERIALISE_TYPE(VkImageCompressionPropertiesEXT); DECLARE_DESERIALISE_TYPE(VkImageCopy2); DECLARE_DESERIALISE_TYPE(VkImageCreateInfo); +DECLARE_DESERIALISE_TYPE(VkImageCreateFlags2CreateInfoKHR); DECLARE_DESERIALISE_TYPE(VkImageDrmFormatModifierExplicitCreateInfoEXT); DECLARE_DESERIALISE_TYPE(VkImageDrmFormatModifierListCreateInfoEXT); DECLARE_DESERIALISE_TYPE(VkImageDrmFormatModifierPropertiesEXT); @@ -2211,15 +2298,18 @@ DECLARE_DESERIALISE_TYPE(VkImagePlaneMemoryRequirementsInfo); DECLARE_DESERIALISE_TYPE(VkImageResolve2); DECLARE_DESERIALISE_TYPE(VkImageSparseMemoryRequirementsInfo2); DECLARE_DESERIALISE_TYPE(VkImageStencilUsageCreateInfo); +DECLARE_DESERIALISE_TYPE(VkImageStencilUsage2CreateInfoKHR); DECLARE_DESERIALISE_TYPE(VkImageSubresource2); DECLARE_DESERIALISE_TYPE(VkImageSwapchainCreateInfoKHR); DECLARE_DESERIALISE_TYPE(VkImageToMemoryCopy); +DECLARE_DESERIALISE_TYPE(VkImageUsageFlags2CreateInfoKHR); DECLARE_DESERIALISE_TYPE(VkImageViewASTCDecodeModeEXT); DECLARE_DESERIALISE_TYPE(VkImageViewCaptureDescriptorDataInfoEXT); DECLARE_DESERIALISE_TYPE(VkImageViewCreateInfo); DECLARE_DESERIALISE_TYPE(VkImageViewMinLodCreateInfoEXT); DECLARE_DESERIALISE_TYPE(VkImageViewSlicedCreateInfoEXT); DECLARE_DESERIALISE_TYPE(VkImageViewUsageCreateInfo); +DECLARE_DESERIALISE_TYPE(VkImageViewUsage2CreateInfoKHR); DECLARE_DESERIALISE_TYPE(VkImportFenceFdInfoKHR); DECLARE_DESERIALISE_TYPE(VkImportMemoryFdInfoKHR); DECLARE_DESERIALISE_TYPE(VkImportSemaphoreFdInfoKHR); @@ -2291,6 +2381,7 @@ DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceExtendedDynamicState2FeaturesEXT); DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceExtendedDynamicState3FeaturesEXT); DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceExtendedDynamicState3PropertiesEXT); DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceExtendedDynamicStateFeaturesEXT); +DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceExtendedFlagsFeaturesKHR); DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceExternalBufferInfo); DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceExternalFenceInfo); DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceExternalImageFormatInfo); @@ -2579,6 +2670,7 @@ DECLARE_DESERIALISE_TYPE(VkShaderCreateInfoEXT); DECLARE_DESERIALISE_TYPE(VkShaderModuleCreateInfo); DECLARE_DESERIALISE_TYPE(VkShaderModuleValidationCacheCreateInfoEXT); DECLARE_DESERIALISE_TYPE(VkSharedPresentSurfaceCapabilitiesKHR); +DECLARE_DESERIALISE_TYPE(VkSharedPresentSurfaceCapabilities2KHR); DECLARE_DESERIALISE_TYPE(VkSparseImageFormatProperties2); DECLARE_DESERIALISE_TYPE(VkSparseImageMemoryRequirements2); DECLARE_DESERIALISE_TYPE(VkSubmitInfo); @@ -2814,6 +2906,18 @@ enum VkPipelineCreateFlagBits2 : uint64_t { }; +enum VkFormatFeatureFlagBits4KHR : uint64_t +{ +}; + +enum VkImageUsageFlagBits2KHR : uint64_t +{ +}; + +enum VkImageCreateFlagBits2KHR : uint64_t +{ +}; + // enums DECLARE_REFLECTION_ENUM(VkAccelerationStructureBuildTypeKHR); @@ -2886,6 +2990,7 @@ DECLARE_REFLECTION_ENUM(VkFlagWithNoBits); DECLARE_REFLECTION_ENUM(VkFormat); DECLARE_REFLECTION_ENUM(VkFormatFeatureFlagBits); DECLARE_REFLECTION_ENUM(VkFormatFeatureFlagBits2); +DECLARE_REFLECTION_ENUM(VkFormatFeatureFlagBits4KHR); DECLARE_REFLECTION_ENUM(VkFragmentShadingRateCombinerOpKHR); DECLARE_REFLECTION_ENUM(VkFramebufferCreateFlagBits); DECLARE_REFLECTION_ENUM(VkFrontFace); @@ -2898,10 +3003,12 @@ DECLARE_REFLECTION_ENUM(VkImageAspectFlagBits); DECLARE_REFLECTION_ENUM(VkImageCompressionFixedRateFlagBitsEXT); DECLARE_REFLECTION_ENUM(VkImageCompressionFlagBitsEXT); DECLARE_REFLECTION_ENUM(VkImageCreateFlagBits); +DECLARE_REFLECTION_ENUM(VkImageCreateFlagBits2KHR); DECLARE_REFLECTION_ENUM(VkImageLayout); DECLARE_REFLECTION_ENUM(VkImageTiling); DECLARE_REFLECTION_ENUM(VkImageType); DECLARE_REFLECTION_ENUM(VkImageUsageFlagBits); +DECLARE_REFLECTION_ENUM(VkImageUsageFlagBits2KHR); DECLARE_REFLECTION_ENUM(VkImageViewCreateFlagBits); DECLARE_REFLECTION_ENUM(VkImageViewType); DECLARE_REFLECTION_ENUM(VkIndexType); diff --git a/renderdoc/driver/vulkan/vk_core.cpp b/renderdoc/driver/vulkan/vk_core.cpp index e51ca7fe9..9ab105f8f 100644 --- a/renderdoc/driver/vulkan/vk_core.cpp +++ b/renderdoc/driver/vulkan/vk_core.cpp @@ -1682,6 +1682,10 @@ static const VkExtensionProperties supportedExtensions[] = { VK_KHR_DYNAMIC_RENDERING_LOCAL_READ_EXTENSION_NAME, VK_KHR_DYNAMIC_RENDERING_LOCAL_READ_SPEC_VERSION, }, + { + VK_KHR_EXTENDED_FLAGS_EXTENSION_NAME, + VK_KHR_EXTENDED_FLAGS_SPEC_VERSION, + }, { VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME, VK_KHR_EXTERNAL_FENCE_SPEC_VERSION, diff --git a/renderdoc/driver/vulkan/vk_core.h b/renderdoc/driver/vulkan/vk_core.h index 261ef8c51..3883e8c6f 100644 --- a/renderdoc/driver/vulkan/vk_core.h +++ b/renderdoc/driver/vulkan/vk_core.h @@ -1123,6 +1123,7 @@ private: void PatchImageViewUsage(VkImageViewUsageCreateInfo *usage, VkFormat imgFormat, VkSampleCountFlagBits samples); void PatchImageCreateInfo(VkImageCreateInfo *pInfo, VkFormat *newViewFormats); + void PatchStencilUsageInfo(VkImageCreateInfo *pInfo); VkIndirectPatchData FetchIndirectData(VkIndirectPatchType type, VkCommandBuffer commandBuffer, VkBuffer dataBuffer, VkDeviceSize dataOffset, uint32_t count, diff --git a/renderdoc/driver/vulkan/vk_info.cpp b/renderdoc/driver/vulkan/vk_info.cpp index 5c5bbf188..bffa7c2fe 100644 --- a/renderdoc/driver/vulkan/vk_info.cpp +++ b/renderdoc/driver/vulkan/vk_info.cpp @@ -2611,17 +2611,18 @@ void VulkanCreationInfo::Image::Init(VulkanResourceManager *resourceMan, VulkanC creationFlags = TextureCategory::NoFlags; - if(pCreateInfo->usage & VK_IMAGE_USAGE_SAMPLED_BIT) + VkImageUsageFlagBits2KHR usage = (VkImageUsageFlagBits2KHR)GetImageUsageFlags(pCreateInfo); + + if(usage & VK_IMAGE_USAGE_SAMPLED_BIT) creationFlags |= TextureCategory::ShaderRead; - if(pCreateInfo->usage & - (VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT)) + if(usage & (VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT)) creationFlags |= TextureCategory::ColorTarget; - if(pCreateInfo->usage & VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT) + if(usage & VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT) creationFlags |= TextureCategory::DepthTarget; - if(pCreateInfo->usage & VK_IMAGE_USAGE_STORAGE_BIT) + if(usage & VK_IMAGE_USAGE_STORAGE_BIT) creationFlags |= TextureCategory::ShaderReadWrite; - cube = (pCreateInfo->flags & VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT) ? true : false; + cube = (GetImageCreateFlags(pCreateInfo) & VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT) ? true : false; address = 0; } diff --git a/renderdoc/driver/vulkan/vk_next_chains.cpp b/renderdoc/driver/vulkan/vk_next_chains.cpp index b39119bb8..ce306e4af 100644 --- a/renderdoc/driver/vulkan/vk_next_chains.cpp +++ b/renderdoc/driver/vulkan/vk_next_chains.cpp @@ -87,957 +87,968 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct, // define structs that just need to be copied with no unwrapping at all, or only unwrapping some // members - easily shared between GetNextPatchSize and UnwrapNextChain -#define PROCESS_SIMPLE_STRUCTS() \ - COPY_STRUCT(VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR, \ - VkAccelerationStructureBuildSizesInfoKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR, \ - VkAccelerationStructureGeometryAabbsDataKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR, \ - VkAccelerationStructureGeometryInstancesDataKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR, \ - VkAccelerationStructureGeometryKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR, \ - VkAccelerationStructureGeometryTrianglesDataKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR, \ - VkAccelerationStructureVersionInfoKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR, VkAcquireProfilingLockInfoKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_APPLICATION_INFO, VkApplicationInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2, VkAttachmentDescription2); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT, \ - VkAttachmentDescriptionStencilLayout); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_ATTACHMENT_FEEDBACK_LOOP_INFO_EXT, VkAttachmentFeedbackLoopInfoEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2, VkAttachmentReference2); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT, \ - VkAttachmentReferenceStencilLayout); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_BEGIN_CUSTOM_RESOLVE_INFO_EXT, VkBeginCustomResolveInfoEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO, \ - VkBindBufferMemoryDeviceGroupInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO, \ - VkBindImageMemoryDeviceGroupInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO, VkBindImagePlaneMemoryInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_BUFFER_COPY_2, VkBufferCopy2); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO, VkBufferCreateInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT, \ - VkBufferDeviceAddressCreateInfoEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2, VkBufferImageCopy2); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO, \ - VkBufferOpaqueCaptureAddressCreateInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO, VkBufferUsageFlags2CreateInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_KHR, VkCalibratedTimestampInfoKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV, VkCheckpointDataNV); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV, VkCheckpointData2NV); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, VkCommandBufferBeginInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT, \ - VkCommandBufferInheritanceConditionalRenderingInfoEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO, VkCommandPoolCreateInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT, VkDebugMarkerMarkerInfoEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT, \ - VkDebugReportCallbackCreateInfoEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT, VkDebugUtilsLabelEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT, \ - VkDebugUtilsMessengerCreateInfoEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV, \ - VkDedicatedAllocationBufferCreateInfoNV); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV, \ - VkDedicatedAllocationImageCreateInfoNV); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_DEPTH_BIAS_INFO_EXT, VkDepthBiasInfoEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_DEPTH_BIAS_REPRESENTATION_INFO_EXT, \ - VkDepthBiasRepresentationInfoEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_INFO_EXT, \ - VkDescriptorBufferBindingInfoEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_DESCRIPTOR_ADDRESS_INFO_EXT, VkDescriptorAddressInfoEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO, VkDescriptorPoolCreateInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO, \ - VkDescriptorPoolInlineUniformBlockCreateInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO, \ - VkDescriptorSetLayoutBindingFlagsCreateInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT, VkDescriptorSetLayoutSupport); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO, \ - VkDescriptorSetVariableDescriptorCountAllocateInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT, \ - VkDescriptorSetVariableDescriptorCountLayoutSupport); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO, VkDeviceCreateInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV, \ - VkDeviceDiagnosticsConfigCreateInfoNV); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO, VkDeviceGroupBindSparseInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO, \ - VkDeviceGroupCommandBufferBeginInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR, \ - VkDeviceGroupPresentCapabilitiesKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR, VkDeviceGroupPresentInfoKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO, \ - VkDeviceGroupRenderPassBeginInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO, VkDeviceGroupSubmitInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR, \ - VkDeviceGroupSwapchainCreateInfoKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD, \ - VkDeviceMemoryOverallocationCreateInfoAMD); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO, VkDevicePrivateDataCreateInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO, VkDeviceQueueCreateInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO, \ - VkDeviceQueueGlobalPriorityCreateInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2, VkDeviceQueueInfo2); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR, VkDisplayModeProperties2KHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD, \ - VkDisplayNativeHdrSurfaceCapabilitiesAMD); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR, VkDisplayPlaneCapabilities2KHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR, VkDisplayPlaneInfo2KHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR, VkDisplayPlaneProperties2KHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR, VkDisplayPresentInfoKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR, VkDisplayProperties2KHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT, \ - VkDrmFormatModifierPropertiesListEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT, \ - VkDrmFormatModifierPropertiesList2EXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_EVENT_CREATE_INFO, VkEventCreateInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES, VkExternalBufferProperties); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES, VkExternalImageFormatProperties); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO, VkExternalMemoryImageCreateInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_FENCE_CREATE_INFO, VkFenceCreateInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT, \ - VkFilterCubicImageViewImageFormatPropertiesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR, \ - VkFragmentShadingRateAttachmentInfoKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2, VkFormatProperties2); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3, VkFormatProperties3); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT, \ - VkGraphicsPipelineLibraryCreateInfoEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_HDR_METADATA_EXT, VkHdrMetadataEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_IMAGE_BLIT_2, VkImageBlit2); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT, VkImageCompressionControlEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT, VkImageCompressionPropertiesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_IMAGE_COPY_2, VkImageCopy2); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, VkImageCreateInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO, VkImageFormatListCreateInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT, \ - VkImageDrmFormatModifierPropertiesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2, VkImageFormatProperties2); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO, \ - VkImagePlaneMemoryRequirementsInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2, VkImageResolve2); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_IMAGE_VIEW_SLICED_CREATE_INFO_EXT, VkImageViewSlicedCreateInfoEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2, VkImageSubresource2); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO, VkImageStencilUsageCreateInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT, VkImageViewASTCDecodeModeEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT, VkImageViewMinLodCreateInfoEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO, VkImageViewUsageCreateInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO, VkInstanceCreateInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO, VkMemoryAllocateFlagsInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO, VkMemoryAllocateInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_MEMORY_BARRIER, VkMemoryBarrier); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_MEMORY_BARRIER_2, VkMemoryBarrier2); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_MEMORY_BARRIER_ACCESS_FLAGS_3_KHR, VkMemoryBarrierAccessFlags3KHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS, VkMemoryDedicatedRequirements); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO, \ - VkMemoryOpaqueCaptureAddressAllocateInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT, VkMemoryPriorityAllocateInfoEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2, VkMemoryRequirements2); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT, VkMultisamplePropertiesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT, \ - VkMultisampledRenderToSingleSampledInfoEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT, \ - VkMutableDescriptorTypeCreateInfoEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT, \ - VkOpaqueCaptureDescriptorDataCreateInfoEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_EXT, VkPastPresentationTimingEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_PROPERTIES_EXT, \ - VkPastPresentationTimingPropertiesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR, \ - VkPerformanceCounterDescriptionKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR, VkPerformanceCounterKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR, VkPerformanceQuerySubmitInfoKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES, \ - VkPhysicalDevice16BitStorageFeatures); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT, \ - VkPhysicalDevice4444FormatsFeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES, \ - VkPhysicalDevice8BitStorageFeatures); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR, \ - VkPhysicalDeviceAccelerationStructureFeaturesKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR, \ - VkPhysicalDeviceAccelerationStructurePropertiesKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT, \ - VkPhysicalDeviceASTCDecodeFeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT, \ - VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT, \ - VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT, \ - VkPhysicalDeviceBorderColorSwizzleFeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT, \ - VkPhysicalDeviceBufferDeviceAddressFeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES, \ - VkPhysicalDeviceBufferDeviceAddressFeatures); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD, \ - VkPhysicalDeviceCoherentMemoryFeaturesAMD); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT, \ - VkPhysicalDeviceColorWriteEnableFeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_KHR, \ - VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_PROPERTIES_KHR, \ - VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT, \ - VkPhysicalDeviceConditionalRenderingFeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT, \ - VkPhysicalDeviceConservativeRasterizationPropertiesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT, \ - VkPhysicalDeviceCustomBorderColorFeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT, \ - VkPhysicalDeviceCustomBorderColorPropertiesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_RESOLVE_FEATURES_EXT, \ - VkPhysicalDeviceCustomResolveFeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV, \ - VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_FEATURES_EXT, \ - VkPhysicalDeviceDepthBiasControlFeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR, \ - VkPhysicalDeviceDepthClampZeroOneFeaturesKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT, \ - VkPhysicalDeviceDepthClipControlFeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT, \ - VkPhysicalDeviceDepthClipEnableFeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES, \ - VkPhysicalDeviceDepthStencilResolveProperties); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT, \ - VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT, \ - VkPhysicalDeviceDescriptorBufferFeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT, \ - VkPhysicalDeviceDescriptorBufferPropertiesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES, \ - VkPhysicalDeviceDescriptorIndexingFeatures); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES, \ - VkPhysicalDeviceDescriptorIndexingProperties); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV, \ - VkPhysicalDeviceDiagnosticsConfigFeaturesNV); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT, \ - VkPhysicalDeviceDiscardRectanglePropertiesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES, \ - VkPhysicalDeviceDriverProperties); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT, \ - VkPhysicalDeviceDrmPropertiesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES, \ - VkPhysicalDeviceDynamicRenderingFeatures); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES, \ - VkPhysicalDeviceDynamicRenderingLocalReadFeatures); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT, \ - VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT, \ - VkPhysicalDeviceExtendedDynamicStateFeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT, \ - VkPhysicalDeviceExtendedDynamicState2FeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT, \ - VkPhysicalDeviceExtendedDynamicState3FeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT, \ - VkPhysicalDeviceExtendedDynamicState3PropertiesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO, \ - VkPhysicalDeviceExternalBufferInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO, \ - VkPhysicalDeviceExternalImageFormatInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO, \ - VkPhysicalDeviceExternalSemaphoreInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2, VkPhysicalDeviceFeatures2); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES, \ - VkPhysicalDeviceFloatControlsProperties); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR, \ - VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR, \ - VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES, \ - VkPhysicalDeviceGlobalPriorityQueryFeatures); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT, \ - VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT, \ - VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES, VkPhysicalDeviceGroupProperties); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT, \ - VkPhysicalDeviceFragmentDensityMapFeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT, \ - VkPhysicalDeviceFragmentDensityMapPropertiesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT, \ - VkPhysicalDeviceFragmentDensityMap2FeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT, \ - VkPhysicalDeviceFragmentDensityMap2PropertiesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT, \ - VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_EXT, \ - VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_FEATURES_VALVE, \ - VkPhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_PROPERTIES_VALVE, \ - VkPhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_DENSITY_MAP_LAYERED_CREATE_INFO_VALVE, \ - VkPipelineFragmentDensityMapLayeredCreateInfoVALVE); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT, \ - VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR, \ - VkPhysicalDeviceFragmentShadingRateFeaturesKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR, \ - VkPhysicalDeviceFragmentShadingRateKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR, \ - VkPhysicalDeviceFragmentShadingRatePropertiesKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES, \ - VkPhysicalDeviceHostImageCopyFeatures); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES, \ - VkPhysicalDeviceHostImageCopyProperties); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES, \ - VkPhysicalDeviceHostQueryResetFeatures); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES, VkPhysicalDeviceIDProperties); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT, \ - VkPhysicalDeviceImage2DViewOf3DFeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT, \ - VkPhysicalDeviceImageCompressionControlFeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT, \ - VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT, \ - VkPhysicalDeviceImageDrmFormatModifierInfoEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2, \ - VkPhysicalDeviceImageFormatInfo2); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT, \ - VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT, \ - VkPhysicalDeviceImageViewImageFormatInfoEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES, \ - VkPhysicalDeviceImagelessFramebufferFeatures); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES, \ - VkPhysicalDeviceImageRobustnessFeatures); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES, \ - VkPhysicalDeviceIndexTypeUint8Features); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT, \ - VkPhysicalDeviceImageViewMinLodFeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES, \ - VkPhysicalDeviceInlineUniformBlockFeatures); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES, \ - VkPhysicalDeviceInlineUniformBlockProperties); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES, \ - VkPhysicalDeviceMaintenance3Properties); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES, \ - VkPhysicalDeviceMaintenance4Features); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES, \ - VkPhysicalDeviceMaintenance4Properties); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES, \ - VkPhysicalDeviceMaintenance5Features); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES, \ - VkPhysicalDeviceMaintenance5Properties); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES, \ - VkPhysicalDeviceMaintenance6Features); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES, \ - VkPhysicalDeviceMaintenance6Properties); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_FEATURES_KHR, \ - VkPhysicalDeviceMaintenance7FeaturesKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_PROPERTIES_KHR, \ - VkPhysicalDeviceMaintenance7PropertiesKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR, \ - VkPhysicalDeviceMaintenance8FeaturesKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_FEATURES_KHR, \ - VkPhysicalDeviceMaintenance9FeaturesKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_PROPERTIES_KHR, \ - VkPhysicalDeviceMaintenance9PropertiesKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT, \ - VkPhysicalDeviceMemoryBudgetPropertiesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2, \ - VkPhysicalDeviceMemoryProperties2); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT, \ - VkPhysicalDeviceMemoryPriorityFeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT, \ - VkPhysicalDeviceMeshShaderFeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT, \ - VkPhysicalDeviceMeshShaderPropertiesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT, \ - VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES, \ - VkPhysicalDeviceMultiviewFeatures); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM, \ - VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES, \ - VkPhysicalDeviceMultiviewProperties); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT, \ - VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT, \ - VkPhysicalDeviceNestedCommandBufferFeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT, \ - VkPhysicalDeviceNestedCommandBufferPropertiesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT, \ - VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_KHR, \ - VkPhysicalDeviceLayeredApiPropertiesKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_LIST_KHR, \ - VkPhysicalDeviceLayeredApiPropertiesListKHR); \ - /* normally this would need complex unwrapping for the properties member, */ \ - /* but the properties.pNext chain is very limited */ \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_VULKAN_PROPERTIES_KHR, \ - VkPhysicalDeviceLayeredApiVulkanPropertiesKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES, \ - VkPhysicalDeviceLineRasterizationFeatures); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES, \ - VkPhysicalDeviceLineRasterizationProperties); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT, \ - VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT, \ - VkPhysicalDevicePCIBusInfoPropertiesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR, \ - VkPhysicalDevicePerformanceQueryFeaturesKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR, \ - VkPhysicalDevicePerformanceQueryPropertiesKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES, \ - VkPhysicalDevicePipelineCreationCacheControlFeatures); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR, \ - VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES, \ - VkPhysicalDevicePipelineProtectedAccessFeatures); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES, \ - VkPhysicalDevicePipelineRobustnessFeatures); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES, \ - VkPhysicalDevicePipelineRobustnessProperties); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES, \ - VkPhysicalDevicePointClippingProperties); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR, \ - VkPhysicalDevicePresentIdFeaturesKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_2_FEATURES_KHR, \ - VkPhysicalDevicePresentId2FeaturesKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_KHR, \ - VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_TIMING_FEATURES_EXT, \ - VkPhysicalDevicePresentTimingFeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR, \ - VkPhysicalDevicePresentWaitFeaturesKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_2_FEATURES_KHR, \ - VkPhysicalDevicePresentWait2FeaturesKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT, \ - VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT, \ - VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES, \ - VkPhysicalDevicePrivateDataFeatures); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2, VkPhysicalDeviceProperties2); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES, \ - VkPhysicalDeviceProtectedMemoryFeatures); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES, \ - VkPhysicalDeviceProtectedMemoryProperties); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT, \ - VkPhysicalDeviceProvokingVertexFeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT, \ - VkPhysicalDeviceProvokingVertexPropertiesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES, \ - VkPhysicalDevicePushDescriptorProperties); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT, \ - VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_EXT, \ - VkPhysicalDeviceRayTracingInvocationReorderFeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV, \ - VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_EXT, \ - VkPhysicalDeviceRayTracingInvocationReorderPropertiesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV, \ - VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR, \ - VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR, \ - VkPhysicalDeviceRayTracingPipelineFeaturesKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR, \ - VkPhysicalDeviceRayTracingPipelinePropertiesKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR, \ - VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR, \ - VkPhysicalDeviceRayQueryFeaturesKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT, \ - VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_KHR, \ - VkPhysicalDeviceRobustness2FeaturesKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_KHR, \ - VkPhysicalDeviceRobustness2PropertiesKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT, \ - VkPhysicalDeviceSampleLocationsPropertiesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES, \ - VkPhysicalDeviceSamplerFilterMinmaxProperties); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES, \ - VkPhysicalDeviceSamplerYcbcrConversionFeatures); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES, \ - VkPhysicalDeviceScalarBlockLayoutFeatures); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES, \ - VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_64_BIT_INDEXING_FEATURES_EXT, \ - VkPhysicalDeviceShader64BitIndexingFeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ABORT_FEATURES_KHR, \ - VkPhysicalDeviceShaderAbortFeaturesKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ABORT_PROPERTIES_KHR, \ - VkPhysicalDeviceShaderAbortPropertiesKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES, \ - VkPhysicalDeviceShaderAtomicInt64Features); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT, \ - VkPhysicalDeviceShaderAtomicFloatFeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT, \ - VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_BFLOAT16_FEATURES_KHR, \ - VkPhysicalDeviceShaderBfloat16FeaturesKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CONSTANT_DATA_FEATURES_KHR, \ - VkPhysicalDeviceShaderConstantDataFeaturesKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD, \ - VkPhysicalDeviceShaderCorePropertiesAMD); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR, \ - VkPhysicalDeviceShaderClockFeaturesKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES, \ - VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES, \ - VkPhysicalDeviceShaderDrawParametersFeatures); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES, \ - VkPhysicalDeviceShaderExpectAssumeFeatures); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES, \ - VkPhysicalDeviceShaderFloat16Int8Features); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES, \ - VkPhysicalDeviceShaderFloatControls2Features); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FMA_FEATURES_KHR, \ - VkPhysicalDeviceShaderFmaFeaturesKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT, \ - VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV, \ - VkPhysicalDeviceShaderImageFootprintFeaturesNV); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES, \ - VkPhysicalDeviceShaderIntegerDotProductFeatures); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES, \ - VkPhysicalDeviceShaderIntegerDotProductProperties); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MAXIMAL_RECONVERGENCE_FEATURES_KHR, \ - VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT, \ - VkPhysicalDeviceShaderObjectFeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT, \ - VkPhysicalDeviceShaderObjectPropertiesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_QUAD_CONTROL_FEATURES_KHR, \ - VkPhysicalDeviceShaderQuadControlFeaturesKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_RELAXED_EXTENDED_INSTRUCTION_FEATURES_KHR, \ - VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SPLIT_BARRIER_FEATURES_EXT, \ - VkPhysicalDeviceShaderSplitBarrierFeaturesEXT) \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SPLIT_BARRIER_PROPERTIES_EXT, \ - VkPhysicalDeviceShaderSplitBarrierPropertiesEXT) \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES, \ - VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_PARTITIONED_FEATURES_EXT, \ - VkPhysicalDeviceShaderSubgroupPartitionedFeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES, \ - VkPhysicalDeviceShaderSubgroupRotateFeatures); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR, \ - VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES, \ - VkPhysicalDeviceShaderTerminateInvocationFeatures); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT, \ - VkPhysicalDeviceShaderTileImageFeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT, \ - VkPhysicalDeviceShaderTileImagePropertiesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2, \ - VkPhysicalDeviceSparseImageFormatInfo2); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES, \ - VkPhysicalDeviceSubgroupProperties); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES, \ - VkPhysicalDeviceSubgroupSizeControlFeatures); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES, \ - VkPhysicalDeviceSubgroupSizeControlProperties); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_KHR, \ - VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES, \ - VkPhysicalDeviceSynchronization2Features); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT, \ - VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES, \ - VkPhysicalDeviceTexelBufferAlignmentProperties); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES, \ - VkPhysicalDeviceTextureCompressionASTCHDRFeatures); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES, \ - VkPhysicalDeviceTimelineSemaphoreFeatures); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES, \ - VkPhysicalDeviceTimelineSemaphoreProperties); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES, VkPhysicalDeviceToolProperties); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT, \ - VkPhysicalDeviceTransformFeedbackFeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT, \ - VkPhysicalDeviceTransformFeedbackPropertiesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES, \ - VkPhysicalDeviceVariablePointersFeatures); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES, \ - VkPhysicalDeviceVertexAttributeDivisorFeatures); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT, \ - VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES, \ - VkPhysicalDeviceVertexAttributeDivisorProperties); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT, \ - VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT, \ - VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFIED_IMAGE_LAYOUTS_FEATURES_KHR, \ - VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES, \ - VkPhysicalDeviceUniformBufferStandardLayoutFeatures); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES, \ - VkPhysicalDeviceVulkan11Features); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES, \ - VkPhysicalDeviceVulkan11Properties); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES, \ - VkPhysicalDeviceVulkan12Features); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES, \ - VkPhysicalDeviceVulkan12Properties); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES, \ - VkPhysicalDeviceVulkan13Features); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES, \ - VkPhysicalDeviceVulkan13Properties); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_FEATURES, \ - VkPhysicalDeviceVulkan14Features); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES, \ - VkPhysicalDeviceVulkan14Properties); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES, \ - VkPhysicalDeviceVulkanMemoryModelFeatures); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR, \ - VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT, \ - VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT, \ - VkPhysicalDeviceYcbcrImageArraysFeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_DEVICE_MEMORY_FEATURES_EXT, \ - VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES, \ - VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO, VkPipelineCacheCreateInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO, \ - VkPipelineCreationFeedbackCreateInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO, \ - VkPipelineColorBlendStateCreateInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT, \ - VkPipelineColorWriteCreateInfoEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO, \ - VkPipelineCreateFlags2CreateInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO, \ - VkPipelineDepthStencilStateCreateInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT, \ - VkPipelineDiscardRectangleStateCreateInfoEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO, \ - VkPipelineDynamicStateCreateInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR, \ - VkPipelineExecutablePropertiesKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR, \ - VkPipelineExecutableStatisticKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR, \ - VkPipelineExecutableInternalRepresentationKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR, \ - VkPipelineFragmentShadingRateStateCreateInfoKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO, \ - VkPipelineInputAssemblyStateCreateInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO, \ - VkPipelineMultisampleStateCreateInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT, \ - VkPipelineRasterizationConservativeStateCreateInfoEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT, \ - VkPipelineRasterizationDepthClipStateCreateInfoEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO, \ - VkPipelineRasterizationLineStateCreateInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT, \ - VkPipelineRasterizationProvokingVertexStateCreateInfoEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO, \ - VkPipelineRasterizationStateCreateInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT, \ - VkPipelineRasterizationStateStreamCreateInfoEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO, VkPipelineRobustnessCreateInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT, \ - VkPipelineSampleLocationsStateCreateInfoEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO, VkPipelineShaderStageCreateInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO, \ - VkPipelineShaderStageRequiredSubgroupSizeCreateInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO, \ - VkPipelineTessellationDomainOriginStateCreateInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO, \ - VkPipelineTessellationStateCreateInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO, \ - VkPipelineVertexInputDivisorStateCreateInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO, \ - VkPipelineVertexInputStateCreateInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT, \ - VkPipelineViewportDepthClipControlCreateInfoEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO, \ - VkPipelineViewportStateCreateInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PRESENT_ID_KHR, VkPresentIdKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PRESENT_ID_2_KHR, VkPresentId2KHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR, VkPresentRegionsKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE, VkPresentTimesInfoGOOGLE); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PRESENT_TIMING_INFO_EXT, VkPresentTimingInfoEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PRESENT_TIMING_SURFACE_CAPABILITIES_EXT, \ - VkPresentTimingSurfaceCapabilitiesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PRESENT_TIMINGS_INFO_EXT, VkPresentTimingsInfoEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO, VkPrivateDataSlotCreateInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO, VkQueryPoolCreateInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR, \ - VkQueryPoolPerformanceCreateInfoKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV, \ - VkQueueFamilyCheckpointPropertiesNV); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV, \ - VkQueueFamilyCheckpointProperties2NV); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES, \ - VkQueueFamilyGlobalPriorityProperties); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_QUEUE_FAMILY_OWNERSHIP_TRANSFER_PROPERTIES_KHR, \ - VkQueueFamilyOwnershipTransferPropertiesKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2, VkQueueFamilyProperties2); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR, \ - VkRayTracingPipelineInterfaceCreateInfoKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR, \ - VkRayTracingShaderGroupCreateInfoKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_RENDERING_END_INFO_KHR, VkRenderingEndInfoKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO, VkRenderPassCreateInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2, VkRenderPassCreateInfo2); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT, \ - VkRenderPassFragmentDensityMapCreateInfoEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_EXT, \ - VkRenderPassFragmentDensityMapOffsetEndInfoEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO, \ - VkRenderPassInputAttachmentAspectCreateInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO, VkRenderPassMultiviewCreateInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT, \ - VkRenderPassSampleLocationsBeginInfoEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT, VkSampleLocationsInfoEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT, \ - VkSamplerBorderColorComponentMappingCreateInfoEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO, VkSamplerCreateInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT, \ - VkSamplerCustomBorderColorCreateInfoEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO, \ - VkSamplerReductionModeCreateInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO, \ - VkSamplerYcbcrConversionCreateInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES, \ - VkSamplerYcbcrConversionImageFormatProperties); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO, VkSemaphoreCreateInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO, VkSemaphoreTypeCreateInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO, VkShaderModuleCreateInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR, \ - VkSharedPresentSurfaceCapabilitiesKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2, VkSparseImageFormatProperties2); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2, \ - VkSparseImageMemoryRequirements2); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO, VkSubpassBeginInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2, VkSubpassDependency2); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2, VkSubpassDescription2); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE, \ - VkSubpassDescriptionDepthStencilResolve); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_SUBPASS_END_INFO, VkSubpassEndInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT, \ - VkSubpassResolvePerformanceQueryEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2, VkSubresourceLayout2); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT, VkSurfaceCapabilities2EXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR, VkSurfaceCapabilities2KHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_ID_2_KHR, \ - VkSurfaceCapabilitiesPresentId2KHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_WAIT_2_KHR, \ - VkSurfaceCapabilitiesPresentWait2KHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR, VkSurfaceFormat2KHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_KHR, \ - VkSurfacePresentModeCompatibilityKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_KHR, VkSurfacePresentModeKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_KHR, \ - VkSurfacePresentScalingCapabilitiesKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR, \ - VkSurfaceProtectedCapabilitiesKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD, \ - VkSwapchainDisplayNativeHdrCreateInfoAMD); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_KHR, VkSwapchainPresentModeInfoKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_KHR, \ - VkSwapchainPresentModesCreateInfoKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_KHR, \ - VkSwapchainPresentScalingCreateInfoKHR); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_SWAPCHAIN_TIME_DOMAIN_PROPERTIES_EXT, \ - VkSwapchainTimeDomainPropertiesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_SWAPCHAIN_TIMING_PROPERTIES_EXT, VkSwapchainTimingPropertiesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD, \ - VkTextureLODGatherFormatPropertiesAMD); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO, VkTimelineSemaphoreSubmitInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT, VkValidationCacheCreateInfoEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT, VkValidationFeaturesEXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT, \ - VkVertexInputAttributeDescription2EXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT, \ - VkVertexInputBindingDescription2EXT); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK, \ - VkWriteDescriptorSetInlineUniformBlock); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO, \ - VkRenderingAttachmentLocationInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_RENDERING_AREA_INFO, VkRenderingAreaInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO, \ - VkRenderingInputAttachmentIndexInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY, \ - VkHostImageCopyDevicePerformanceQuery); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO, VkHostImageLayoutTransitionInfo); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE, VkSubresourceHostMemcpySize); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY, VkImageToMemoryCopy); \ - COPY_STRUCT(VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY, VkMemoryToImageCopy); \ - COPY_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT, \ - VkLayerSettingsCreateInfoEXT); \ - COPY_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO, \ - VkLayerInstanceCreateInfo); \ - COPY_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO, VkLayerDeviceCreateInfo); \ - COPY_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_BIND_MEMORY_STATUS, VkBindMemoryStatus); \ - COPY_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT, VkDeviceEventInfoEXT); \ - COPY_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT, VkDisplayEventInfoEXT); \ - COPY_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT, VkDisplayPowerInfoEXT); \ - COPY_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO, VkExportFenceCreateInfo); \ - COPY_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO, \ - VkExportMemoryAllocateInfo); \ - COPY_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV, \ - VkExportMemoryAllocateInfoNV); \ - COPY_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO, \ - VkExportSemaphoreCreateInfo); \ - COPY_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES, VkExternalFenceProperties); \ - COPY_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO, \ - VkExternalMemoryBufferCreateInfo); \ - COPY_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV, \ - VkExternalMemoryImageCreateInfoNV); \ - COPY_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES, \ - VkExternalSemaphoreProperties); \ - COPY_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT, \ - VkImageDrmFormatModifierExplicitCreateInfoEXT); \ - COPY_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT, \ - VkImageDrmFormatModifierListCreateInfoEXT); \ - COPY_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR, VkImportMemoryFdInfoKHR); \ - COPY_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR, VkMemoryFdPropertiesKHR); \ - COPY_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO, \ - VkPhysicalDeviceExternalFenceInfo); \ - COPY_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO, VkProtectedSubmitInfo); \ - COPY_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT, \ - VkShaderModuleValidationCacheCreateInfoEXT); \ - COPY_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT, \ - VkSwapchainCounterCreateInfoEXT); \ - COPY_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT, VkValidationFlagsEXT); \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR, \ - VkAccelerationStructureBuildGeometryInfoKHR, \ - UnwrapInPlace(out->srcAccelerationStructure), \ - UnwrapInPlace(out->dstAccelerationStructure)); \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT, \ - VkAccelerationStructureCaptureDescriptorDataInfoEXT, \ - UnwrapInPlace(out->accelerationStructure)); \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR, \ - VkAccelerationStructureCreateInfoKHR, UnwrapInPlace(out->buffer)); \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR, \ - VkAccelerationStructureDeviceAddressInfoKHR, \ - UnwrapInPlace(out->accelerationStructure)); \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO, VkBindBufferMemoryInfo, \ - UnwrapInPlace(out->buffer), UnwrapInPlace(out->memory)); \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT, \ - VkBindDescriptorBufferEmbeddedSamplersInfoEXT, UnwrapInPlace(out->layout)); \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO, VkBindImageMemoryInfo, \ - UnwrapInPlace(out->image), UnwrapInPlace(out->memory)); \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT, \ - VkBufferCaptureDescriptorDataInfoEXT, UnwrapInPlace(out->buffer)); \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER, VkBufferMemoryBarrier, \ - UnwrapInPlace(out->buffer)); \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2, VkBufferMemoryBarrier2, \ - UnwrapInPlace(out->buffer)); \ - /* VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT aliased by KHR */ \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO, VkBufferDeviceAddressInfo, \ - UnwrapInPlace(out->buffer)); \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2, \ - VkBufferMemoryRequirementsInfo2, UnwrapInPlace(out->buffer)); \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO, VkBufferViewCreateInfo, \ - UnwrapInPlace(out->buffer)); \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO, VkCommandBufferAllocateInfo, \ - UnwrapInPlace(out->commandPool)); \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO, VkCommandBufferInheritanceInfo, \ - UnwrapInPlace(out->renderPass), UnwrapInPlace(out->framebuffer)); \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO, VkCommandBufferSubmitInfo, \ - UnwrapInPlace(out->commandBuffer)); \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT, \ - VkConditionalRenderingBeginInfoEXT, UnwrapInPlace(out->buffer)); \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR, \ - VkCopyAccelerationStructureInfoKHR, UnwrapInPlace(out->src), \ - UnwrapInPlace(out->dst)); \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR, \ - VkCopyAccelerationStructureToMemoryInfoKHR, UnwrapInPlace(out->src)); \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET, VkCopyDescriptorSet, \ - UnwrapInPlace(out->srcSet), UnwrapInPlace(out->dstSet)); \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR, \ - VkCopyMemoryToAccelerationStructureInfoKHR, UnwrapInPlace(out->dst)); \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV, \ - VkDedicatedAllocationMemoryAllocateInfoNV, UnwrapInPlace(out->buffer), \ - UnwrapInPlace(out->image)); \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT, \ - VkDescriptorBufferBindingPushDescriptorBufferHandleEXT, UnwrapInPlace(out->buffer)); \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO, \ - VkDescriptorUpdateTemplateCreateInfo, UnwrapInPlace(out->descriptorSetLayout), \ - UnwrapInPlace(out->pipelineLayout)); \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO, \ - VkDeviceMemoryOpaqueCaptureAddressInfo, UnwrapInPlace(out->memory)); \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT, \ - VkImageCaptureDescriptorDataInfoEXT, UnwrapInPlace(out->image)); \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER, VkImageMemoryBarrier, \ - UnwrapInPlace(out->image)); \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2, VkImageMemoryBarrier2, \ - UnwrapInPlace(out->image)); \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2, \ - VkImageMemoryRequirementsInfo2, UnwrapInPlace(out->image)); \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2, \ - VkImageSparseMemoryRequirementsInfo2, UnwrapInPlace(out->image)); \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT, \ - VkImageViewCaptureDescriptorDataInfoEXT, UnwrapInPlace(out->imageView)); \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO, VkImageViewCreateInfo, \ - UnwrapInPlace(out->image)); \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE, VkMappedMemoryRange, \ - UnwrapInPlace(out->memory)); \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO, VkMemoryDedicatedAllocateInfo, \ - UnwrapInPlace(out->buffer), UnwrapInPlace(out->image)); \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_MEMORY_MAP_INFO, VkMemoryMapInfo, UnwrapInPlace(out->memory)); \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO, VkMemoryUnmapInfo, UnwrapInPlace(out->memory)); \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_INFO_EXT, \ - VkPastPresentationTimingInfoEXT, UnwrapInPlace(out->swapchain)); \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR, VkPipelineInfoKHR, \ - UnwrapInPlace(out->pipeline)); \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR, VkPipelineExecutableInfoKHR, \ - UnwrapInPlace(out->pipeline)); \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_PUSH_CONSTANTS_INFO, VkPushConstantsInfo, \ - UnwrapInPlace(out->layout)); \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO, \ - VkPushDescriptorSetWithTemplateInfo, UnwrapInPlace(out->layout), \ - UnwrapInPlace(out->descriptorUpdateTemplate)); \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO, VkRenderingAttachmentInfo, \ - UnwrapInPlace(out->imageView), UnwrapInPlace(out->resolveImageView)); \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO, VkRenderPassBeginInfo, \ - UnwrapInPlace(out->renderPass), UnwrapInPlace(out->framebuffer)); \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT, \ - VkRenderingFragmentDensityMapAttachmentInfoEXT, UnwrapInPlace(out->imageView)); \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR, \ - VkRenderingFragmentShadingRateAttachmentInfoKHR, UnwrapInPlace(out->imageView)); \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_KHR, \ - VkReleaseSwapchainImagesInfoKHR, UnwrapInPlace(out->swapchain)); \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT, \ - VkSamplerCaptureDescriptorDataInfoEXT, UnwrapInPlace(out->sampler)); \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO, VkSamplerYcbcrConversionInfo, \ - UnwrapInPlace(out->conversion)); \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO, VkSemaphoreSignalInfo, \ - UnwrapInPlace(out->semaphore)); \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO, VkSemaphoreSubmitInfo, \ - UnwrapInPlace(out->semaphore)); \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT, \ - VkSetDescriptorBufferOffsetsInfoEXT, UnwrapInPlace(out->layout)); \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_SWAPCHAIN_CALIBRATED_TIMESTAMP_INFO_EXT, \ - VkSwapchainCalibratedTimestampInfoEXT, UnwrapInPlace(out->swapchain)); \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO, VkCopyImageToImageInfo, \ - UnwrapInPlace(out->srcImage), UnwrapInPlace(out->dstImage)); \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO, VkCopyImageToMemoryInfo, \ - UnwrapInPlace(out->srcImage)); \ - UNWRAP_STRUCT(VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO, VkCopyMemoryToImageInfo, \ - UnwrapInPlace(out->dstImage)); \ - UNWRAP_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR, \ - VkAcquireNextImageInfoKHR, UnwrapInPlace(out->swapchain), \ - UnwrapInPlace(out->semaphore), UnwrapInPlace(out->fence)); \ - UNWRAP_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR, \ - VkBindImageMemorySwapchainInfoKHR, UnwrapInPlace(out->swapchain)); \ - UNWRAP_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR, VkFenceGetFdInfoKHR, \ - UnwrapInPlace(out->fence)); \ - UNWRAP_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR, \ - VkImageSwapchainCreateInfoKHR, UnwrapInPlace(out->swapchain)); \ - UNWRAP_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR, VkImportFenceFdInfoKHR, \ - UnwrapInPlace(out->fence)); \ - UNWRAP_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR, \ - VkImportSemaphoreFdInfoKHR, UnwrapInPlace(out->semaphore)); \ - UNWRAP_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR, VkMemoryGetFdInfoKHR, \ - UnwrapInPlace(out->memory)); \ - UNWRAP_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR, \ - VkPhysicalDeviceSurfaceInfo2KHR, UnwrapInPlace(out->surface)); \ - UNWRAP_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR, VkSemaphoreGetFdInfoKHR, \ - UnwrapInPlace(out->semaphore)); \ - UNWRAP_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR, VkSwapchainCreateInfoKHR, \ +#define PROCESS_SIMPLE_STRUCTS() \ + COPY_STRUCT(VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR, \ + VkAccelerationStructureBuildSizesInfoKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR, \ + VkAccelerationStructureGeometryAabbsDataKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR, \ + VkAccelerationStructureGeometryInstancesDataKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR, \ + VkAccelerationStructureGeometryKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR, \ + VkAccelerationStructureGeometryTrianglesDataKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR, \ + VkAccelerationStructureVersionInfoKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR, VkAcquireProfilingLockInfoKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_APPLICATION_INFO, VkApplicationInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2, VkAttachmentDescription2); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT, \ + VkAttachmentDescriptionStencilLayout); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_ATTACHMENT_FEEDBACK_LOOP_INFO_EXT, VkAttachmentFeedbackLoopInfoEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2, VkAttachmentReference2); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT, \ + VkAttachmentReferenceStencilLayout); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_BEGIN_CUSTOM_RESOLVE_INFO_EXT, VkBeginCustomResolveInfoEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO, \ + VkBindBufferMemoryDeviceGroupInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO, \ + VkBindImageMemoryDeviceGroupInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO, VkBindImagePlaneMemoryInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_BUFFER_COPY_2, VkBufferCopy2); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO, VkBufferCreateInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT, \ + VkBufferDeviceAddressCreateInfoEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2, VkBufferImageCopy2); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO, \ + VkBufferOpaqueCaptureAddressCreateInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO, VkBufferUsageFlags2CreateInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_KHR, VkCalibratedTimestampInfoKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV, VkCheckpointDataNV); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV, VkCheckpointData2NV); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, VkCommandBufferBeginInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT, \ + VkCommandBufferInheritanceConditionalRenderingInfoEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO, VkCommandPoolCreateInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT, VkDebugMarkerMarkerInfoEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT, \ + VkDebugReportCallbackCreateInfoEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT, VkDebugUtilsLabelEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT, \ + VkDebugUtilsMessengerCreateInfoEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV, \ + VkDedicatedAllocationBufferCreateInfoNV); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV, \ + VkDedicatedAllocationImageCreateInfoNV); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_DEPTH_BIAS_INFO_EXT, VkDepthBiasInfoEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_DEPTH_BIAS_REPRESENTATION_INFO_EXT, \ + VkDepthBiasRepresentationInfoEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_INFO_EXT, \ + VkDescriptorBufferBindingInfoEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_DESCRIPTOR_ADDRESS_INFO_EXT, VkDescriptorAddressInfoEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO, VkDescriptorPoolCreateInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO, \ + VkDescriptorPoolInlineUniformBlockCreateInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO, \ + VkDescriptorSetLayoutBindingFlagsCreateInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT, VkDescriptorSetLayoutSupport); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO, \ + VkDescriptorSetVariableDescriptorCountAllocateInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT, \ + VkDescriptorSetVariableDescriptorCountLayoutSupport); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO, VkDeviceCreateInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV, \ + VkDeviceDiagnosticsConfigCreateInfoNV); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO, VkDeviceGroupBindSparseInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO, \ + VkDeviceGroupCommandBufferBeginInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR, \ + VkDeviceGroupPresentCapabilitiesKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR, VkDeviceGroupPresentInfoKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO, \ + VkDeviceGroupRenderPassBeginInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO, VkDeviceGroupSubmitInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR, \ + VkDeviceGroupSwapchainCreateInfoKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD, \ + VkDeviceMemoryOverallocationCreateInfoAMD); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO, VkDevicePrivateDataCreateInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO, VkDeviceQueueCreateInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO, \ + VkDeviceQueueGlobalPriorityCreateInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2, VkDeviceQueueInfo2); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR, VkDisplayModeProperties2KHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD, \ + VkDisplayNativeHdrSurfaceCapabilitiesAMD); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR, VkDisplayPlaneCapabilities2KHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR, VkDisplayPlaneInfo2KHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR, VkDisplayPlaneProperties2KHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR, VkDisplayPresentInfoKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR, VkDisplayProperties2KHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT, \ + VkDrmFormatModifierPropertiesListEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT, \ + VkDrmFormatModifierPropertiesList2EXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_EVENT_CREATE_INFO, VkEventCreateInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES, VkExternalBufferProperties); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES, VkExternalImageFormatProperties); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO, VkExternalMemoryImageCreateInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_FENCE_CREATE_INFO, VkFenceCreateInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT, \ + VkFilterCubicImageViewImageFormatPropertiesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR, \ + VkFragmentShadingRateAttachmentInfoKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2, VkFormatProperties2); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3, VkFormatProperties3); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_4_KHR, VkFormatProperties4KHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT, \ + VkGraphicsPipelineLibraryCreateInfoEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_HDR_METADATA_EXT, VkHdrMetadataEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_IMAGE_BLIT_2, VkImageBlit2); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT, VkImageCompressionControlEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT, VkImageCompressionPropertiesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_IMAGE_COPY_2, VkImageCopy2); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, VkImageCreateInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_IMAGE_CREATE_FLAGS_2_CREATE_INFO_KHR, \ + VkImageCreateFlags2CreateInfoKHR) \ + COPY_STRUCT(VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO, VkImageFormatListCreateInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT, \ + VkImageDrmFormatModifierPropertiesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2, VkImageFormatProperties2); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO, \ + VkImagePlaneMemoryRequirementsInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2, VkImageResolve2); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO, VkImageStencilUsageCreateInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_2_CREATE_INFO_KHR, \ + VkImageStencilUsage2CreateInfoKHR) \ + COPY_STRUCT(VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2, VkImageSubresource2); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_IMAGE_USAGE_FLAGS_2_CREATE_INFO_KHR, VkImageUsageFlags2CreateInfoKHR) \ + COPY_STRUCT(VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT, VkImageViewASTCDecodeModeEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT, VkImageViewMinLodCreateInfoEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_IMAGE_VIEW_SLICED_CREATE_INFO_EXT, VkImageViewSlicedCreateInfoEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO, VkImageViewUsageCreateInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_2_CREATE_INFO_KHR, VkImageViewUsage2CreateInfoKHR) \ + COPY_STRUCT(VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO, VkInstanceCreateInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO, VkMemoryAllocateFlagsInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO, VkMemoryAllocateInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_MEMORY_BARRIER, VkMemoryBarrier); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_MEMORY_BARRIER_2, VkMemoryBarrier2); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_MEMORY_BARRIER_ACCESS_FLAGS_3_KHR, VkMemoryBarrierAccessFlags3KHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS, VkMemoryDedicatedRequirements); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO, \ + VkMemoryOpaqueCaptureAddressAllocateInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT, VkMemoryPriorityAllocateInfoEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2, VkMemoryRequirements2); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT, VkMultisamplePropertiesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT, \ + VkMultisampledRenderToSingleSampledInfoEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT, \ + VkMutableDescriptorTypeCreateInfoEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT, \ + VkOpaqueCaptureDescriptorDataCreateInfoEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_EXT, VkPastPresentationTimingEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_PROPERTIES_EXT, \ + VkPastPresentationTimingPropertiesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR, \ + VkPerformanceCounterDescriptionKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR, VkPerformanceCounterKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR, VkPerformanceQuerySubmitInfoKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES, \ + VkPhysicalDevice16BitStorageFeatures); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT, \ + VkPhysicalDevice4444FormatsFeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES, \ + VkPhysicalDevice8BitStorageFeatures); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR, \ + VkPhysicalDeviceAccelerationStructureFeaturesKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR, \ + VkPhysicalDeviceAccelerationStructurePropertiesKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT, \ + VkPhysicalDeviceASTCDecodeFeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT, \ + VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT, \ + VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT, \ + VkPhysicalDeviceBorderColorSwizzleFeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT, \ + VkPhysicalDeviceBufferDeviceAddressFeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES, \ + VkPhysicalDeviceBufferDeviceAddressFeatures); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD, \ + VkPhysicalDeviceCoherentMemoryFeaturesAMD); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT, \ + VkPhysicalDeviceColorWriteEnableFeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_KHR, \ + VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_PROPERTIES_KHR, \ + VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT, \ + VkPhysicalDeviceConditionalRenderingFeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT, \ + VkPhysicalDeviceConservativeRasterizationPropertiesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT, \ + VkPhysicalDeviceCustomBorderColorFeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT, \ + VkPhysicalDeviceCustomBorderColorPropertiesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_RESOLVE_FEATURES_EXT, \ + VkPhysicalDeviceCustomResolveFeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV, \ + VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_FEATURES_EXT, \ + VkPhysicalDeviceDepthBiasControlFeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR, \ + VkPhysicalDeviceDepthClampZeroOneFeaturesKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT, \ + VkPhysicalDeviceDepthClipControlFeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT, \ + VkPhysicalDeviceDepthClipEnableFeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES, \ + VkPhysicalDeviceDepthStencilResolveProperties); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT, \ + VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT, \ + VkPhysicalDeviceDescriptorBufferFeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT, \ + VkPhysicalDeviceDescriptorBufferPropertiesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES, \ + VkPhysicalDeviceDescriptorIndexingFeatures); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES, \ + VkPhysicalDeviceDescriptorIndexingProperties); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV, \ + VkPhysicalDeviceDiagnosticsConfigFeaturesNV); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT, \ + VkPhysicalDeviceDiscardRectanglePropertiesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES, \ + VkPhysicalDeviceDriverProperties); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT, \ + VkPhysicalDeviceDrmPropertiesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES, \ + VkPhysicalDeviceDynamicRenderingFeatures); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES, \ + VkPhysicalDeviceDynamicRenderingLocalReadFeatures); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT, \ + VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT, \ + VkPhysicalDeviceExtendedDynamicStateFeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT, \ + VkPhysicalDeviceExtendedDynamicState2FeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT, \ + VkPhysicalDeviceExtendedDynamicState3FeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT, \ + VkPhysicalDeviceExtendedDynamicState3PropertiesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_FLAGS_FEATURES_KHR, \ + VkPhysicalDeviceExtendedFlagsFeaturesKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO, \ + VkPhysicalDeviceExternalBufferInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO, \ + VkPhysicalDeviceExternalImageFormatInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO, \ + VkPhysicalDeviceExternalSemaphoreInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2, VkPhysicalDeviceFeatures2); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES, \ + VkPhysicalDeviceFloatControlsProperties); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR, \ + VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR, \ + VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES, \ + VkPhysicalDeviceGlobalPriorityQueryFeatures); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT, \ + VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT, \ + VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES, VkPhysicalDeviceGroupProperties); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT, \ + VkPhysicalDeviceFragmentDensityMapFeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT, \ + VkPhysicalDeviceFragmentDensityMapPropertiesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT, \ + VkPhysicalDeviceFragmentDensityMap2FeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT, \ + VkPhysicalDeviceFragmentDensityMap2PropertiesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT, \ + VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_EXT, \ + VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_FEATURES_VALVE, \ + VkPhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_PROPERTIES_VALVE, \ + VkPhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_DENSITY_MAP_LAYERED_CREATE_INFO_VALVE, \ + VkPipelineFragmentDensityMapLayeredCreateInfoVALVE); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT, \ + VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR, \ + VkPhysicalDeviceFragmentShadingRateFeaturesKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR, \ + VkPhysicalDeviceFragmentShadingRateKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR, \ + VkPhysicalDeviceFragmentShadingRatePropertiesKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES, \ + VkPhysicalDeviceHostImageCopyFeatures); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES, \ + VkPhysicalDeviceHostImageCopyProperties); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES, \ + VkPhysicalDeviceHostQueryResetFeatures); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES, VkPhysicalDeviceIDProperties); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT, \ + VkPhysicalDeviceImage2DViewOf3DFeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT, \ + VkPhysicalDeviceImageCompressionControlFeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT, \ + VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT, \ + VkPhysicalDeviceImageDrmFormatModifierInfoEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2, \ + VkPhysicalDeviceImageFormatInfo2); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT, \ + VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT, \ + VkPhysicalDeviceImageViewImageFormatInfoEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES, \ + VkPhysicalDeviceImagelessFramebufferFeatures); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES, \ + VkPhysicalDeviceImageRobustnessFeatures); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES, \ + VkPhysicalDeviceIndexTypeUint8Features); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT, \ + VkPhysicalDeviceImageViewMinLodFeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES, \ + VkPhysicalDeviceInlineUniformBlockFeatures); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES, \ + VkPhysicalDeviceInlineUniformBlockProperties); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES, \ + VkPhysicalDeviceMaintenance3Properties); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES, \ + VkPhysicalDeviceMaintenance4Features); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES, \ + VkPhysicalDeviceMaintenance4Properties); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES, \ + VkPhysicalDeviceMaintenance5Features); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES, \ + VkPhysicalDeviceMaintenance5Properties); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES, \ + VkPhysicalDeviceMaintenance6Features); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES, \ + VkPhysicalDeviceMaintenance6Properties); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_FEATURES_KHR, \ + VkPhysicalDeviceMaintenance7FeaturesKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_PROPERTIES_KHR, \ + VkPhysicalDeviceMaintenance7PropertiesKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR, \ + VkPhysicalDeviceMaintenance8FeaturesKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_FEATURES_KHR, \ + VkPhysicalDeviceMaintenance9FeaturesKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_PROPERTIES_KHR, \ + VkPhysicalDeviceMaintenance9PropertiesKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT, \ + VkPhysicalDeviceMemoryBudgetPropertiesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2, \ + VkPhysicalDeviceMemoryProperties2); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT, \ + VkPhysicalDeviceMemoryPriorityFeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT, \ + VkPhysicalDeviceMeshShaderFeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT, \ + VkPhysicalDeviceMeshShaderPropertiesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT, \ + VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES, \ + VkPhysicalDeviceMultiviewFeatures); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM, \ + VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES, \ + VkPhysicalDeviceMultiviewProperties); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT, \ + VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT, \ + VkPhysicalDeviceNestedCommandBufferFeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT, \ + VkPhysicalDeviceNestedCommandBufferPropertiesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT, \ + VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_KHR, \ + VkPhysicalDeviceLayeredApiPropertiesKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_LIST_KHR, \ + VkPhysicalDeviceLayeredApiPropertiesListKHR); \ + /* normally this would need complex unwrapping for the properties member, */ \ + /* but the properties.pNext chain is very limited */ \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_VULKAN_PROPERTIES_KHR, \ + VkPhysicalDeviceLayeredApiVulkanPropertiesKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES, \ + VkPhysicalDeviceLineRasterizationFeatures); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES, \ + VkPhysicalDeviceLineRasterizationProperties); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT, \ + VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT, \ + VkPhysicalDevicePCIBusInfoPropertiesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR, \ + VkPhysicalDevicePerformanceQueryFeaturesKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR, \ + VkPhysicalDevicePerformanceQueryPropertiesKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES, \ + VkPhysicalDevicePipelineCreationCacheControlFeatures); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR, \ + VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES, \ + VkPhysicalDevicePipelineProtectedAccessFeatures); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES, \ + VkPhysicalDevicePipelineRobustnessFeatures); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES, \ + VkPhysicalDevicePipelineRobustnessProperties); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES, \ + VkPhysicalDevicePointClippingProperties); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR, \ + VkPhysicalDevicePresentIdFeaturesKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_2_FEATURES_KHR, \ + VkPhysicalDevicePresentId2FeaturesKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_KHR, \ + VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_TIMING_FEATURES_EXT, \ + VkPhysicalDevicePresentTimingFeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR, \ + VkPhysicalDevicePresentWaitFeaturesKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_2_FEATURES_KHR, \ + VkPhysicalDevicePresentWait2FeaturesKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT, \ + VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT, \ + VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES, \ + VkPhysicalDevicePrivateDataFeatures); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2, VkPhysicalDeviceProperties2); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES, \ + VkPhysicalDeviceProtectedMemoryFeatures); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES, \ + VkPhysicalDeviceProtectedMemoryProperties); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT, \ + VkPhysicalDeviceProvokingVertexFeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT, \ + VkPhysicalDeviceProvokingVertexPropertiesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES, \ + VkPhysicalDevicePushDescriptorProperties); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT, \ + VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_EXT, \ + VkPhysicalDeviceRayTracingInvocationReorderFeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV, \ + VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_EXT, \ + VkPhysicalDeviceRayTracingInvocationReorderPropertiesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV, \ + VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR, \ + VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR, \ + VkPhysicalDeviceRayTracingPipelineFeaturesKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR, \ + VkPhysicalDeviceRayTracingPipelinePropertiesKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR, \ + VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR, \ + VkPhysicalDeviceRayQueryFeaturesKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT, \ + VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_KHR, \ + VkPhysicalDeviceRobustness2FeaturesKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_KHR, \ + VkPhysicalDeviceRobustness2PropertiesKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT, \ + VkPhysicalDeviceSampleLocationsPropertiesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES, \ + VkPhysicalDeviceSamplerFilterMinmaxProperties); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES, \ + VkPhysicalDeviceSamplerYcbcrConversionFeatures); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES, \ + VkPhysicalDeviceScalarBlockLayoutFeatures); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES, \ + VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_64_BIT_INDEXING_FEATURES_EXT, \ + VkPhysicalDeviceShader64BitIndexingFeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ABORT_FEATURES_KHR, \ + VkPhysicalDeviceShaderAbortFeaturesKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ABORT_PROPERTIES_KHR, \ + VkPhysicalDeviceShaderAbortPropertiesKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES, \ + VkPhysicalDeviceShaderAtomicInt64Features); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT, \ + VkPhysicalDeviceShaderAtomicFloatFeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT, \ + VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_BFLOAT16_FEATURES_KHR, \ + VkPhysicalDeviceShaderBfloat16FeaturesKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CONSTANT_DATA_FEATURES_KHR, \ + VkPhysicalDeviceShaderConstantDataFeaturesKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD, \ + VkPhysicalDeviceShaderCorePropertiesAMD); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR, \ + VkPhysicalDeviceShaderClockFeaturesKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES, \ + VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES, \ + VkPhysicalDeviceShaderDrawParametersFeatures); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES, \ + VkPhysicalDeviceShaderExpectAssumeFeatures); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES, \ + VkPhysicalDeviceShaderFloat16Int8Features); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES, \ + VkPhysicalDeviceShaderFloatControls2Features); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FMA_FEATURES_KHR, \ + VkPhysicalDeviceShaderFmaFeaturesKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT, \ + VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV, \ + VkPhysicalDeviceShaderImageFootprintFeaturesNV); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES, \ + VkPhysicalDeviceShaderIntegerDotProductFeatures); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES, \ + VkPhysicalDeviceShaderIntegerDotProductProperties); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MAXIMAL_RECONVERGENCE_FEATURES_KHR, \ + VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT, \ + VkPhysicalDeviceShaderObjectFeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT, \ + VkPhysicalDeviceShaderObjectPropertiesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_QUAD_CONTROL_FEATURES_KHR, \ + VkPhysicalDeviceShaderQuadControlFeaturesKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_RELAXED_EXTENDED_INSTRUCTION_FEATURES_KHR, \ + VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SPLIT_BARRIER_FEATURES_EXT, \ + VkPhysicalDeviceShaderSplitBarrierFeaturesEXT) \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SPLIT_BARRIER_PROPERTIES_EXT, \ + VkPhysicalDeviceShaderSplitBarrierPropertiesEXT) \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES, \ + VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_PARTITIONED_FEATURES_EXT, \ + VkPhysicalDeviceShaderSubgroupPartitionedFeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES, \ + VkPhysicalDeviceShaderSubgroupRotateFeatures); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR, \ + VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES, \ + VkPhysicalDeviceShaderTerminateInvocationFeatures); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT, \ + VkPhysicalDeviceShaderTileImageFeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT, \ + VkPhysicalDeviceShaderTileImagePropertiesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2, \ + VkPhysicalDeviceSparseImageFormatInfo2); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES, \ + VkPhysicalDeviceSubgroupProperties); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES, \ + VkPhysicalDeviceSubgroupSizeControlFeatures); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES, \ + VkPhysicalDeviceSubgroupSizeControlProperties); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_KHR, \ + VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES, \ + VkPhysicalDeviceSynchronization2Features); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT, \ + VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES, \ + VkPhysicalDeviceTexelBufferAlignmentProperties); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES, \ + VkPhysicalDeviceTextureCompressionASTCHDRFeatures); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES, \ + VkPhysicalDeviceTimelineSemaphoreFeatures); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES, \ + VkPhysicalDeviceTimelineSemaphoreProperties); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES, VkPhysicalDeviceToolProperties); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT, \ + VkPhysicalDeviceTransformFeedbackFeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT, \ + VkPhysicalDeviceTransformFeedbackPropertiesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES, \ + VkPhysicalDeviceVariablePointersFeatures); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES, \ + VkPhysicalDeviceVertexAttributeDivisorFeatures); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT, \ + VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES, \ + VkPhysicalDeviceVertexAttributeDivisorProperties); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT, \ + VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT, \ + VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFIED_IMAGE_LAYOUTS_FEATURES_KHR, \ + VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES, \ + VkPhysicalDeviceUniformBufferStandardLayoutFeatures); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES, \ + VkPhysicalDeviceVulkan11Features); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES, \ + VkPhysicalDeviceVulkan11Properties); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES, \ + VkPhysicalDeviceVulkan12Features); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES, \ + VkPhysicalDeviceVulkan12Properties); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES, \ + VkPhysicalDeviceVulkan13Features); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES, \ + VkPhysicalDeviceVulkan13Properties); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_FEATURES, \ + VkPhysicalDeviceVulkan14Features); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES, \ + VkPhysicalDeviceVulkan14Properties); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES, \ + VkPhysicalDeviceVulkanMemoryModelFeatures); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR, \ + VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT, \ + VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT, \ + VkPhysicalDeviceYcbcrImageArraysFeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_DEVICE_MEMORY_FEATURES_EXT, \ + VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES, \ + VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO, VkPipelineCacheCreateInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO, \ + VkPipelineCreationFeedbackCreateInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO, \ + VkPipelineColorBlendStateCreateInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT, \ + VkPipelineColorWriteCreateInfoEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO, \ + VkPipelineCreateFlags2CreateInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO, \ + VkPipelineDepthStencilStateCreateInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT, \ + VkPipelineDiscardRectangleStateCreateInfoEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO, \ + VkPipelineDynamicStateCreateInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR, \ + VkPipelineExecutablePropertiesKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR, \ + VkPipelineExecutableStatisticKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR, \ + VkPipelineExecutableInternalRepresentationKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR, \ + VkPipelineFragmentShadingRateStateCreateInfoKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO, \ + VkPipelineInputAssemblyStateCreateInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO, \ + VkPipelineMultisampleStateCreateInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT, \ + VkPipelineRasterizationConservativeStateCreateInfoEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT, \ + VkPipelineRasterizationDepthClipStateCreateInfoEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO, \ + VkPipelineRasterizationLineStateCreateInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT, \ + VkPipelineRasterizationProvokingVertexStateCreateInfoEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO, \ + VkPipelineRasterizationStateCreateInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT, \ + VkPipelineRasterizationStateStreamCreateInfoEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO, VkPipelineRobustnessCreateInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT, \ + VkPipelineSampleLocationsStateCreateInfoEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO, VkPipelineShaderStageCreateInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO, \ + VkPipelineShaderStageRequiredSubgroupSizeCreateInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO, \ + VkPipelineTessellationDomainOriginStateCreateInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO, \ + VkPipelineTessellationStateCreateInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO, \ + VkPipelineVertexInputDivisorStateCreateInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO, \ + VkPipelineVertexInputStateCreateInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT, \ + VkPipelineViewportDepthClipControlCreateInfoEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO, \ + VkPipelineViewportStateCreateInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PRESENT_ID_KHR, VkPresentIdKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PRESENT_ID_2_KHR, VkPresentId2KHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR, VkPresentRegionsKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE, VkPresentTimesInfoGOOGLE); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PRESENT_TIMING_INFO_EXT, VkPresentTimingInfoEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PRESENT_TIMING_SURFACE_CAPABILITIES_EXT, \ + VkPresentTimingSurfaceCapabilitiesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PRESENT_TIMINGS_INFO_EXT, VkPresentTimingsInfoEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO, VkPrivateDataSlotCreateInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO, VkQueryPoolCreateInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR, \ + VkQueryPoolPerformanceCreateInfoKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV, \ + VkQueueFamilyCheckpointPropertiesNV); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV, \ + VkQueueFamilyCheckpointProperties2NV); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES, \ + VkQueueFamilyGlobalPriorityProperties); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_QUEUE_FAMILY_OWNERSHIP_TRANSFER_PROPERTIES_KHR, \ + VkQueueFamilyOwnershipTransferPropertiesKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2, VkQueueFamilyProperties2); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR, \ + VkRayTracingPipelineInterfaceCreateInfoKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR, \ + VkRayTracingShaderGroupCreateInfoKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_RENDERING_END_INFO_KHR, VkRenderingEndInfoKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO, VkRenderPassCreateInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2, VkRenderPassCreateInfo2); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT, \ + VkRenderPassFragmentDensityMapCreateInfoEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_EXT, \ + VkRenderPassFragmentDensityMapOffsetEndInfoEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO, \ + VkRenderPassInputAttachmentAspectCreateInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO, VkRenderPassMultiviewCreateInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT, \ + VkRenderPassSampleLocationsBeginInfoEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT, VkSampleLocationsInfoEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT, \ + VkSamplerBorderColorComponentMappingCreateInfoEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO, VkSamplerCreateInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT, \ + VkSamplerCustomBorderColorCreateInfoEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO, \ + VkSamplerReductionModeCreateInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO, \ + VkSamplerYcbcrConversionCreateInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES, \ + VkSamplerYcbcrConversionImageFormatProperties); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO, VkSemaphoreCreateInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO, VkSemaphoreTypeCreateInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO, VkShaderModuleCreateInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR, \ + VkSharedPresentSurfaceCapabilitiesKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_2_KHR, \ + VkSharedPresentSurfaceCapabilities2KHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2, VkSparseImageFormatProperties2); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2, \ + VkSparseImageMemoryRequirements2); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO, VkSubpassBeginInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2, VkSubpassDependency2); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2, VkSubpassDescription2); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE, \ + VkSubpassDescriptionDepthStencilResolve); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_SUBPASS_END_INFO, VkSubpassEndInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT, \ + VkSubpassResolvePerformanceQueryEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2, VkSubresourceLayout2); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT, VkSurfaceCapabilities2EXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR, VkSurfaceCapabilities2KHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_ID_2_KHR, \ + VkSurfaceCapabilitiesPresentId2KHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_WAIT_2_KHR, \ + VkSurfaceCapabilitiesPresentWait2KHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR, VkSurfaceFormat2KHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_KHR, \ + VkSurfacePresentModeCompatibilityKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_KHR, VkSurfacePresentModeKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_KHR, \ + VkSurfacePresentScalingCapabilitiesKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR, \ + VkSurfaceProtectedCapabilitiesKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD, \ + VkSwapchainDisplayNativeHdrCreateInfoAMD); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_KHR, VkSwapchainPresentModeInfoKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_KHR, \ + VkSwapchainPresentModesCreateInfoKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_KHR, \ + VkSwapchainPresentScalingCreateInfoKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_SWAPCHAIN_TIME_DOMAIN_PROPERTIES_EXT, \ + VkSwapchainTimeDomainPropertiesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_SWAPCHAIN_TIMING_PROPERTIES_EXT, VkSwapchainTimingPropertiesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD, \ + VkTextureLODGatherFormatPropertiesAMD); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO, VkTimelineSemaphoreSubmitInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT, VkValidationCacheCreateInfoEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT, VkValidationFeaturesEXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT, \ + VkVertexInputAttributeDescription2EXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT, \ + VkVertexInputBindingDescription2EXT); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK, \ + VkWriteDescriptorSetInlineUniformBlock); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO, \ + VkRenderingAttachmentLocationInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_RENDERING_AREA_INFO, VkRenderingAreaInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO, \ + VkRenderingInputAttachmentIndexInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY, \ + VkHostImageCopyDevicePerformanceQuery); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO, VkHostImageLayoutTransitionInfo); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE, VkSubresourceHostMemcpySize); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY, VkImageToMemoryCopy); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY, VkMemoryToImageCopy); \ + COPY_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT, \ + VkLayerSettingsCreateInfoEXT); \ + COPY_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO, \ + VkLayerInstanceCreateInfo); \ + COPY_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO, VkLayerDeviceCreateInfo); \ + COPY_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_BIND_MEMORY_STATUS, VkBindMemoryStatus); \ + COPY_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT, VkDeviceEventInfoEXT); \ + COPY_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT, VkDisplayEventInfoEXT); \ + COPY_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT, VkDisplayPowerInfoEXT); \ + COPY_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO, VkExportFenceCreateInfo); \ + COPY_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO, \ + VkExportMemoryAllocateInfo); \ + COPY_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV, \ + VkExportMemoryAllocateInfoNV); \ + COPY_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO, \ + VkExportSemaphoreCreateInfo); \ + COPY_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES, VkExternalFenceProperties); \ + COPY_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO, \ + VkExternalMemoryBufferCreateInfo); \ + COPY_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV, \ + VkExternalMemoryImageCreateInfoNV); \ + COPY_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES, \ + VkExternalSemaphoreProperties); \ + COPY_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT, \ + VkImageDrmFormatModifierExplicitCreateInfoEXT); \ + COPY_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT, \ + VkImageDrmFormatModifierListCreateInfoEXT); \ + COPY_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR, VkImportMemoryFdInfoKHR); \ + COPY_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR, VkMemoryFdPropertiesKHR); \ + COPY_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO, \ + VkPhysicalDeviceExternalFenceInfo); \ + COPY_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO, VkProtectedSubmitInfo); \ + COPY_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT, \ + VkShaderModuleValidationCacheCreateInfoEXT); \ + COPY_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT, \ + VkSwapchainCounterCreateInfoEXT); \ + COPY_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT, VkValidationFlagsEXT); \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR, \ + VkAccelerationStructureBuildGeometryInfoKHR, \ + UnwrapInPlace(out->srcAccelerationStructure), \ + UnwrapInPlace(out->dstAccelerationStructure)); \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT, \ + VkAccelerationStructureCaptureDescriptorDataInfoEXT, \ + UnwrapInPlace(out->accelerationStructure)); \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR, \ + VkAccelerationStructureCreateInfoKHR, UnwrapInPlace(out->buffer)); \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR, \ + VkAccelerationStructureDeviceAddressInfoKHR, \ + UnwrapInPlace(out->accelerationStructure)); \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO, VkBindBufferMemoryInfo, \ + UnwrapInPlace(out->buffer), UnwrapInPlace(out->memory)); \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT, \ + VkBindDescriptorBufferEmbeddedSamplersInfoEXT, UnwrapInPlace(out->layout)); \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO, VkBindImageMemoryInfo, \ + UnwrapInPlace(out->image), UnwrapInPlace(out->memory)); \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT, \ + VkBufferCaptureDescriptorDataInfoEXT, UnwrapInPlace(out->buffer)); \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER, VkBufferMemoryBarrier, \ + UnwrapInPlace(out->buffer)); \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2, VkBufferMemoryBarrier2, \ + UnwrapInPlace(out->buffer)); \ + /* VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT aliased by KHR */ \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO, VkBufferDeviceAddressInfo, \ + UnwrapInPlace(out->buffer)); \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2, \ + VkBufferMemoryRequirementsInfo2, UnwrapInPlace(out->buffer)); \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO, VkBufferViewCreateInfo, \ + UnwrapInPlace(out->buffer)); \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO, VkCommandBufferAllocateInfo, \ + UnwrapInPlace(out->commandPool)); \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO, VkCommandBufferInheritanceInfo, \ + UnwrapInPlace(out->renderPass), UnwrapInPlace(out->framebuffer)); \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO, VkCommandBufferSubmitInfo, \ + UnwrapInPlace(out->commandBuffer)); \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT, \ + VkConditionalRenderingBeginInfoEXT, UnwrapInPlace(out->buffer)); \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR, \ + VkCopyAccelerationStructureInfoKHR, UnwrapInPlace(out->src), \ + UnwrapInPlace(out->dst)); \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR, \ + VkCopyAccelerationStructureToMemoryInfoKHR, UnwrapInPlace(out->src)); \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET, VkCopyDescriptorSet, \ + UnwrapInPlace(out->srcSet), UnwrapInPlace(out->dstSet)); \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR, \ + VkCopyMemoryToAccelerationStructureInfoKHR, UnwrapInPlace(out->dst)); \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV, \ + VkDedicatedAllocationMemoryAllocateInfoNV, UnwrapInPlace(out->buffer), \ + UnwrapInPlace(out->image)); \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT, \ + VkDescriptorBufferBindingPushDescriptorBufferHandleEXT, UnwrapInPlace(out->buffer)); \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO, \ + VkDescriptorUpdateTemplateCreateInfo, UnwrapInPlace(out->descriptorSetLayout), \ + UnwrapInPlace(out->pipelineLayout)); \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO, \ + VkDeviceMemoryOpaqueCaptureAddressInfo, UnwrapInPlace(out->memory)); \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT, \ + VkImageCaptureDescriptorDataInfoEXT, UnwrapInPlace(out->image)); \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER, VkImageMemoryBarrier, \ + UnwrapInPlace(out->image)); \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2, VkImageMemoryBarrier2, \ + UnwrapInPlace(out->image)); \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2, \ + VkImageMemoryRequirementsInfo2, UnwrapInPlace(out->image)); \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2, \ + VkImageSparseMemoryRequirementsInfo2, UnwrapInPlace(out->image)); \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT, \ + VkImageViewCaptureDescriptorDataInfoEXT, UnwrapInPlace(out->imageView)); \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO, VkImageViewCreateInfo, \ + UnwrapInPlace(out->image)); \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE, VkMappedMemoryRange, \ + UnwrapInPlace(out->memory)); \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO, VkMemoryDedicatedAllocateInfo, \ + UnwrapInPlace(out->buffer), UnwrapInPlace(out->image)); \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_MEMORY_MAP_INFO, VkMemoryMapInfo, UnwrapInPlace(out->memory)); \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO, VkMemoryUnmapInfo, UnwrapInPlace(out->memory)); \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_INFO_EXT, \ + VkPastPresentationTimingInfoEXT, UnwrapInPlace(out->swapchain)); \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR, VkPipelineInfoKHR, \ + UnwrapInPlace(out->pipeline)); \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR, VkPipelineExecutableInfoKHR, \ + UnwrapInPlace(out->pipeline)); \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_PUSH_CONSTANTS_INFO, VkPushConstantsInfo, \ + UnwrapInPlace(out->layout)); \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO, \ + VkPushDescriptorSetWithTemplateInfo, UnwrapInPlace(out->layout), \ + UnwrapInPlace(out->descriptorUpdateTemplate)); \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO, VkRenderingAttachmentInfo, \ + UnwrapInPlace(out->imageView), UnwrapInPlace(out->resolveImageView)); \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO, VkRenderPassBeginInfo, \ + UnwrapInPlace(out->renderPass), UnwrapInPlace(out->framebuffer)); \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT, \ + VkRenderingFragmentDensityMapAttachmentInfoEXT, UnwrapInPlace(out->imageView)); \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR, \ + VkRenderingFragmentShadingRateAttachmentInfoKHR, UnwrapInPlace(out->imageView)); \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_KHR, \ + VkReleaseSwapchainImagesInfoKHR, UnwrapInPlace(out->swapchain)); \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT, \ + VkSamplerCaptureDescriptorDataInfoEXT, UnwrapInPlace(out->sampler)); \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO, VkSamplerYcbcrConversionInfo, \ + UnwrapInPlace(out->conversion)); \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO, VkSemaphoreSignalInfo, \ + UnwrapInPlace(out->semaphore)); \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO, VkSemaphoreSubmitInfo, \ + UnwrapInPlace(out->semaphore)); \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT, \ + VkSetDescriptorBufferOffsetsInfoEXT, UnwrapInPlace(out->layout)); \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_SWAPCHAIN_CALIBRATED_TIMESTAMP_INFO_EXT, \ + VkSwapchainCalibratedTimestampInfoEXT, UnwrapInPlace(out->swapchain)); \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO, VkCopyImageToImageInfo, \ + UnwrapInPlace(out->srcImage), UnwrapInPlace(out->dstImage)); \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO, VkCopyImageToMemoryInfo, \ + UnwrapInPlace(out->srcImage)); \ + UNWRAP_STRUCT(VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO, VkCopyMemoryToImageInfo, \ + UnwrapInPlace(out->dstImage)); \ + UNWRAP_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR, \ + VkAcquireNextImageInfoKHR, UnwrapInPlace(out->swapchain), \ + UnwrapInPlace(out->semaphore), UnwrapInPlace(out->fence)); \ + UNWRAP_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR, \ + VkBindImageMemorySwapchainInfoKHR, UnwrapInPlace(out->swapchain)); \ + UNWRAP_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR, VkFenceGetFdInfoKHR, \ + UnwrapInPlace(out->fence)); \ + UNWRAP_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR, \ + VkImageSwapchainCreateInfoKHR, UnwrapInPlace(out->swapchain)); \ + UNWRAP_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR, VkImportFenceFdInfoKHR, \ + UnwrapInPlace(out->fence)); \ + UNWRAP_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR, \ + VkImportSemaphoreFdInfoKHR, UnwrapInPlace(out->semaphore)); \ + UNWRAP_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR, VkMemoryGetFdInfoKHR, \ + UnwrapInPlace(out->memory)); \ + UNWRAP_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR, \ + VkPhysicalDeviceSurfaceInfo2KHR, UnwrapInPlace(out->surface)); \ + UNWRAP_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR, VkSemaphoreGetFdInfoKHR, \ + UnwrapInPlace(out->semaphore)); \ + UNWRAP_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR, VkSwapchainCreateInfoKHR, \ UnwrapInPlace(out->surface), UnwrapInPlace(out->oldSwapchain)); // define cases for structs we don't handle at all - only the body of the case needs to be defined @@ -1191,7 +1202,6 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct, case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT: \ case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_TENSOR_CREATE_INFO_ARM: \ case VK_STRUCTURE_TYPE_EXTERNAL_TENSOR_PROPERTIES_ARM: \ - case VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_4_KHR: \ case VK_STRUCTURE_TYPE_FRAME_BOUNDARY_EXT: \ case VK_STRUCTURE_TYPE_FRAME_BOUNDARY_TENSORS_ARM: \ case VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV: \ @@ -1215,15 +1225,11 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct, case VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT: \ case VK_STRUCTURE_TYPE_IMAGE_ALIGNMENT_CONTROL_CREATE_INFO_MESA: \ case VK_STRUCTURE_TYPE_IMAGE_CONSTRAINTS_INFO_FUCHSIA: \ - case VK_STRUCTURE_TYPE_IMAGE_CREATE_FLAGS_2_CREATE_INFO_KHR: \ case VK_STRUCTURE_TYPE_IMAGE_DESCRIPTOR_INFO_EXT: \ case VK_STRUCTURE_TYPE_IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA: \ - case VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_2_CREATE_INFO_KHR: \ - case VK_STRUCTURE_TYPE_IMAGE_USAGE_FLAGS_2_CREATE_INFO_KHR: \ case VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX: \ case VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX: \ case VK_STRUCTURE_TYPE_IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM: \ - case VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_2_CREATE_INFO_KHR: \ case VK_STRUCTURE_TYPE_IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA: \ case VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT: \ case VK_STRUCTURE_TYPE_IMPORT_MEMORY_METAL_HANDLE_INFO_EXT: \ @@ -1339,7 +1345,6 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct, case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT: \ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ELAPSED_TIMER_QUERY_FEATURES_QCOM: \ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV: \ - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_FLAGS_FEATURES_KHR: \ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_FEATURES_NV: \ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV: \ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_COMPUTE_QUEUE_PROPERTIES_NV: \ @@ -1542,7 +1547,6 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct, case VK_STRUCTURE_TYPE_SHADER_INSTRUMENTATION_CREATE_INFO_ARM: \ case VK_STRUCTURE_TYPE_SHADER_INSTRUMENTATION_METRIC_DESCRIPTION_ARM: \ case VK_STRUCTURE_TYPE_SHADER_MODULE_IDENTIFIER_EXT: \ - case VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_2_KHR: \ case VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP: \ case VK_STRUCTURE_TYPE_SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI: \ case VK_STRUCTURE_TYPE_SUBSAMPLED_IMAGE_FORMAT_PROPERTIES_EXT: \ diff --git a/renderdoc/driver/vulkan/vk_resources.h b/renderdoc/driver/vulkan/vk_resources.h index 4ca158e57..a6817fc79 100644 --- a/renderdoc/driver/vulkan/vk_resources.h +++ b/renderdoc/driver/vulkan/vk_resources.h @@ -949,7 +949,7 @@ struct ImageInfo } aspects = FormatImageAspects(format); - if(ci.usage & VK_IMAGE_USAGE_STORAGE_BIT) + if(GetImageUsageFlags(&ci) & VK_IMAGE_USAGE_STORAGE_BIT) { storage = true; } diff --git a/renderdoc/driver/vulkan/vk_serialise.cpp b/renderdoc/driver/vulkan/vk_serialise.cpp index 3b04cf105..1ae7d572a 100644 --- a/renderdoc/driver/vulkan/vk_serialise.cpp +++ b/renderdoc/driver/vulkan/vk_serialise.cpp @@ -163,6 +163,7 @@ DECL_VKFLAG_EXT(VkPipelineStage, 2); DECL_VKFLAG_EXT(VkAccess, 2); DECL_VKFLAG_EXT(VkAccess, 3KHR); DECL_VKFLAG_EXT(VkFormatFeature, 2); +DECL_VKFLAG_EXT(VkFormatFeature, 4KHR); DECL_VKFLAG_EXT(VkGraphicsPipelineLibrary, EXT); DECL_VKFLAG(VkRendering); DECL_VKFLAG_EXT(VkPresentScaling, KHR); @@ -180,6 +181,8 @@ DECL_VKFLAG_EXT(VkPipelineCreate, 2); DECL_VKFLAG_EXT(VkImageCompression, EXT); DECL_VKFLAG_EXT(VkImageCompressionFixedRate, EXT); DECL_VKFLAG(VkHostImageCopy); +DECL_VKFLAG_EXT(VkImageUsage, 2KHR); +DECL_VKFLAG_EXT(VkImageCreate, 2KHR); // serialise a member as flags - cast to the Bits enum for serialisation so the stringification // picks up the bitfield and doesn't treat it as uint32_t. Then we rename the type back to the base @@ -1244,6 +1247,20 @@ SERIALISE_VK_HANDLES(); PNEXT_STRUCT(VK_STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO, \ VkRenderingInputAttachmentIndexInfo) \ \ + /* VK_KHR_extended_flags */ \ + PNEXT_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_FLAGS_FEATURES_KHR, \ + VkPhysicalDeviceExtendedFlagsFeaturesKHR) \ + PNEXT_STRUCT(VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_4_KHR, VkFormatProperties4KHR) \ + PNEXT_STRUCT(VK_STRUCTURE_TYPE_IMAGE_CREATE_FLAGS_2_CREATE_INFO_KHR, \ + VkImageCreateFlags2CreateInfoKHR) \ + PNEXT_STRUCT(VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_2_CREATE_INFO_KHR, \ + VkImageStencilUsage2CreateInfoKHR) \ + PNEXT_STRUCT(VK_STRUCTURE_TYPE_IMAGE_USAGE_FLAGS_2_CREATE_INFO_KHR, \ + VkImageUsageFlags2CreateInfoKHR) \ + PNEXT_STRUCT(VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_2_CREATE_INFO_KHR, VkImageViewUsage2CreateInfoKHR) \ + PNEXT_STRUCT(VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_2_KHR, \ + VkSharedPresentSurfaceCapabilities2KHR) \ + \ /* VK_KHR_external_fence_capabilities */ \ PNEXT_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO, \ VkPhysicalDeviceExternalFenceInfo) \ @@ -2203,15 +2220,6 @@ SERIALISE_VK_HANDLES(); /* VK_KHR_shader_abort interaction */ \ PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_DEVICE_FAULT_SHADER_ABORT_MESSAGE_INFO_KHR) \ \ - /* VK_KHR_extended_flags */ \ - PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_FLAGS_FEATURES_KHR) \ - PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_4_KHR) \ - PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_IMAGE_CREATE_FLAGS_2_CREATE_INFO_KHR) \ - PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_2_CREATE_INFO_KHR) \ - PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_IMAGE_USAGE_FLAGS_2_CREATE_INFO_KHR) \ - PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_2_CREATE_INFO_KHR) \ - PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_2_KHR) \ - \ /* VK_KHR_internally_synchronized_queues */ \ PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INTERNALLY_SYNCHRONIZED_QUEUES_FEATURES_KHR) \ \ @@ -15703,6 +15711,115 @@ void Deserialise(const VkCustomResolveCreateInfoEXT &el) delete[] el.pColorAttachmentFormats; } +template +void DoSerialise(SerialiserType &ser, VkPhysicalDeviceExtendedFlagsFeaturesKHR &el) +{ + RDCASSERT(ser.IsReading() || + el.sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_FLAGS_FEATURES_KHR); + SerialiseNext(ser, el.sType, el.pNext); + + SERIALISE_MEMBER(extendedFlags); +} + +template <> +void Deserialise(const VkPhysicalDeviceExtendedFlagsFeaturesKHR &el) +{ + DeserialiseNext(el.pNext); +} + +template +void DoSerialise(SerialiserType &ser, VkFormatProperties4KHR &el) +{ + RDCASSERT(ser.IsReading() || el.sType == VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_4_KHR); + SerialiseNext(ser, el.sType, el.pNext); + + SERIALISE_MEMBER_VKFLAGS(VkFormatFeatureFlags4KHR, linearTilingFeatures); + SERIALISE_MEMBER_VKFLAGS(VkFormatFeatureFlags4KHR, optimalTilingFeatures); + SERIALISE_MEMBER_VKFLAGS(VkFormatFeatureFlags4KHR, bufferFeatures); +} + +template <> +void Deserialise(const VkFormatProperties4KHR &el) +{ + DeserialiseNext(el.pNext); +} + +template +void DoSerialise(SerialiserType &ser, VkImageCreateFlags2CreateInfoKHR &el) +{ + RDCASSERT(ser.IsReading() || el.sType == VK_STRUCTURE_TYPE_IMAGE_CREATE_FLAGS_2_CREATE_INFO_KHR); + SerialiseNext(ser, el.sType, el.pNext); + + SERIALISE_MEMBER_VKFLAGS(VkImageCreateFlags2KHR, flags); +} + +template <> +void Deserialise(const VkImageCreateFlags2CreateInfoKHR &el) +{ + DeserialiseNext(el.pNext); +} + +template +void DoSerialise(SerialiserType &ser, VkImageStencilUsage2CreateInfoKHR &el) +{ + RDCASSERT(ser.IsReading() || el.sType == VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_2_CREATE_INFO_KHR); + SerialiseNext(ser, el.sType, el.pNext); + + SERIALISE_MEMBER_VKFLAGS(VkImageUsageFlags2KHR, stencilUsage); +} + +template <> +void Deserialise(const VkImageStencilUsage2CreateInfoKHR &el) +{ + DeserialiseNext(el.pNext); +} + +template +void DoSerialise(SerialiserType &ser, VkImageUsageFlags2CreateInfoKHR &el) +{ + RDCASSERT(ser.IsReading() || el.sType == VK_STRUCTURE_TYPE_IMAGE_USAGE_FLAGS_2_CREATE_INFO_KHR); + SerialiseNext(ser, el.sType, el.pNext); + + SERIALISE_MEMBER_VKFLAGS(VkImageUsageFlags2KHR, usage); +} + +template <> +void Deserialise(const VkImageUsageFlags2CreateInfoKHR &el) +{ + DeserialiseNext(el.pNext); +} + +template +void DoSerialise(SerialiserType &ser, VkImageViewUsage2CreateInfoKHR &el) +{ + RDCASSERT(ser.IsReading() || el.sType == VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_2_CREATE_INFO_KHR); + SerialiseNext(ser, el.sType, el.pNext); + + SERIALISE_MEMBER_VKFLAGS(VkImageUsageFlags2KHR, usage); +} + +template <> +void Deserialise(const VkImageViewUsage2CreateInfoKHR &el) +{ + DeserialiseNext(el.pNext); +} + +template +void DoSerialise(SerialiserType &ser, VkSharedPresentSurfaceCapabilities2KHR &el) +{ + RDCASSERT(ser.IsReading() || + el.sType == VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_2_KHR); + SerialiseNext(ser, el.sType, el.pNext); + + SERIALISE_MEMBER_VKFLAGS(VkImageUsageFlags2KHR, sharedPresentSupportedUsageFlags); +} + +template <> +void Deserialise(const VkSharedPresentSurfaceCapabilities2KHR &el) +{ + DeserialiseNext(el.pNext); +} + // pNext structs - always have deserialise for the next chain INSTANTIATE_SERIALISE_TYPE(VkAccelerationStructureBuildGeometryInfoKHR); INSTANTIATE_SERIALISE_TYPE(VkAccelerationStructureBuildSizesInfoKHR); @@ -15847,6 +15964,7 @@ INSTANTIATE_SERIALISE_TYPE(VkFenceGetFdInfoKHR); INSTANTIATE_SERIALISE_TYPE(VkFilterCubicImageViewImageFormatPropertiesEXT); INSTANTIATE_SERIALISE_TYPE(VkFormatProperties2); INSTANTIATE_SERIALISE_TYPE(VkFormatProperties3); +INSTANTIATE_SERIALISE_TYPE(VkFormatProperties4KHR); INSTANTIATE_SERIALISE_TYPE(VkFragmentShadingRateAttachmentInfoKHR); INSTANTIATE_SERIALISE_TYPE(VkFramebufferAttachmentImageInfo); INSTANTIATE_SERIALISE_TYPE(VkFramebufferAttachmentsCreateInfo); @@ -15862,6 +15980,7 @@ INSTANTIATE_SERIALISE_TYPE(VkImageCompressionControlEXT); INSTANTIATE_SERIALISE_TYPE(VkImageCompressionPropertiesEXT); INSTANTIATE_SERIALISE_TYPE(VkImageCopy2); INSTANTIATE_SERIALISE_TYPE(VkImageCreateInfo); +INSTANTIATE_SERIALISE_TYPE(VkImageCreateFlags2CreateInfoKHR); INSTANTIATE_SERIALISE_TYPE(VkImageDrmFormatModifierExplicitCreateInfoEXT); INSTANTIATE_SERIALISE_TYPE(VkImageDrmFormatModifierListCreateInfoEXT); INSTANTIATE_SERIALISE_TYPE(VkImageDrmFormatModifierPropertiesEXT); @@ -15874,13 +15993,16 @@ INSTANTIATE_SERIALISE_TYPE(VkImagePlaneMemoryRequirementsInfo); INSTANTIATE_SERIALISE_TYPE(VkImageResolve2); INSTANTIATE_SERIALISE_TYPE(VkImageSparseMemoryRequirementsInfo2); INSTANTIATE_SERIALISE_TYPE(VkImageStencilUsageCreateInfo); +INSTANTIATE_SERIALISE_TYPE(VkImageStencilUsage2CreateInfoKHR); INSTANTIATE_SERIALISE_TYPE(VkImageSubresource2); INSTANTIATE_SERIALISE_TYPE(VkImageSwapchainCreateInfoKHR); INSTANTIATE_SERIALISE_TYPE(VkImageToMemoryCopy); +INSTANTIATE_SERIALISE_TYPE(VkImageUsageFlags2CreateInfoKHR); INSTANTIATE_SERIALISE_TYPE(VkImageViewASTCDecodeModeEXT); INSTANTIATE_SERIALISE_TYPE(VkImageViewCaptureDescriptorDataInfoEXT); INSTANTIATE_SERIALISE_TYPE(VkImageViewCreateInfo); INSTANTIATE_SERIALISE_TYPE(VkImageViewUsageCreateInfo); +INSTANTIATE_SERIALISE_TYPE(VkImageViewUsage2CreateInfoKHR); INSTANTIATE_SERIALISE_TYPE(VkImportFenceFdInfoKHR); INSTANTIATE_SERIALISE_TYPE(VkImportMemoryFdInfoKHR); INSTANTIATE_SERIALISE_TYPE(VkImportSemaphoreFdInfoKHR); @@ -15955,6 +16077,7 @@ INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceExtendedDynamicState2FeaturesEXT); INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceExtendedDynamicState3FeaturesEXT); INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceExtendedDynamicState3PropertiesEXT); INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceExtendedDynamicStateFeaturesEXT); +INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceExtendedFlagsFeaturesKHR); INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceExternalBufferInfo); INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceExternalFenceInfo); INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceExternalImageFormatInfo); @@ -16240,6 +16363,7 @@ INSTANTIATE_SERIALISE_TYPE(VkShaderCreateInfoEXT); INSTANTIATE_SERIALISE_TYPE(VkShaderModuleCreateInfo); INSTANTIATE_SERIALISE_TYPE(VkShaderModuleValidationCacheCreateInfoEXT); INSTANTIATE_SERIALISE_TYPE(VkSharedPresentSurfaceCapabilitiesKHR); +INSTANTIATE_SERIALISE_TYPE(VkSharedPresentSurfaceCapabilities2KHR); INSTANTIATE_SERIALISE_TYPE(VkSparseImageFormatProperties2); INSTANTIATE_SERIALISE_TYPE(VkSparseImageMemoryRequirements2); INSTANTIATE_SERIALISE_TYPE(VkSubmitInfo); diff --git a/renderdoc/driver/vulkan/vk_stringise.cpp b/renderdoc/driver/vulkan/vk_stringise.cpp index 40132c813..ed11daae7 100644 --- a/renderdoc/driver/vulkan/vk_stringise.cpp +++ b/renderdoc/driver/vulkan/vk_stringise.cpp @@ -4390,6 +4390,15 @@ rdcstr DoStringise(const VkFormatFeatureFlagBits2 &el) END_BITFIELD_STRINGISE(); } +template <> +rdcstr DoStringise(const VkFormatFeatureFlagBits4KHR &el) +{ + BEGIN_BITFIELD_STRINGISE(VkFormatFeatureFlagBits4KHR); + { + } + END_BITFIELD_STRINGISE(); +} + template <> rdcstr DoStringise(const VkGraphicsPipelineLibraryFlagBitsEXT &el) { @@ -4600,6 +4609,70 @@ rdcstr DoStringise(const VkPipelineCreateFlagBits2 &el) END_BITFIELD_STRINGISE(); } +template <> +rdcstr DoStringise(const VkImageUsageFlagBits2KHR &el) +{ + BEGIN_BITFIELD_STRINGISE(VkImageUsageFlagBits2KHR); + { + STRINGISE_BITFIELD_BIT64(VK_IMAGE_USAGE_2_TRANSFER_SRC_BIT_KHR); + STRINGISE_BITFIELD_BIT64(VK_IMAGE_USAGE_2_TRANSFER_DST_BIT_KHR); + STRINGISE_BITFIELD_BIT64(VK_IMAGE_USAGE_2_SAMPLED_BIT_KHR); + STRINGISE_BITFIELD_BIT64(VK_IMAGE_USAGE_2_STORAGE_BIT_KHR); + STRINGISE_BITFIELD_BIT64(VK_IMAGE_USAGE_2_COLOR_ATTACHMENT_BIT_KHR); + STRINGISE_BITFIELD_BIT64(VK_IMAGE_USAGE_2_DEPTH_STENCIL_ATTACHMENT_BIT_KHR); + STRINGISE_BITFIELD_BIT64(VK_IMAGE_USAGE_2_TRANSIENT_ATTACHMENT_BIT_KHR); + STRINGISE_BITFIELD_BIT64(VK_IMAGE_USAGE_2_INPUT_ATTACHMENT_BIT_KHR); + STRINGISE_BITFIELD_BIT64(VK_IMAGE_USAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR); + STRINGISE_BITFIELD_BIT64(VK_IMAGE_USAGE_2_FRAGMENT_DENSITY_MAP_BIT_EXT); + STRINGISE_BITFIELD_BIT64(VK_IMAGE_USAGE_2_VIDEO_DECODE_DST_BIT_KHR); + STRINGISE_BITFIELD_BIT64(VK_IMAGE_USAGE_2_VIDEO_DECODE_SRC_BIT_KHR); + STRINGISE_BITFIELD_BIT64(VK_IMAGE_USAGE_2_VIDEO_DECODE_DPB_BIT_KHR); + STRINGISE_BITFIELD_BIT64(VK_IMAGE_USAGE_2_VIDEO_ENCODE_DST_BIT_KHR); + STRINGISE_BITFIELD_BIT64(VK_IMAGE_USAGE_2_VIDEO_ENCODE_SRC_BIT_KHR); + STRINGISE_BITFIELD_BIT64(VK_IMAGE_USAGE_2_VIDEO_ENCODE_DPB_BIT_KHR); + STRINGISE_BITFIELD_BIT64(VK_IMAGE_USAGE_2_INVOCATION_MASK_BIT_HUAWEI); + STRINGISE_BITFIELD_BIT64(VK_IMAGE_USAGE_2_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT); + STRINGISE_BITFIELD_BIT64(VK_IMAGE_USAGE_2_SAMPLE_WEIGHT_BIT_QCOM); + STRINGISE_BITFIELD_BIT64(VK_IMAGE_USAGE_2_SAMPLE_BLOCK_MATCH_BIT_QCOM); + STRINGISE_BITFIELD_BIT64(VK_IMAGE_USAGE_2_HOST_TRANSFER_BIT_KHR); + STRINGISE_BITFIELD_BIT64(VK_IMAGE_USAGE_2_TENSOR_ALIASING_BIT_ARM); + STRINGISE_BITFIELD_BIT64(VK_IMAGE_USAGE_2_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR); + STRINGISE_BITFIELD_BIT64(VK_IMAGE_USAGE_2_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR); + STRINGISE_BITFIELD_BIT64(VK_IMAGE_USAGE_2_TILE_MEMORY_BIT_QCOM); + } + END_BITFIELD_STRINGISE(); +} + +template <> +rdcstr DoStringise(const VkImageCreateFlagBits2KHR &el) +{ + BEGIN_BITFIELD_STRINGISE(VkImageCreateFlagBits2KHR); + { + STRINGISE_BITFIELD_BIT64(VK_IMAGE_CREATE_2_SPARSE_BINDING_BIT_KHR); + STRINGISE_BITFIELD_BIT64(VK_IMAGE_CREATE_2_SPARSE_RESIDENCY_BIT_KHR); + STRINGISE_BITFIELD_BIT64(VK_IMAGE_CREATE_2_SPARSE_ALIASED_BIT_KHR); + STRINGISE_BITFIELD_BIT64(VK_IMAGE_CREATE_2_MUTABLE_FORMAT_BIT_KHR); + STRINGISE_BITFIELD_BIT64(VK_IMAGE_CREATE_2_CUBE_COMPATIBLE_BIT_KHR); + STRINGISE_BITFIELD_BIT64(VK_IMAGE_CREATE_2_ALIAS_SINGLE_LAYER_DESCRIPTOR_BIT_KHR); + STRINGISE_BITFIELD_BIT64(VK_IMAGE_CREATE_2_2D_ARRAY_COMPATIBLE_BIT_KHR); + STRINGISE_BITFIELD_BIT64(VK_IMAGE_CREATE_2_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR); + STRINGISE_BITFIELD_BIT64(VK_IMAGE_CREATE_2_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR); + STRINGISE_BITFIELD_BIT64(VK_IMAGE_CREATE_2_EXTENDED_USAGE_BIT_KHR); + STRINGISE_BITFIELD_BIT64(VK_IMAGE_CREATE_2_DISJOINT_BIT_KHR); + STRINGISE_BITFIELD_BIT64(VK_IMAGE_CREATE_2_ALIAS_BIT_KHR); + STRINGISE_BITFIELD_BIT64(VK_IMAGE_CREATE_2_PROTECTED_BIT_KHR); + STRINGISE_BITFIELD_BIT64(VK_IMAGE_CREATE_2_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT); + STRINGISE_BITFIELD_BIT64(VK_IMAGE_CREATE_2_CORNER_SAMPLED_BIT_NV); + STRINGISE_BITFIELD_BIT64(VK_IMAGE_CREATE_2_SUBSAMPLED_BIT_EXT); + STRINGISE_BITFIELD_BIT64(VK_IMAGE_CREATE_2_FRAGMENT_DENSITY_MAP_OFFSET_BIT_EXT); + STRINGISE_BITFIELD_BIT64(VK_IMAGE_CREATE_2_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT); + STRINGISE_BITFIELD_BIT64(VK_IMAGE_CREATE_2_2D_VIEW_COMPATIBLE_BIT_EXT); + STRINGISE_BITFIELD_BIT64(VK_IMAGE_CREATE_2_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT); + STRINGISE_BITFIELD_BIT64(VK_IMAGE_CREATE_2_VIDEO_PROFILE_INDEPENDENT_BIT_KHR); + } + END_BITFIELD_STRINGISE(); +} + template <> rdcstr DoStringise(const VkExtent3D &el) { diff --git a/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp index e9fed4494..774417eb4 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp @@ -3787,6 +3787,13 @@ bool WrappedVulkan::Serialise_vkCreateDevice(SerialiserType &ser, VkPhysicalDevi CHECK_PHYS_EXT_FEATURE(imageSlicedViewOf3D); } END_PHYS_EXT_CHECK(); + + BEGIN_PHYS_EXT_CHECK(VkPhysicalDeviceExtendedFlagsFeaturesKHR, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_FLAGS_FEATURES_KHR); + { + CHECK_PHYS_EXT_FEATURE(extendedFlags); + } + END_PHYS_EXT_CHECK(); } if(availFeatures.depthClamp) diff --git a/renderdoc/driver/vulkan/wrappers/vk_get_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_get_funcs.cpp index 2facbc6c3..997e9d0ff 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_get_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_get_funcs.cpp @@ -89,61 +89,80 @@ void ClampPhysDevAPIVersion(VkPhysicalDeviceProperties *pProperties, VkPhysicalD pProperties->apiVersion = VK_API_VERSION_1_4; } +void WrappedVulkan::PatchStencilUsageInfo(VkImageCreateInfo *info) +{ + VkImageStencilUsageCreateInfo *separateStencilUsage = + (VkImageStencilUsageCreateInfo *)FindNextStruct( + info, VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO); + VkImageStencilUsage2CreateInfoKHR *separateStencilUsage2 = + (VkImageStencilUsage2CreateInfoKHR *)FindNextStruct( + info, VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_2_CREATE_INFO_KHR); + if(separateStencilUsage2) + { + separateStencilUsage2->stencilUsage |= VK_IMAGE_USAGE_SAMPLED_BIT | + VK_IMAGE_USAGE_TRANSFER_SRC_BIT | + VK_IMAGE_USAGE_TRANSFER_DST_BIT; + separateStencilUsage2->stencilUsage &= ~VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT; + + if(info->samples != VK_SAMPLE_COUNT_1_BIT) + { + separateStencilUsage2->stencilUsage |= VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT; + } + } + else if(separateStencilUsage) + { + separateStencilUsage->stencilUsage |= VK_IMAGE_USAGE_SAMPLED_BIT | + VK_IMAGE_USAGE_TRANSFER_SRC_BIT | + VK_IMAGE_USAGE_TRANSFER_DST_BIT; + separateStencilUsage->stencilUsage &= ~VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT; + + if(info->samples != VK_SAMPLE_COUNT_1_BIT) + { + separateStencilUsage->stencilUsage |= VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT; + } + } +} + void WrappedVulkan::PatchImageCreateInfo(VkImageCreateInfo *info, VkFormat *newViewFormatsTempMem) { - info->usage |= VK_IMAGE_USAGE_TRANSFER_SRC_BIT; + VkImageUsageFlags2KHR usage = GetImageUsageFlags(info); + VkImageCreateFlags2KHR flags = GetImageCreateFlags(info); + + usage |= VK_IMAGE_USAGE_TRANSFER_SRC_BIT; if(IsCaptureMode(m_State)) { - info->usage |= VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT; - info->usage &= ~VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT; + usage |= VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT; + usage &= ~VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT; } if(IsYUVFormat(info->format)) - info->flags |= VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT; + flags |= VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT; if(info->samples != VK_SAMPLE_COUNT_1_BIT) { - info->usage |= VK_IMAGE_USAGE_SAMPLED_BIT; - info->flags |= VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT; + usage |= VK_IMAGE_USAGE_SAMPLED_BIT; + flags |= VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT; if(IsCaptureMode(m_State)) { if(!IsDepthOrStencilFormat(info->format)) { if(GetDebugManager() && GetShaderCache()->IsBuffer2MSSupported()) - info->usage |= VK_IMAGE_USAGE_STORAGE_BIT; + usage |= VK_IMAGE_USAGE_STORAGE_BIT; } else { - info->usage |= VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT; + usage |= VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT; } } } - info->flags &= ~VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT; + flags &= ~VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT; - info->flags |= DefaultImageCreateFlags(); + flags |= DefaultImageCreateFlags(); - VkImageStencilUsageCreateInfo *separateStencilUsage = - (VkImageStencilUsageCreateInfo *)FindNextStruct( - info, VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO); - if(separateStencilUsage) - { - separateStencilUsage->stencilUsage |= VK_IMAGE_USAGE_TRANSFER_SRC_BIT; - - if(IsCaptureMode(m_State)) - { - info->usage |= VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT; - info->usage &= ~VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT; - } - - if(info->samples != VK_SAMPLE_COUNT_1_BIT) - { - separateStencilUsage->stencilUsage |= - VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT; - } - } + PatchStencilUsageInfo(info); // similarly for the image format list for MSAA textures, add the UINT cast format we will need if(info->samples != VK_SAMPLE_COUNT_1_BIT) @@ -188,6 +207,9 @@ void WrappedVulkan::PatchImageCreateInfo(VkImageCreateInfo *info, VkFormat *newV newViewFormatsTempMem += formatListInfo->viewFormatCount; } } + + SetImageUsageFlags(info, usage); + SetImageCreateFlags(info, flags); } void WrappedVulkan::vkGetPhysicalDeviceFeatures(VkPhysicalDevice physicalDevice, @@ -321,8 +343,11 @@ VkResult WrappedVulkan::vkGetPhysicalDeviceImageFormatProperties2( // suddenly report as unsupported (all required formats must support these usages), so it can only // make an optional format unsupported which is what we want. VkPhysicalDeviceImageFormatInfo2 info = *pImageFormatInfo; - info.usage |= VK_IMAGE_USAGE_TRANSFER_SRC_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT | - VK_IMAGE_USAGE_SAMPLED_BIT; + + VkImageUsageFlags2KHR usage = GetImageUsageFlags(&info); + usage |= VK_IMAGE_USAGE_TRANSFER_SRC_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT | + VK_IMAGE_USAGE_SAMPLED_BIT; + SetImageUsageFlags(&info, usage); VkResult vkr = ObjDisp(physicalDevice) ->GetPhysicalDeviceImageFormatProperties2(Unwrap(physicalDevice), &info, diff --git a/renderdoc/driver/vulkan/wrappers/vk_misc_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_misc_funcs.cpp index 423082219..7ca31f75c 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_misc_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_misc_funcs.cpp @@ -884,31 +884,37 @@ VkResult WrappedVulkan::vkCreateSampler(VkDevice device, const VkSamplerCreateIn void WrappedVulkan::PatchAttachment(VkFramebufferAttachmentImageInfo *att, VkFormat imgFormat, VkSampleCountFlagBits samples) { + VkImageUsageFlags2KHR usage = GetImageUsageFlags(att); + VkImageCreateFlags2KHR flags = GetImageCreateFlags(att); + // this matches the mutations we do to images, so see vkCreateImage - att->usage |= VK_IMAGE_USAGE_TRANSFER_SRC_BIT; - att->usage |= VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT; - att->usage &= ~VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT; + usage |= VK_IMAGE_USAGE_TRANSFER_SRC_BIT; + usage |= VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT; + usage &= ~VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT; if(IsYUVFormat(imgFormat)) - att->flags |= VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT; + flags |= VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT; if(samples != VK_SAMPLE_COUNT_1_BIT) { - att->usage |= VK_IMAGE_USAGE_SAMPLED_BIT; - att->flags |= VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT; + usage |= VK_IMAGE_USAGE_SAMPLED_BIT; + flags |= VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT; if(!IsDepthOrStencilFormat(imgFormat)) { if(GetDebugManager() && GetShaderCache()->IsBuffer2MSSupported()) - att->usage |= VK_IMAGE_USAGE_STORAGE_BIT; + usage |= VK_IMAGE_USAGE_STORAGE_BIT; } else { - att->usage |= VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT; + usage |= VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT; } } - att->flags &= ~VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT; + flags &= ~VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT; + + SetImageUsageFlags(att, usage); + SetImageCreateFlags(att, flags); } template diff --git a/renderdoc/driver/vulkan/wrappers/vk_resource_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_resource_funcs.cpp index fda29a593..8b3870a3e 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_resource_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_resource_funcs.cpp @@ -2499,12 +2499,13 @@ bool WrappedVulkan::Serialise_vkCreateImage(SerialiserType &ser, VkDevice device { VkImage img = VK_NULL_HANDLE; - VkImageUsageFlags origusage = CreateInfo.usage; + VkImageUsageFlags2KHR origusage = GetImageUsageFlags(&CreateInfo); // ensure we can always display and copy from/to textures - CreateInfo.usage |= VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT | - VK_IMAGE_USAGE_TRANSFER_DST_BIT; - CreateInfo.usage &= ~VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT; + VkImageUsageFlags2KHR patchedUsage = origusage; + patchedUsage |= VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT | + VK_IMAGE_USAGE_TRANSFER_DST_BIT; + patchedUsage &= ~VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT; if(CreateInfo.tiling == VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT) CreateInfo.tiling = VK_IMAGE_TILING_OPTIMAL; @@ -2517,14 +2518,16 @@ bool WrappedVulkan::Serialise_vkCreateImage(SerialiserType &ser, VkDevice device queueFamiles[q] = m_QueueRemapping[queueFamiles[q]][0].family; } + VkImageUsageFlags2KHR flags = GetImageCreateFlags(&CreateInfo); + // need to be able to mutate the format for YUV textures if(IsYUVFormat(CreateInfo.format)) - CreateInfo.flags |= VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT; + flags |= VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT; // ensure we can cast multisampled images, for copying to arrays if((int)CreateInfo.samples > 1) { - CreateInfo.flags |= VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT; + flags |= VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT; // colour targets we do a simple compute copy, for depth-stencil we need // to take a slower path that uses drawing @@ -2535,24 +2538,24 @@ bool WrappedVulkan::Serialise_vkCreateImage(SerialiserType &ser, VkDevice device // capability (and it might be the bug we're trying to work around by disabling the // pipeline) if(GetShaderCache()->IsBuffer2MSSupported()) - CreateInfo.usage |= VK_IMAGE_USAGE_STORAGE_BIT; - CreateInfo.usage |= VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT; + patchedUsage |= VK_IMAGE_USAGE_STORAGE_BIT; + patchedUsage |= VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT; } else { - CreateInfo.usage |= VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT; + patchedUsage |= VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT; } } // create non-subsampled image to be able to copy its content - CreateInfo.flags &= ~VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT; + flags &= ~VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT; - CreateInfo.flags |= DefaultImageCreateFlags(); + flags |= DefaultImageCreateFlags(); APIProps.YUVTextures |= IsYUVFormat(CreateInfo.format); - const bool isSparse = (CreateInfo.flags & (VK_IMAGE_CREATE_SPARSE_BINDING_BIT | - VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT)) != 0; + const bool isSparse = + (flags & (VK_IMAGE_CREATE_SPARSE_BINDING_BIT | VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT)) != 0; if(isSparse) { @@ -2560,21 +2563,7 @@ bool WrappedVulkan::Serialise_vkCreateImage(SerialiserType &ser, VkDevice device } // we search for the separate stencil usage struct now that it's in patchable memory - VkImageStencilUsageCreateInfo *separateStencilUsage = - (VkImageStencilUsageCreateInfo *)FindNextStruct( - &CreateInfo, VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO); - if(separateStencilUsage) - { - separateStencilUsage->stencilUsage |= VK_IMAGE_USAGE_SAMPLED_BIT | - VK_IMAGE_USAGE_TRANSFER_SRC_BIT | - VK_IMAGE_USAGE_TRANSFER_DST_BIT; - separateStencilUsage->stencilUsage &= ~VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT; - - if(CreateInfo.samples != VK_SAMPLE_COUNT_1_BIT) - { - separateStencilUsage->stencilUsage |= VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT; - } - } + PatchStencilUsageInfo(&CreateInfo); rdcarray patchedFormatList; @@ -2648,11 +2637,11 @@ bool WrappedVulkan::Serialise_vkCreateImage(SerialiserType &ser, VkDevice device }; // pass creation info - queryBase.flags = CreateInfo.flags; + queryBase.flags = (VkImageCreateFlags)flags; queryBase.format = CreateInfo.format; queryBase.tiling = CreateInfo.tiling; queryBase.type = CreateInfo.imageType; - queryBase.usage = CreateInfo.usage; + queryBase.usage = (VkImageUsageFlags)patchedUsage; // pass image format list, if the application did VkImageFormatListCreateInfo *appFormatInfo = (VkImageFormatListCreateInfo *)FindNextStruct( @@ -2665,6 +2654,27 @@ bool WrappedVulkan::Serialise_vkCreateImage(SerialiserType &ser, VkDevice device queryBase.pNext = &formatInfo; } + // ditto for expanded usage/flags + VkImageCreateFlags2CreateInfoKHR *appFlags2 = + (VkImageCreateFlags2CreateInfoKHR *)FindNextStruct( + &CreateInfo, VK_STRUCTURE_TYPE_IMAGE_CREATE_FLAGS_2_CREATE_INFO_KHR); + VkImageCreateFlags2CreateInfoKHR flags2; + if(appFlags2) + { + flags2 = *appFlags2; + flags2.pNext = (void *)queryBase.pNext; + queryBase.pNext = &flags2; + } + VkImageUsageFlags2CreateInfoKHR *appUsage2 = (VkImageUsageFlags2CreateInfoKHR *)FindNextStruct( + &CreateInfo, VK_STRUCTURE_TYPE_IMAGE_USAGE_FLAGS_2_CREATE_INFO_KHR); + VkImageUsageFlags2CreateInfoKHR usage2; + if(appUsage2) + { + usage2 = *appUsage2; + usage2.pNext = (void *)queryBase.pNext; + queryBase.pNext = &usage2; + } + for(uint32_t i = 0; i < 32; i++) { VkExternalMemoryHandleTypeFlagBits checkBit = VkExternalMemoryHandleTypeFlagBits(1U << i); @@ -2737,13 +2747,16 @@ bool WrappedVulkan::Serialise_vkCreateImage(SerialiserType &ser, VkDevice device VkImageCreateInfo patched = CreateInfo; + SetImageUsageFlags(&patched, patchedUsage); + SetImageCreateFlags(&patched, flags); + byte *tempMem = GetTempMemory(GetNextPatchSize(patched.pNext)); UnwrapNextChain(m_State, "VkImageCreateInfo", tempMem, (VkBaseInStructure *)&patched); VkResult ret = ObjDisp(device)->CreateImage(Unwrap(device), &patched, NULL, &img); - CreateInfo.usage = origusage; + SetImageUsageFlags(&CreateInfo, origusage); if(ret != VK_SUCCESS) { @@ -2803,31 +2816,31 @@ bool WrappedVulkan::Serialise_vkCreateImage(SerialiserType &ser, VkDevice device { prefix = CreateInfo.arrayLayers > 1 ? "1D Array Image" : "1D Image"; - if(CreateInfo.usage & VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT) + if(origusage & VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT) prefix = "1D Color Attachment"; - else if(CreateInfo.usage & VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT) + else if(origusage & VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT) prefix = "1D " + depth + " Attachment"; } else if(CreateInfo.imageType == VK_IMAGE_TYPE_2D) { prefix = CreateInfo.arrayLayers > 1 ? "2D Array Image" : "2D Image"; - if(CreateInfo.usage & VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT) + if(origusage & VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT) prefix = "2D Color Attachment"; - else if(CreateInfo.usage & VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT) + else if(origusage & VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT) prefix = "2D " + depth + " Attachment"; - else if(CreateInfo.usage & VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT) + else if(origusage & VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT) prefix = "2D Fragment Density Map Attachment"; - else if(CreateInfo.usage & VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR) + else if(origusage & VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR) prefix = "2D Fragment Shading Rate Attachment"; } else if(CreateInfo.imageType == VK_IMAGE_TYPE_3D) { prefix = "3D Image"; - if(CreateInfo.usage & VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT) + if(origusage & VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT) prefix = "3D Color Attachment"; - else if(CreateInfo.usage & VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT) + else if(origusage & VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT) prefix = "3D " + depth + " Attachment"; } @@ -2853,24 +2866,27 @@ VkResult WrappedVulkan::vkCreateImage(VkDevice device, const VkImageCreateInfo * // if you change any properties here, ensure you also update // vkGetDeviceImageMemoryRequirementsKHR - createInfo_adjusted.usage |= VK_IMAGE_USAGE_TRANSFER_SRC_BIT; + VkImageUsageFlags2KHR usage = GetImageUsageFlags(&createInfo_adjusted); + VkImageCreateFlags2KHR flags = GetImageCreateFlags(&createInfo_adjusted); + + usage |= VK_IMAGE_USAGE_TRANSFER_SRC_BIT; // TEMP HACK: Until we define a portable fake hardware, need to match the requirements for usage // on replay, so that the memory requirements are the same if(IsCaptureMode(m_State)) { - createInfo_adjusted.usage |= VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT; - createInfo_adjusted.usage &= ~VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT; + usage |= VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT; + usage &= ~VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT; } // need to be able to mutate the format for YUV textures if(IsYUVFormat(createInfo_adjusted.format)) - createInfo_adjusted.flags |= VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT; + flags |= VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT; if(createInfo_adjusted.samples != VK_SAMPLE_COUNT_1_BIT) { - createInfo_adjusted.usage |= VK_IMAGE_USAGE_SAMPLED_BIT; - createInfo_adjusted.flags |= VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT; + usage |= VK_IMAGE_USAGE_SAMPLED_BIT; + flags |= VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT; // TEMP HACK: matching replay requirements if(IsCaptureMode(m_State)) @@ -2880,21 +2896,21 @@ VkResult WrappedVulkan::vkCreateImage(VkDevice device, const VkImageCreateInfo * // need to check the debug manager here since we might be creating this internal image from // its constructor if(GetDebugManager() && GetShaderCache()->IsBuffer2MSSupported()) - createInfo_adjusted.usage |= VK_IMAGE_USAGE_STORAGE_BIT; - createInfo_adjusted.usage |= VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT; + usage |= VK_IMAGE_USAGE_STORAGE_BIT; + usage |= VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT; } else { - createInfo_adjusted.usage |= VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT; + usage |= VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT; } } } // create non-subsampled image to be able to copy its content - createInfo_adjusted.flags &= ~VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT; + flags &= ~VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT; if(IsCaptureMode(m_State)) - createInfo_adjusted.flags |= DefaultImageCreateFlags(); + flags |= DefaultImageCreateFlags(); size_t tempMemSize = GetNextPatchSize(createInfo_adjusted.pNext); @@ -2914,25 +2930,7 @@ VkResult WrappedVulkan::vkCreateImage(VkDevice device, const VkImageCreateInfo * UnwrapNextChain(m_State, "VkImageCreateInfo", tempMem, (VkBaseInStructure *)&createInfo_adjusted); // we search for the separate stencil usage struct now that it's in patchable memory - VkImageStencilUsageCreateInfo *separateStencilUsage = - (VkImageStencilUsageCreateInfo *)FindNextStruct( - &createInfo_adjusted, VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO); - if(separateStencilUsage) - { - separateStencilUsage->stencilUsage |= VK_IMAGE_USAGE_TRANSFER_SRC_BIT; - - if(IsCaptureMode(m_State)) - { - createInfo_adjusted.usage |= VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT; - createInfo_adjusted.usage &= ~VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT; - } - - if(createInfo_adjusted.samples != VK_SAMPLE_COUNT_1_BIT) - { - separateStencilUsage->stencilUsage |= - VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT; - } - } + PatchStencilUsageInfo(&createInfo_adjusted); // similarly for the image format list for MSAA textures, add the UINT cast format we will need if(createInfo_adjusted.samples != VK_SAMPLE_COUNT_1_BIT) @@ -2977,6 +2975,9 @@ VkResult WrappedVulkan::vkCreateImage(VkDevice device, const VkImageCreateInfo * } } + SetImageUsageFlags(&createInfo_adjusted, usage); + SetImageCreateFlags(&createInfo_adjusted, flags); + VkResult ret; SERIALISE_TIME_CALL( ret = ObjDisp(device)->CreateImage(Unwrap(device), &createInfo_adjusted, NULL, pImage)); @@ -2985,8 +2986,8 @@ VkResult WrappedVulkan::vkCreateImage(VkDevice device, const VkImageCreateInfo * { ResourceId id = GetResourceManager()->WrapResource(ResourceId(), Unwrap(device), *pImage); - const bool isSparse = (pCreateInfo->flags & (VK_IMAGE_CREATE_SPARSE_BINDING_BIT | - VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT)) != 0; + const bool isSparse = + (flags & (VK_IMAGE_CREATE_SPARSE_BINDING_BIT | VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT)) != 0; if(IsCaptureMode(m_State)) { @@ -3023,7 +3024,7 @@ VkResult WrappedVulkan::vkCreateImage(VkDevice device, const VkImageCreateInfo * ResourceInfo &resInfo = *record->resInfo; resInfo.imageInfo = ImageInfo(*pCreateInfo); - record->storable = (pCreateInfo->usage & VK_IMAGE_USAGE_STORAGE_BIT) != 0; + record->storable = (GetImageUsageFlags(pCreateInfo) & VK_IMAGE_USAGE_STORAGE_BIT) != 0; bool isLinear = (pCreateInfo->tiling == VK_IMAGE_TILING_LINEAR); @@ -3180,7 +3181,7 @@ VkResult WrappedVulkan::vkCreateImage(VkDevice device, const VkImageCreateInfo * { uint32_t pageByteSize = resInfo.memreqs.alignment & 0xFFFFFFFFu; - if(pCreateInfo->flags & VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT) + if(flags & VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT) { // must record image and page dimension, and create page tables uint32_t numreqs = 8; @@ -3256,28 +3257,32 @@ VkResult WrappedVulkan::vkCreateImage(VkDevice device, const VkImageCreateInfo * return ret; } -void WrappedVulkan::PatchImageViewUsage(VkImageViewUsageCreateInfo *usage, VkFormat imgFormat, +void WrappedVulkan::PatchImageViewUsage(VkImageViewUsageCreateInfo *usageInfo, VkFormat imgFormat, VkSampleCountFlagBits samples) { + VkImageUsageFlags2KHR usage = GetImageViewUsageFlags(usageInfo); + // this matches the mutations we do to images, so see vkCreateImage - usage->usage |= VK_IMAGE_USAGE_TRANSFER_SRC_BIT; - usage->usage |= VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT; - usage->usage &= ~VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT; + usage |= VK_IMAGE_USAGE_TRANSFER_SRC_BIT; + usage |= VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT; + usage &= ~VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT; if(samples != VK_SAMPLE_COUNT_1_BIT) { - usage->usage |= VK_IMAGE_USAGE_SAMPLED_BIT; + usage |= VK_IMAGE_USAGE_SAMPLED_BIT; if(!IsDepthOrStencilFormat(imgFormat)) { if(GetDebugManager() && GetShaderCache()->IsBuffer2MSSupported()) - usage->usage |= VK_IMAGE_USAGE_STORAGE_BIT; + usage |= VK_IMAGE_USAGE_STORAGE_BIT; } else { - usage->usage |= VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT; + usage |= VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT; } } + + SetImageUsageFlags(usageInfo, usage); } // Image view functions