Merge vk-gl-cts/master into vk-gl-cts/vulkan-cts-next-dev
authorAlexander Galazin <alexander.galazin@arm.com>
Tue, 19 Nov 2019 08:13:29 +0000 (09:13 +0100)
committerAlexander Galazin <alexander.galazin@arm.com>
Tue, 19 Nov 2019 08:13:29 +0000 (09:13 +0100)
Change-Id: Ic223266a4266d5c5116db7d87d5519f2209c1a4e

138 files changed:
AndroidGen.mk
android/cts/master/vk-master.txt
external/fetch_sources.py
external/vulkancts/framework/vulkan/CMakeLists.txt
external/vulkancts/framework/vulkan/vkBasicTypes.inl
external/vulkancts/framework/vulkan/vkConcreteDeviceInterface.inl
external/vulkancts/framework/vulkan/vkCoreFunctionalities.inl
external/vulkancts/framework/vulkan/vkDefs.hpp
external/vulkancts/framework/vulkan/vkDeviceDriverImpl.inl
external/vulkancts/framework/vulkan/vkDeviceExtensions.inl
external/vulkancts/framework/vulkan/vkDeviceFeatures.cpp
external/vulkancts/framework/vulkan/vkDeviceFeatures.hpp
external/vulkancts/framework/vulkan/vkDeviceFeatures.inl
external/vulkancts/framework/vulkan/vkDeviceFeaturesForContextDecl.inl
external/vulkancts/framework/vulkan/vkDeviceFeaturesForContextDefs.inl
external/vulkancts/framework/vulkan/vkDeviceFeaturesForDefaultDeviceDefs.inl
external/vulkancts/framework/vulkan/vkDeviceFunctionPointers.inl
external/vulkancts/framework/vulkan/vkDeviceProperties.cpp [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkDeviceProperties.hpp [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkDeviceProperties.inl [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkDevicePropertiesForContextDecl.inl [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkDevicePropertiesForContextDefs.inl [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkDevicePropertiesForDefaultDeviceDefs.inl [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkExtensionFunctions.inl
external/vulkancts/framework/vulkan/vkFunctionPointerTypes.inl
external/vulkancts/framework/vulkan/vkGetStructureTypeImpl.inl
external/vulkancts/framework/vulkan/vkImageUtil.cpp
external/vulkancts/framework/vulkan/vkImageUtil.hpp
external/vulkancts/framework/vulkan/vkInitDeviceFunctionPointers.inl
external/vulkancts/framework/vulkan/vkMandatoryFeatures.inl
external/vulkancts/framework/vulkan/vkMemUtil.cpp
external/vulkancts/framework/vulkan/vkMemUtil.hpp
external/vulkancts/framework/vulkan/vkNullDriver.cpp
external/vulkancts/framework/vulkan/vkNullDriverImpl.inl
external/vulkancts/framework/vulkan/vkPrograms.cpp
external/vulkancts/framework/vulkan/vkQueryUtil.cpp
external/vulkancts/framework/vulkan/vkQueryUtil.hpp
external/vulkancts/framework/vulkan/vkRefUtil.cpp
external/vulkancts/framework/vulkan/vkRefUtil.hpp
external/vulkancts/framework/vulkan/vkRefUtil.inl
external/vulkancts/framework/vulkan/vkRefUtilImpl.inl
external/vulkancts/framework/vulkan/vkShaderToSpirV.cpp
external/vulkancts/framework/vulkan/vkSpirVAsm.cpp
external/vulkancts/framework/vulkan/vkStrUtil.inl
external/vulkancts/framework/vulkan/vkStrUtilImpl.inl
external/vulkancts/framework/vulkan/vkStructTypes.inl
external/vulkancts/framework/vulkan/vkSupportedExtensions.inl
external/vulkancts/framework/vulkan/vkTypeUtil.inl
external/vulkancts/framework/vulkan/vkVirtualDeviceInterface.inl
external/vulkancts/framework/vulkan/vkVulkan_c.inl
external/vulkancts/modules/vulkan/CMakeLists.txt
external/vulkancts/modules/vulkan/amber/vktAmberTestCase.hpp
external/vulkancts/modules/vulkan/api/vktApiCopiesAndBlittingTests.cpp
external/vulkancts/modules/vulkan/api/vktApiDriverPropertiesTests.cpp
external/vulkancts/modules/vulkan/api/vktApiFeatureInfo.cpp
external/vulkancts/modules/vulkan/api/vktApiImageClearingTests.cpp
external/vulkancts/modules/vulkan/api/vktApiMemoryRequirementInvarianceTests.cpp
external/vulkancts/modules/vulkan/binding_model/vktBindingBufferDeviceAddressTests.cpp
external/vulkancts/modules/vulkan/binding_model/vktBindingDescriptorSetRandomTests.cpp
external/vulkancts/modules/vulkan/binding_model/vktBindingShaderAccessTests.cpp
external/vulkancts/modules/vulkan/clipping/vktClippingTests.cpp
external/vulkancts/modules/vulkan/compute/vktComputeCooperativeMatrixTests.cpp
external/vulkancts/modules/vulkan/conditional_rendering/vktConditionalDrawTests.cpp
external/vulkancts/modules/vulkan/conditional_rendering/vktConditionalRenderingTestUtil.cpp
external/vulkancts/modules/vulkan/descriptor_indexing/vktDescriptorSetsIndexingTests.cpp
external/vulkancts/modules/vulkan/descriptor_indexing/vktDescriptorSetsIndexingTests.hpp
external/vulkancts/modules/vulkan/descriptor_indexing/vktDescriptorSetsIndexingTestsUtils.cpp
external/vulkancts/modules/vulkan/draw/vktDrawIndirectTest.cpp
external/vulkancts/modules/vulkan/draw/vktDrawInstancedTests.cpp
external/vulkancts/modules/vulkan/fragment_shader_interlock/vktFragmentShaderInterlockBasic.cpp
external/vulkancts/modules/vulkan/image/vktImageLoadStoreTests.cpp
external/vulkancts/modules/vulkan/image/vktImageMutableTests.cpp
external/vulkancts/modules/vulkan/imageless_framebuffer/vktImagelessFramebufferTests.cpp
external/vulkancts/modules/vulkan/memory/vktMemoryBindingTests.cpp
external/vulkancts/modules/vulkan/memory_model/vktMemoryModelMessagePassing.cpp
external/vulkancts/modules/vulkan/multiview/vktMultiViewRenderPassUtil.cpp
external/vulkancts/modules/vulkan/multiview/vktMultiViewRenderPassUtil.hpp
external/vulkancts/modules/vulkan/pipeline/CMakeLists.txt
external/vulkancts/modules/vulkan/pipeline/vktPipelineBlendOperationAdvancedTests.cpp
external/vulkancts/modules/vulkan/pipeline/vktPipelineImageSamplingInstance.cpp
external/vulkancts/modules/vulkan/pipeline/vktPipelineSamplerTests.cpp
external/vulkancts/modules/vulkan/pipeline/vktPipelineTimestampTests.cpp
external/vulkancts/modules/vulkan/query_pool/vktQueryPoolOcclusionTests.cpp
external/vulkancts/modules/vulkan/query_pool/vktQueryPoolPerformanceTests.cpp
external/vulkancts/modules/vulkan/query_pool/vktQueryPoolStatisticsTests.cpp
external/vulkancts/modules/vulkan/rasterization/vktRasterizationTests.cpp
external/vulkancts/modules/vulkan/renderpass/vktRenderPassDepthStencilResolveTests.cpp
external/vulkancts/modules/vulkan/renderpass/vktRenderPassMultisampleTests.cpp
external/vulkancts/modules/vulkan/renderpass/vktRenderPassTestsUtil.cpp
external/vulkancts/modules/vulkan/renderpass/vktRenderPassTestsUtil.hpp
external/vulkancts/modules/vulkan/shaderexecutor/vktAtomicOperationTests.cpp
external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderDiscardTests.cpp
external/vulkancts/modules/vulkan/spirv_assembly/CMakeLists.txt
external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmComputeShaderCase.cpp
external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmComputeShaderTestUtil.cpp
external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmComputeShaderTestUtil.hpp
external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmFloatControlsExtensionlessTests.cpp [new file with mode: 0644]
external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmFloatControlsExtensionlessTests.hpp [new file with mode: 0644]
external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmFloatControlsTests.cpp
external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmGraphicsShaderTestUtil.cpp
external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmGraphicsShaderTestUtil.hpp
external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmInstructionTests.cpp
external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmSpirvVersion1p4Tests.cpp
external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmSpirvVersionTests.cpp
external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmUtils.cpp
external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmUtils.hpp
external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmVariablePointersTests.cpp
external/vulkancts/modules/vulkan/ssbo/vktSSBOLayoutCase.cpp
external/vulkancts/modules/vulkan/subgroups/vktSubgroupsBallotBroadcastTests.cpp
external/vulkancts/modules/vulkan/subgroups/vktSubgroupsTestsUtils.cpp
external/vulkancts/modules/vulkan/subgroups/vktSubgroupsTestsUtils.hpp
external/vulkancts/modules/vulkan/synchronization/vktSynchronizationBasicSemaphoreTests.cpp
external/vulkancts/modules/vulkan/synchronization/vktSynchronizationCrossInstanceSharingTests.cpp
external/vulkancts/modules/vulkan/synchronization/vktSynchronizationOperationMultiQueueTests.cpp
external/vulkancts/modules/vulkan/synchronization/vktSynchronizationOperationSingleQueueTests.cpp
external/vulkancts/modules/vulkan/synchronization/vktSynchronizationSignalOrderTests.cpp
external/vulkancts/modules/vulkan/synchronization/vktSynchronizationSmokeTests.cpp
external/vulkancts/modules/vulkan/synchronization/vktSynchronizationTimelineSemaphoreTests.cpp
external/vulkancts/modules/vulkan/texture/vktTextureFilteringTests.cpp
external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackFuzzLayoutCase.cpp
external/vulkancts/modules/vulkan/transform_feedback/vktTransformFeedbackSimpleTests.cpp
external/vulkancts/modules/vulkan/util/vktExternalMemoryUtil.cpp
external/vulkancts/modules/vulkan/util/vktExternalMemoryUtil.hpp
external/vulkancts/modules/vulkan/vktBuildPrograms.cpp
external/vulkancts/modules/vulkan/vktCustomInstancesDevices.cpp
external/vulkancts/modules/vulkan/vktTestCase.cpp
external/vulkancts/modules/vulkan/vktTestCase.hpp
external/vulkancts/modules/vulkan/vktTestPackage.cpp
external/vulkancts/modules/vulkan/wsi/vktWsiIncrementalPresentTests.cpp
external/vulkancts/modules/vulkan/wsi/vktWsiSurfaceTests.cpp
external/vulkancts/modules/vulkan/ycbcr/vktYCbCrUtil.cpp
external/vulkancts/mustpass/master/vk-default-no-waivers.txt
external/vulkancts/mustpass/master/vk-default.txt
external/vulkancts/scripts/build_spirv_binaries.py
external/vulkancts/scripts/gen_framework.py
external/vulkancts/scripts/src/extensions_data.txt
external/vulkancts/scripts/src/mandatory_features.txt
external/vulkancts/scripts/src/vulkan_core.h

index 8a6d0ec..70e098c 100644 (file)
@@ -36,6 +36,7 @@ LOCAL_SRC_FILES := \
        external/vulkancts/framework/vulkan/vkDebugReportUtil.cpp \
        external/vulkancts/framework/vulkan/vkDefs.cpp \
        external/vulkancts/framework/vulkan/vkDeviceFeatures.cpp \
+       external/vulkancts/framework/vulkan/vkDeviceProperties.cpp \
        external/vulkancts/framework/vulkan/vkDeviceUtil.cpp \
        external/vulkancts/framework/vulkan/vkImageUtil.cpp \
        external/vulkancts/framework/vulkan/vkImageWithMemory.cpp \
@@ -315,6 +316,7 @@ LOCAL_SRC_FILES := \
        external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmComputeShaderTestUtil.cpp \
        external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmConditionalBranchTests.cpp \
        external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmCrossStageInterfaceTests.cpp \
+       external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmFloatControlsExtensionlessTests.cpp \
        external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmFloatControlsTests.cpp \
        external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmFromHlslTests.cpp \
        external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmGraphicsShaderTestUtil.cpp \
index 68d5d08..776829e 100644 (file)
@@ -1426,6 +1426,29 @@ dEQP-VK.api.info.get_physical_device_properties2.properties
 dEQP-VK.api.info.get_physical_device_properties2.format_properties
 dEQP-VK.api.info.get_physical_device_properties2.queue_family_properties
 dEQP-VK.api.info.get_physical_device_properties2.memory_properties
+dEQP-VK.api.info.vulkan1p2.features
+dEQP-VK.api.info.vulkan1p2.properties
+dEQP-VK.api.info.vulkan1p2.feature_extensions_consistency
+dEQP-VK.api.info.vulkan1p2.property_extensions_consistency
+dEQP-VK.api.info.vulkan1p2.feature_bits_influence
+dEQP-VK.api.info.vulkan1p2_limits_validation.general
+dEQP-VK.api.info.vulkan1p2_limits_validation.khr_push_descriptor
+dEQP-VK.api.info.vulkan1p2_limits_validation.khr_multiview
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_discard_rectangles
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_sample_locations
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_external_memory_host
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_blend_operation_advanced
+dEQP-VK.api.info.vulkan1p2_limits_validation.khr_maintenance_3
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_conservative_rasterization
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_descriptor_indexing
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_inline_uniform_block
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_vertex_attribute_divisor
+dEQP-VK.api.info.vulkan1p2_limits_validation.nv_mesh_shader
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_transform_feedback
+dEQP-VK.api.info.vulkan1p2_limits_validation.fragment_density_map
+dEQP-VK.api.info.vulkan1p2_limits_validation.nv_ray_tracing
+dEQP-VK.api.info.vulkan1p2_limits_validation.timeline_semaphore
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_line_rasterization
 dEQP-VK.api.info.image_format_properties2.1d.optimal.r4g4_unorm_pack8
 dEQP-VK.api.info.image_format_properties2.1d.optimal.r4g4b4a4_unorm_pack16
 dEQP-VK.api.info.image_format_properties2.1d.optimal.b4g4r4a4_unorm_pack16
@@ -296897,6 +296920,24 @@ dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convert.store.mu
 dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convert.store.replay.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convert.store.replay.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.store.replay.std140.vert
 dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.load.nostore.single.std140.vert
@@ -296933,6 +296974,24 @@ dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convert.store.m
 dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convert.store.replay.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convert.store.replay.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.store.replay.std140.vert
 dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.load.nostore.single.std140.vert
@@ -296969,6 +297028,24 @@ dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convert.store.mu
 dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convert.store.replay.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convert.store.replay.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.store.replay.std140.vert
 dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.load.nostore.single.std140.vert
@@ -297005,6 +297082,24 @@ dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convert.store.m
 dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convert.store.replay.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convert.store.replay.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.store.replay.std140.vert
 dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.load.nostore.single.std140.vert
@@ -297077,6 +297172,42 @@ dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convert.store.re
 dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convert.store.replay.scalar.comp
 dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convert.store.replay.scalar.frag
 dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convert.store.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.replay.scalar.vert
 dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.load.nostore.single.std140.vert
@@ -297149,6 +297280,42 @@ dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convert.store.r
 dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convert.store.replay.scalar.comp
 dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convert.store.replay.scalar.frag
 dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convert.store.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.replay.scalar.vert
 dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.load.nostore.single.std140.vert
@@ -297221,6 +297388,42 @@ dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convert.store.re
 dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convert.store.replay.scalar.comp
 dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convert.store.replay.scalar.frag
 dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convert.store.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.replay.scalar.vert
 dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.load.nostore.single.std140.vert
@@ -297293,6 +297496,42 @@ dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convert.store.r
 dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convert.store.replay.scalar.comp
 dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convert.store.replay.scalar.frag
 dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convert.store.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.replay.scalar.vert
 dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.load.nostore.single.std140.vert
@@ -297365,6 +297604,42 @@ dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convert.store.re
 dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convert.store.replay.scalar.comp
 dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convert.store.replay.scalar.frag
 dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convert.store.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.replay.scalar.vert
 dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.load.nostore.single.std140.vert
@@ -297437,6 +297712,42 @@ dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convert.store.r
 dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convert.store.replay.scalar.comp
 dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convert.store.replay.scalar.frag
 dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convert.store.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.replay.scalar.vert
 dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.load.nostore.single.std140.vert
@@ -297473,6 +297784,24 @@ dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convert.store.mu
 dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convert.store.replay.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convert.store.replay.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.store.replay.std140.vert
 dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.load.nostore.single.std140.vert
@@ -297509,6 +297838,24 @@ dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convert.store.m
 dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convert.store.replay.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convert.store.replay.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.store.replay.std140.vert
 dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.load.nostore.single.std140.vert
@@ -297545,6 +297892,24 @@ dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convert.store.mu
 dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convert.store.replay.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convert.store.replay.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.store.replay.std140.vert
 dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.load.nostore.single.std140.vert
@@ -297581,6 +297946,24 @@ dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convert.store.m
 dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convert.store.replay.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convert.store.replay.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.store.replay.std140.vert
 dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.load.nostore.single.std140.vert
@@ -297617,6 +298000,24 @@ dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convert.store.m
 dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convert.store.replay.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convert.store.replay.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.store.replay.std140.vert
 dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.load.nostore.single.std140.vert
@@ -297653,6 +298054,24 @@ dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convert.store.
 dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convert.store.replay.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convert.store.replay.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.store.replay.std140.vert
 dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.load.nostore.single.std140.vert
@@ -297689,6 +298108,24 @@ dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convert.store.m
 dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convert.store.replay.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convert.store.replay.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.store.replay.std140.vert
 dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.load.nostore.single.std140.vert
@@ -297725,6 +298162,24 @@ dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convert.store.
 dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convert.store.replay.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convert.store.replay.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.store.replay.std140.vert
 dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.load.nostore.single.std140.vert
@@ -297761,6 +298216,24 @@ dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convert.store.m
 dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convert.store.replay.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convert.store.replay.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.store.replay.std140.vert
 dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.load.nostore.single.std140.vert
@@ -297797,6 +298270,24 @@ dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convert.store.
 dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convert.store.replay.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convert.store.replay.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.store.replay.std140.vert
 dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.load.nostore.single.std140.vert
@@ -297833,6 +298324,24 @@ dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convert.store.m
 dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convert.store.replay.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convert.store.replay.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.store.replay.std140.vert
 dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.load.nostore.single.std140.vert
@@ -297869,11 +298378,30 @@ dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convert.store.
 dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convert.store.replay.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convert.store.replay.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.store.replay.std140.vert
 dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_0_compute
 dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_1_compute
 dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_2_compute
 dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_3_compute
 dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_4_compute
+dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_5_compute
 dEQP-VK.spirv_assembly.instruction.compute.localsize.literal_localsize
 dEQP-VK.spirv_assembly.instruction.compute.localsize.literal_and_specid_localsize
 dEQP-VK.spirv_assembly.instruction.compute.localsize.specid_localsize
@@ -298404,6 +298932,36 @@ dEQP-VK.spirv_assembly.instruction.compute.shader_default_output.float.uninitial
 dEQP-VK.spirv_assembly.instruction.compute.opnmin.all
 dEQP-VK.spirv_assembly.instruction.compute.opnmax.all
 dEQP-VK.spirv_assembly.instruction.compute.opnclamp.all
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp16_denorm_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp16_denorm_flush_to_zero
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp16_signed_zero_inf_nan_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp16_rounding_mode_rte
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp16_rounding_mode_rtz
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp32_denorm_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp32_denorm_flush_to_zero
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp32_signed_zero_inf_nan_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp32_rounding_mode_rte
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp32_rounding_mode_rtz
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp64_denorm_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp64_denorm_flush_to_zero
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp64_signed_zero_inf_nan_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp64_rounding_mode_rte
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp64_rounding_mode_rtz
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp16_denorm_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp16_denorm_flush_to_zero
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp16_signed_zero_inf_nan_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp16_rounding_mode_rte
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp16_rounding_mode_rtz
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp32_denorm_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp32_denorm_flush_to_zero
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp32_signed_zero_inf_nan_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp32_rounding_mode_rte
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp32_rounding_mode_rtz
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp64_denorm_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp64_denorm_flush_to_zero
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp64_signed_zero_inf_nan_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp64_rounding_mode_rte
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp64_rounding_mode_rtz
 dEQP-VK.spirv_assembly.instruction.compute.android.opsrem.positive
 dEQP-VK.spirv_assembly.instruction.compute.android.opsrem.all
 dEQP-VK.spirv_assembly.instruction.compute.android.opsmod.positive
@@ -302002,6 +302560,11 @@ dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_4_tesselation_evalua
 dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_4_tesselation_control
 dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_4_geometry
 dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_4_fragment
+dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_5_vertex
+dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_5_tesselation_evaluation
+dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_5_tesselation_control
+dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_5_geometry
+dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_5_fragment
 dEQP-VK.spirv_assembly.instruction.graphics.opnop.opnop_vert
 dEQP-VK.spirv_assembly.instruction.graphics.opnop.opnop_tessc
 dEQP-VK.spirv_assembly.instruction.graphics.opnop.opnop_tesse
@@ -488921,201 +489484,301 @@ dEQP-VK.subgroups.ballot.ext_shader_subgroup_ballot.framebuffer.tess_control
 dEQP-VK.subgroups.ballot.ext_shader_subgroup_ballot.framebuffer.geometry
 dEQP-VK.subgroups.ballot.ext_shader_subgroup_ballot.framebuffer.vertex
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_int8_t
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_int8_t
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_int8_t
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_i8vec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_i8vec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_i8vec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_i8vec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_i8vec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_i8vec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_i8vec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_i8vec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_i8vec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uint8_t
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_uint8_t
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uint8_t
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_u8vec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_u8vec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_u8vec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_u8vec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_u8vec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_u8vec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_u8vec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_u8vec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_u8vec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_int16_t
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_int16_t
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_int16_t
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_i16vec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_i16vec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_i16vec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_i16vec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_i16vec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_i16vec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_i16vec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_i16vec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_i16vec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uint16_t
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_uint16_t
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uint16_t
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_u16vec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_u16vec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_u16vec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_u16vec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_u16vec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_u16vec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_u16vec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_u16vec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_u16vec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_int
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_int
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_int
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_ivec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_ivec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_ivec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_ivec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_ivec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_ivec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_ivec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_ivec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_ivec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uint
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_uint
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uint
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uvec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_uvec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uvec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uvec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_uvec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uvec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uvec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_uvec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uvec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_int64_t
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_int64_t
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_int64_t
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_i64vec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_i64vec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_i64vec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_i64vec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_i64vec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_i64vec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_i64vec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_i64vec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_i64vec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uint64_t
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_uint64_t
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uint64_t
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_u64vec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_u64vec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_u64vec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_u64vec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_u64vec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_u64vec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_u64vec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_u64vec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_u64vec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_float16_t
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_float16_t
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_float16_t
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_f16vec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_f16vec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_f16vec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_f16vec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_f16vec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_f16vec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_f16vec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_f16vec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_f16vec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_float
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_float
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_float
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_vec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_vec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_vec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_vec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_vec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_vec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_vec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_vec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_vec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_double
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_double
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_double
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_dvec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_dvec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_dvec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_dvec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_dvec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_dvec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_dvec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_dvec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_dvec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_bool
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_bool
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_bool
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_bvec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_bvec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_bvec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_bvec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_bvec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_bvec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_bvec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_bvec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_bvec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_int8_t
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_int8_t
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_int8_t
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_i8vec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_i8vec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_i8vec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_i8vec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_i8vec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_i8vec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_i8vec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_i8vec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_i8vec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_uint8_t
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_uint8_t
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uint8_t
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_u8vec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_u8vec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_u8vec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_u8vec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_u8vec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_u8vec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_u8vec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_u8vec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_u8vec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_int16_t
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_int16_t
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_int16_t
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_i16vec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_i16vec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_i16vec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_i16vec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_i16vec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_i16vec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_i16vec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_i16vec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_i16vec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_uint16_t
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_uint16_t
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uint16_t
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_u16vec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_u16vec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_u16vec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_u16vec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_u16vec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_u16vec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_u16vec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_u16vec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_u16vec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_int
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_int
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_int
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_ivec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_ivec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_ivec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_ivec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_ivec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_ivec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_ivec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_ivec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_ivec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_uint
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_uint
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uint
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_uvec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_uvec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uvec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_uvec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_uvec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uvec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_uvec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_uvec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uvec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_int64_t
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_int64_t
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_int64_t
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_i64vec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_i64vec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_i64vec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_i64vec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_i64vec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_i64vec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_i64vec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_i64vec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_i64vec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_uint64_t
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_uint64_t
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uint64_t
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_u64vec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_u64vec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_u64vec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_u64vec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_u64vec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_u64vec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_u64vec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_u64vec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_u64vec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_float16_t
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_float16_t
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_float16_t
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_f16vec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_f16vec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_f16vec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_f16vec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_f16vec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_f16vec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_f16vec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_f16vec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_f16vec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_float
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_float
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_float
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_vec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_vec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_vec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_vec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_vec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_vec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_vec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_vec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_vec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_double
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_double
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_double
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_dvec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_dvec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_dvec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_dvec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_dvec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_dvec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_dvec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_dvec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_dvec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_bool
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_bool
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_bool
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_bvec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_bvec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_bvec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_bvec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_bvec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_bvec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_bvec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_bvec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_bvec4
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int8_tvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int8_ttess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int8_ttess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int8_tgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int8_tvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int8_ttess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int8_ttess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int8_tgeometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_int8_tvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_int8_ttess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_int8_ttess_control
@@ -489124,6 +489787,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec2tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec2geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i8vec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i8vec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i8vec2tess_control
@@ -489132,6 +489799,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec3tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec3geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i8vec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i8vec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i8vec3tess_control
@@ -489140,6 +489811,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec4tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec4geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i8vec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i8vec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i8vec4tess_control
@@ -489148,6 +489823,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint8_tvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint8_ttess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint8_ttess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint8_tgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint8_tvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint8_ttess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint8_ttess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint8_tgeometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uint8_tvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uint8_ttess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uint8_ttess_control
@@ -489156,6 +489835,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec2tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec2geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u8vec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u8vec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u8vec2tess_control
@@ -489164,6 +489847,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec3tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec3geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u8vec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u8vec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u8vec3tess_control
@@ -489172,6 +489859,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec4tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec4geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u8vec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u8vec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u8vec4tess_control
@@ -489180,6 +489871,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int16_tvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int16_ttess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int16_ttess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int16_tgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int16_tvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int16_ttess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int16_ttess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int16_tgeometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_int16_tvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_int16_ttess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_int16_ttess_control
@@ -489188,6 +489883,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec2tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec2geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i16vec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i16vec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i16vec2tess_control
@@ -489196,6 +489895,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec3tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec3geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i16vec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i16vec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i16vec3tess_control
@@ -489204,6 +489907,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec4tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec4geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i16vec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i16vec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i16vec4tess_control
@@ -489212,6 +489919,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint16_tvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint16_ttess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint16_ttess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint16_tgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint16_tvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint16_ttess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint16_ttess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint16_tgeometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uint16_tvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uint16_ttess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uint16_ttess_control
@@ -489220,6 +489931,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec2tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec2geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u16vec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u16vec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u16vec2tess_control
@@ -489228,6 +489943,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec3tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec3geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u16vec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u16vec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u16vec3tess_control
@@ -489236,6 +489955,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec4tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec4geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u16vec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u16vec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u16vec4tess_control
@@ -489244,6 +489967,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_intvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_inttess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_inttess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_intgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_intvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_inttess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_inttess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_intgeometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_intvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_inttess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_inttess_control
@@ -489252,6 +489979,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec2tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec2geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec2tess_control
@@ -489260,6 +489991,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec3tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec3geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec3tess_control
@@ -489268,6 +490003,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec4tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec4geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec4tess_control
@@ -489276,6 +490015,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uintvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uinttess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uinttess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uintgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uintvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uinttess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uinttess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uintgeometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uintvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uinttess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uinttess_control
@@ -489284,6 +490027,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec2tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec2geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec2tess_control
@@ -489292,6 +490039,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec3tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec3geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec3tess_control
@@ -489300,6 +490051,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec4tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec4geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec4tess_control
@@ -489308,6 +490063,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int64_tvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int64_ttess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int64_ttess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int64_tgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int64_tvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int64_ttess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int64_ttess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int64_tgeometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_int64_tvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_int64_ttess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_int64_ttess_control
@@ -489316,6 +490075,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec2tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec2geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i64vec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i64vec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i64vec2tess_control
@@ -489324,6 +490087,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec3tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec3geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i64vec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i64vec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i64vec3tess_control
@@ -489332,6 +490099,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec4tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec4geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i64vec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i64vec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i64vec4tess_control
@@ -489340,6 +490111,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint64_tvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint64_ttess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint64_ttess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint64_tgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint64_tvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint64_ttess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint64_ttess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint64_tgeometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uint64_tvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uint64_ttess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uint64_ttess_control
@@ -489348,6 +490123,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec2tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec2geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u64vec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u64vec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u64vec2tess_control
@@ -489356,6 +490135,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec3tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec3geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u64vec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u64vec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u64vec3tess_control
@@ -489364,6 +490147,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec4tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec4geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u64vec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u64vec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u64vec4tess_control
@@ -489372,6 +490159,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_float16_tvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_float16_ttess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_float16_ttess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_float16_tgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_float16_tvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_float16_ttess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_float16_ttess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_float16_tgeometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_float16_tvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_float16_ttess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_float16_ttess_control
@@ -489380,6 +490171,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec2tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec2geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_f16vec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_f16vec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_f16vec2tess_control
@@ -489388,6 +490183,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec3tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec3geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_f16vec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_f16vec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_f16vec3tess_control
@@ -489396,6 +490195,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec4tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec4geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_f16vec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_f16vec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_f16vec4tess_control
@@ -489404,6 +490207,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_floatvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_floattess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_floattess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_floatgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_floatvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_floattess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_floattess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_floatgeometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_floatvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_floattess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_floattess_control
@@ -489412,6 +490219,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec2tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec2geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec2tess_control
@@ -489420,6 +490231,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec3tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec3geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec3tess_control
@@ -489428,6 +490243,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec4tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec4geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec4tess_control
@@ -489436,6 +490255,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_doublevertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_doubletess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_doubletess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_doublegeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_doublevertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_doubletess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_doubletess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_doublegeometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_doublevertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_doubletess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_doubletess_control
@@ -489444,6 +490267,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec2tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec2geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec2tess_control
@@ -489452,6 +490279,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec3tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec3geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec3tess_control
@@ -489460,6 +490291,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec4tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec4geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec4tess_control
@@ -489468,6 +490303,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_boolvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_booltess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_booltess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_boolgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_boolvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_booltess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_booltess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_boolgeometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_boolvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_booltess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_booltess_control
@@ -489476,6 +490315,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec2tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec2geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec2tess_control
@@ -489484,6 +490327,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec3tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec3geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec3tess_control
@@ -489492,26 +490339,40 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec4tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec4geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec4tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec4geometry
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.graphics.subgroupbroadcast_int
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.graphics.subgroupbroadcast_nonconst_int
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.graphics.subgroupbroadcastfirst_int
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.graphics.subgroupbroadcast_uint
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.graphics.subgroupbroadcast_nonconst_uint
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.graphics.subgroupbroadcastfirst_uint
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.graphics.subgroupbroadcast_float
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.graphics.subgroupbroadcast_nonconst_float
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.graphics.subgroupbroadcastfirst_float
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.compute.subgroupbroadcast_int
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.compute.subgroupbroadcast_nonconst_int
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.compute.subgroupbroadcastfirst_int
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.compute.subgroupbroadcast_uint
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.compute.subgroupbroadcast_nonconst_uint
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.compute.subgroupbroadcastfirst_uint
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.compute.subgroupbroadcast_float
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.compute.subgroupbroadcast_nonconst_float
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.compute.subgroupbroadcastfirst_float
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_intvertex
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_inttess_eval
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_inttess_control
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_intgeometry
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_intvertex
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_inttess_eval
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_inttess_control
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_intgeometry
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcastfirst_intvertex
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcastfirst_inttess_eval
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcastfirst_inttess_control
@@ -489520,6 +490381,10 @@ dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgro
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_uinttess_eval
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_uinttess_control
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_uintgeometry
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_uintvertex
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_uinttess_eval
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_uinttess_control
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_uintgeometry
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcastfirst_uintvertex
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcastfirst_uinttess_eval
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcastfirst_uinttess_control
@@ -489528,6 +490393,10 @@ dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgro
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_floattess_eval
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_floattess_control
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_floatgeometry
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_floatvertex
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_floattess_eval
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_floattess_control
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_floatgeometry
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcastfirst_floatvertex
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcastfirst_floattess_eval
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcastfirst_floattess_control
@@ -550643,6 +551512,11 @@ dEQP-VK.graphicsfuzz.while-inside-switch
 dEQP-VK.graphicsfuzz.write-before-break
 dEQP-VK.graphicsfuzz.write-red-in-loop-nest
 dEQP-VK.graphicsfuzz.wrong-color-in-always-false-if
+dEQP-VK.imageless_framebuffer.color
+dEQP-VK.imageless_framebuffer.depth_stencil
+dEQP-VK.imageless_framebuffer.color_resolve
+dEQP-VK.imageless_framebuffer.depth_stencil_resolve
+dEQP-VK.imageless_framebuffer.multisubpass
 dEQP-VK.transform_feedback.simple.basic_1_256
 dEQP-VK.transform_feedback.simple.basic_beginqueryindexed_streamid_0_1_256
 dEQP-VK.transform_feedback.simple.basic_endqueryindexed_streamid_0_1_256
@@ -553295,11 +554169,6 @@ dEQP-VK.descriptor_indexing.uniform_buffer_in_loop
 dEQP-VK.descriptor_indexing.storage_buffer_dynamic_in_loop
 dEQP-VK.descriptor_indexing.uniform_buffer_dynamic_in_loop
 dEQP-VK.descriptor_indexing.input_attachment_in_loop
-dEQP-VK.imageless_framebuffer.color
-dEQP-VK.imageless_framebuffer.depth_stencil
-dEQP-VK.imageless_framebuffer.color_resolve
-dEQP-VK.imageless_framebuffer.depth_stencil_resolve
-dEQP-VK.imageless_framebuffer.multisubpass
 dEQP-VK.fragment_shader_interlock.basic.nodiscard.image.pixel_ordered.1xaa.no_sample_shading.8x8
 dEQP-VK.fragment_shader_interlock.basic.nodiscard.image.pixel_ordered.1xaa.no_sample_shading.16x16
 dEQP-VK.fragment_shader_interlock.basic.nodiscard.image.pixel_ordered.1xaa.no_sample_shading.32x32
index 072b845..1b14fe5 100644 (file)
@@ -314,14 +314,14 @@ PACKAGES = [
                "e7b5f0aa5b1b0eadc63a1c624c0ca7f5af133aa857d6a4271b0ef3d0bdb6868e",
                "renderdoc"),
        GitRepo(
-               "https://github.com/KhronosGroup/SPIRV-Tools.git",
-               None,
-               "c1d42038f79a926ba293556dbc325d4a90d452d0",
+               "https://gitlab.khronos.org/spirv/spirv-tools.git",
+               "git@gitlab.khronos.org:spirv/spirv-tools.git",
+               "d478bdb1e5286e818cf2e0ba3ee42ebe64d519f3",
                "spirv-tools"),
        GitRepo(
                "https://github.com/KhronosGroup/glslang.git",
                None,
-               "1ff0c181bb37b06371e2ffa2810d473c5e01c9b7",
+               "ee8e9c15222c2aff93dfea451b1e8a892497ec2d",
                "glslang",
                removeTags = ["master-tot"]),
        GitRepo(
index ee7c3fe..a8273e7 100644 (file)
@@ -71,6 +71,9 @@ set(VKUTILNOSHADER_SRCS
        vkDeviceFeatures.hpp
        vkDeviceFeatures.cpp
        vkDeviceFeatures.inl
+       vkDeviceProperties.hpp
+       vkDeviceProperties.cpp
+       vkDeviceProperties.inl
        )
 
 set(VKUTIL_SRCS
index 7420368..58d4395 100644 (file)
@@ -3,10 +3,11 @@
  */
 #define VK_API_VERSION_1_0                                     (static_cast<deUint32>                  (VK_MAKE_VERSION(1, 0, 0)))
 #define VK_API_VERSION_1_1                                     (static_cast<deUint32>                  (VK_MAKE_VERSION(1, 1, 0)))
+#define VK_API_VERSION_1_2                                     (static_cast<deUint32>                  (VK_MAKE_VERSION(1, 2, 0)))
 #define VK_MAX_PHYSICAL_DEVICE_NAME_SIZE       (static_cast<size_t>                    (256))
 #define VK_MAX_EXTENSION_NAME_SIZE                     (static_cast<size_t>                    (256))
-#define VK_MAX_DRIVER_NAME_SIZE_KHR                    (static_cast<size_t>                    (256))
-#define VK_MAX_DRIVER_INFO_SIZE_KHR                    (static_cast<size_t>                    (256))
+#define VK_MAX_DRIVER_NAME_SIZE                                (static_cast<size_t>                    (256))
+#define VK_MAX_DRIVER_INFO_SIZE                                (static_cast<size_t>                    (256))
 #define VK_UUID_SIZE                                           (static_cast<size_t>                    (16))
 #define VK_LUID_SIZE                                           (static_cast<size_t>                    (8))
 #define VK_MAX_MEMORY_TYPES                                    (static_cast<size_t>                    (32))
@@ -22,7 +23,7 @@
 #define VK_WHOLE_SIZE                                          (static_cast<vk::VkDeviceSize>  ((~0ULL)))
 #define VK_TRUE                                                                (static_cast<vk::VkBool32>              (1))
 #define VK_FALSE                                                       (static_cast<vk::VkBool32>              (0))
-#define VK_API_MAX_FRAMEWORK_VERSION           VK_API_VERSION_1_1
+#define VK_API_MAX_FRAMEWORK_VERSION           VK_API_VERSION_1_2
 
 VK_DEFINE_HANDLE                                       (VkInstance,                                            HANDLE_TYPE_INSTANCE);
 VK_DEFINE_HANDLE                                       (VkPhysicalDevice,                                      HANDLE_TYPE_PHYSICAL_DEVICE);
@@ -91,6 +92,8 @@ enum VkResult
        VK_ERROR_FRAGMENTED_POOL                                                                = -12,
        VK_ERROR_OUT_OF_POOL_MEMORY                                                             = -1000069000,
        VK_ERROR_INVALID_EXTERNAL_HANDLE                                                = -1000072003,
+       VK_ERROR_FRAGMENTATION                                                                  = -1000161000,
+       VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS                                 = -1000257000,
        VK_ERROR_SURFACE_LOST_KHR                                                               = -1000000000,
        VK_ERROR_NATIVE_WINDOW_IN_USE_KHR                                               = -1000000001,
        VK_SUBOPTIMAL_KHR                                                                               = 1000001003,
@@ -99,12 +102,13 @@ enum VkResult
        VK_ERROR_VALIDATION_FAILED_EXT                                                  = -1000011001,
        VK_ERROR_INVALID_SHADER_NV                                                              = -1000012000,
        VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT   = -1000158000,
-       VK_ERROR_FRAGMENTATION_EXT                                                              = -1000161000,
        VK_ERROR_NOT_PERMITTED_EXT                                                              = -1000174001,
-       VK_ERROR_INVALID_DEVICE_ADDRESS_EXT                                             = -1000244000,
        VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT                    = -1000255000,
        VK_ERROR_OUT_OF_POOL_MEMORY_KHR                                                 = VK_ERROR_OUT_OF_POOL_MEMORY,
        VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR                                    = VK_ERROR_INVALID_EXTERNAL_HANDLE,
+       VK_ERROR_FRAGMENTATION_EXT                                                              = VK_ERROR_FRAGMENTATION,
+       VK_ERROR_INVALID_DEVICE_ADDRESS_EXT                                             = VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS,
+       VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR                             = VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS,
        VK_RESULT_MAX_ENUM                                                                              = 0x7FFFFFFF,
 };
 
@@ -224,6 +228,56 @@ enum VkStructureType
        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES                                                      = 1000168000,
        VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT                                                                         = 1000168001,
        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES                                       = 1000063000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES                                                           = 49,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES                                                         = 50,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES                                                           = 51,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES                                                         = 52,
+       VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO                                                                         = 1000147000,
+       VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2                                                                                      = 1000109000,
+       VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2                                                                                        = 1000109001,
+       VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2                                                                                         = 1000109002,
+       VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2                                                                                          = 1000109003,
+       VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2                                                                                     = 1000109004,
+       VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO                                                                                            = 1000109005,
+       VK_STRUCTURE_TYPE_SUBPASS_END_INFO                                                                                                      = 1000109006,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES                                                         = 1000177000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES                                                                     = 1000196000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES                                          = 1000180000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES                                          = 1000082000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES                                                     = 1000197000,
+       VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO                                       = 1000161000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES                                          = 1000161001,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES                                        = 1000161002,
+       VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO                        = 1000161003,
+       VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT                       = 1000161004,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES                                      = 1000199000,
+       VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE                                                     = 1000199001,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES                                          = 1000221000,
+       VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO                                                                       = 1000246000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES                                      = 1000130000,
+       VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO                                                            = 1000130001,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES                                          = 1000211000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES                                        = 1000108000,
+       VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO                                                           = 1000108001,
+       VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO                                                                     = 1000108002,
+       VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO                                                                     = 1000108003,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES                       = 1000253000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES                       = 1000175000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES                       = 1000241000,
+       VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT                                                           = 1000241001,
+       VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT                                                         = 1000241002,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES                                                     = 1000261000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES                                           = 1000207000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES                                         = 1000207001,
+       VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO                                                                            = 1000207002,
+       VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO                                                                        = 1000207003,
+       VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO                                                                                           = 1000207004,
+       VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO                                                                                         = 1000207005,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES                                        = 1000257000,
+       VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO                                                                            = 1000244001,
+       VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO                                                     = 1000257002,
+       VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO                                           = 1000257003,
+       VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO                                                     = 1000257004,
        VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR                                                                                     = 1000001000,
        VK_STRUCTURE_TYPE_PRESENT_INFO_KHR                                                                                                      = 1000001001,
        VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR                                                         = 1000060007,
@@ -283,7 +337,6 @@ enum VkStructureType
        VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT                     = 1000081000,
        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT                            = 1000081001,
        VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT                                                          = 1000081002,
-       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR                                      = 1000082000,
        VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR                                                                                           = 1000084000,
        VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX                                                                          = 1000086000,
        VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX                                                      = 1000086001,
@@ -307,17 +360,6 @@ enum VkStructureType
        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT                                        = 1000102000,
        VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT                       = 1000102001,
        VK_STRUCTURE_TYPE_HDR_METADATA_EXT                                                                                                      = 1000105000,
-       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR                            = 1000108000,
-       VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR                                                       = 1000108001,
-       VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR                                                         = 1000108002,
-       VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR                                                         = 1000108003,
-       VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR                                                                          = 1000109000,
-       VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR                                                                            = 1000109001,
-       VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR                                                                                     = 1000109002,
-       VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR                                                                                      = 1000109003,
-       VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR                                                                         = 1000109004,
-       VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR                                                                                        = 1000109005,
-       VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR                                                                                          = 1000109006,
        VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR                                                       = 1000111000,
        VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR                                                            = 1000114000,
        VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR                                                            = 1000114001,
@@ -352,8 +394,6 @@ enum VkStructureType
        VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID                                           = 1000129003,
        VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID                                       = 1000129004,
        VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID                                                                                       = 1000129005,
-       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT                          = 1000130000,
-       VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT                                                        = 1000130001,
        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT                                     = 1000138000,
        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT                           = 1000138001,
        VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT                                         = 1000138002,
@@ -363,7 +403,6 @@ enum VkStructureType
        VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT                                       = 1000143002,
        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT                                       = 1000143003,
        VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT                                                                            = 1000143004,
-       VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR                                                                     = 1000147000,
        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT                         = 1000148000,
        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT                       = 1000148001,
        VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT                           = 1000148002,
@@ -379,11 +418,6 @@ enum VkStructureType
        VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT                                                      = 1000158005,
        VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT                                                                      = 1000160000,
        VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT                                        = 1000160001,
-       VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT                           = 1000161000,
-       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT                                      = 1000161001,
-       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT                            = 1000161002,
-       VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT            = 1000161003,
-       VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT           = 1000161004,
        VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV                     = 1000164000,
        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV                                        = 1000164001,
        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV                                      = 1000164002,
@@ -404,12 +438,9 @@ enum VkStructureType
        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT                                      = 1000170000,
        VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT                           = 1000170001,
        VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT                                          = 1000174000,
-       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR           = 1000175000,
-       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR                                                     = 1000177000,
        VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT                                                           = 1000178000,
        VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT                                                            = 1000178001,
        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT                           = 1000178002,
-       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR                                      = 1000180000,
        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR                                                     = 1000181000,
        VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD                                                     = 1000183000,
        VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT                                                                         = 1000184000,
@@ -420,10 +451,6 @@ enum VkStructureType
        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT                         = 1000190002,
        VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP                                                                                       = 1000191000,
        VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT                                            = 1000192000,
-       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR                                                         = 1000196000,
-       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR                                         = 1000197000,
-       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR                          = 1000199000,
-       VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR                                         = 1000199001,
        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV                        = 1000201000,
        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV                                                       = 1000202000,
        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV                                                     = 1000202001,
@@ -433,12 +460,6 @@ enum VkStructureType
        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV                                         = 1000205002,
        VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV                                                                                            = 1000206000,
        VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV                                                         = 1000206001,
-       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR                                       = 1000207000,
-       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR                                     = 1000207001,
-       VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR                                                                        = 1000207002,
-       VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR                                                            = 1000207003,
-       VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR                                                                                       = 1000207004,
-       VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR                                                                                     = 1000207005,
        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL                     = 1000209000,
        VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL                                                                          = 1000210000,
        VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL                                                         = 1000210001,
@@ -446,7 +467,6 @@ enum VkStructureType
        VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL                                                          = 1000210003,
        VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL                                                                       = 1000210004,
        VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL                                          = 1000210005,
-       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR                                      = 1000211000,
        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT                                           = 1000212000,
        VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD                                           = 1000213000,
        VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD                                          = 1000213001,
@@ -455,7 +475,6 @@ enum VkStructureType
        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT                                     = 1000218000,
        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT                           = 1000218001,
        VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT                                      = 1000218002,
-       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT                                      = 1000221000,
        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT                          = 1000225000,
        VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT          = 1000225001,
        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT                            = 1000225002,
@@ -466,13 +485,8 @@ enum VkStructureType
        VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT                                                                     = 1000238001,
        VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR                                                            = 1000239000,
        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV       = 1000240000,
-       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR           = 1000241000,
-       VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR                                                       = 1000241001,
-       VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR                                                     = 1000241002,
        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT                            = 1000244000,
-       VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT                                                                        = 1000244001,
        VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT                                                         = 1000244002,
-       VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT                                                           = 1000246000,
        VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT                                                                                       = 1000247000,
        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV                                        = 1000249000,
        VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV                                                                      = 1000249001,
@@ -482,7 +496,6 @@ enum VkStructureType
        VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV                                                      = 1000250002,
        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT                        = 1000251000,
        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT                                       = 1000252000,
-       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR           = 1000253000,
        VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT                                                        = 1000255000,
        VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT                                        = 1000255002,
        VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT                                          = 1000255001,
@@ -490,7 +503,6 @@ enum VkStructureType
        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT                                       = 1000259000,
        VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT                                     = 1000259001,
        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT                                     = 1000259002,
-       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT                                         = 1000261000,
        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT                                         = 1000265000,
        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR           = 1000269000,
        VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR                                                                                                     = 1000269001,
@@ -536,10 +548,22 @@ enum VkStructureType
        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR                                           = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO,
        VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR                                                                     = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES,
        VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR                                                                      = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO,
-       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR                                                     = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR                                      = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR                                                     = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES,
        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR                                            = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES,
        VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR                                            = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO,
        VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT                                                                                     = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR                            = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES,
+       VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR                                                       = VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO,
+       VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR                                                         = VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO,
+       VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR                                                         = VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO,
+       VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR                                                                          = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2,
+       VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR                                                                            = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2,
+       VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR                                                                                     = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2,
+       VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR                                                                                      = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2,
+       VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR                                                                         = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2,
+       VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR                                                                                        = VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO,
+       VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR                                                                                          = VK_STRUCTURE_TYPE_SUBPASS_END_INFO,
        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR                                                       = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO,
        VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR                                                                         = VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES,
        VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR                                                                          = VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO,
@@ -551,11 +575,14 @@ enum VkStructureType
        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR                                        = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES,
        VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR                                                                     = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS,
        VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR                                                            = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT                          = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES,
+       VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT                                                        = VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO,
        VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR                                                         = VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2,
        VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR                                                          = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2,
        VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR                                           = VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2,
        VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR                                                                                     = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2,
        VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR                                                        = VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2,
+       VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR                                                                     = VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO,
        VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR                                                      = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO,
        VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR                                                                     = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO,
        VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR                                                                      = VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO,
@@ -564,9 +591,41 @@ enum VkStructureType
        VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR                          = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES,
        VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR                                                                           = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO,
        VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR                                                                            = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO,
+       VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT                           = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT                                      = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT                            = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES,
+       VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT            = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO,
+       VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT           = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT,
        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR                                          = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES,
        VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR                                                                     = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR           = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR                                                     = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR                                      = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR                                                         = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR                                         = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR                          = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES,
+       VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR                                         = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR                                       = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR                                     = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES,
+       VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR                                                                        = VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO,
+       VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR                                                            = VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO,
+       VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR                                                                                       = VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO,
+       VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR                                                                                     = VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR                                      = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT                                      = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR           = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES,
+       VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR                                                       = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT,
+       VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR                                                     = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT,
        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT                                           = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT,
+       VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT                                                                        = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO,
+       VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT                                                           = VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR           = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR                            = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES,
+       VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR                                                                        = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO,
+       VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR                                         = VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO,
+       VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR                                       = VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO,
+       VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR                                         = VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT                                         = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES,
        VK_STRUCTURE_TYPE_MAX_ENUM                                                                                                                      = 0x7FFFFFFF,
 };
 
@@ -929,16 +988,20 @@ enum VkImageLayout
        VK_IMAGE_LAYOUT_PREINITIALIZED                                                                  = 8,
        VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL              = 1000117000,
        VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL              = 1000117001,
+       VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL                                                = 1000241000,
+       VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL                                                 = 1000241001,
+       VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL                                              = 1000241002,
+       VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL                                               = 1000241003,
        VK_IMAGE_LAYOUT_PRESENT_SRC_KHR                                                                 = 1000001002,
        VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR                                                              = 1000111000,
        VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV                                                 = 1000164003,
        VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT                                = 1000218000,
-       VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR                                    = 1000241000,
-       VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR                                             = 1000241001,
-       VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR                                  = 1000241002,
-       VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR                                   = 1000241003,
        VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR  = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL,
        VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR  = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL,
+       VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR                                    = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL,
+       VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR                                             = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL,
+       VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR                                  = VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL,
+       VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR                                   = VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL,
        VK_IMAGE_LAYOUT_MAX_ENUM                                                                                = 0x7FFFFFFF,
 };
 
@@ -1390,6 +1453,69 @@ enum VkDescriptorUpdateTemplateType
        VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_MAX_ENUM                             = 0x7FFFFFFF,
 };
 
+enum VkDriverId
+{
+       VK_DRIVER_ID_AMD_PROPRIETARY                            = 1,
+       VK_DRIVER_ID_AMD_OPEN_SOURCE                            = 2,
+       VK_DRIVER_ID_MESA_RADV                                          = 3,
+       VK_DRIVER_ID_NVIDIA_PROPRIETARY                         = 4,
+       VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS          = 5,
+       VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA                     = 6,
+       VK_DRIVER_ID_IMAGINATION_PROPRIETARY            = 7,
+       VK_DRIVER_ID_QUALCOMM_PROPRIETARY                       = 8,
+       VK_DRIVER_ID_ARM_PROPRIETARY                            = 9,
+       VK_DRIVER_ID_GOOGLE_SWIFTSHADER                         = 10,
+       VK_DRIVER_ID_GGP_PROPRIETARY                            = 11,
+       VK_DRIVER_ID_BROADCOM_PROPRIETARY                       = 12,
+       VK_DRIVER_ID_AMD_PROPRIETARY_KHR                        = VK_DRIVER_ID_AMD_PROPRIETARY,
+       VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR                        = VK_DRIVER_ID_AMD_OPEN_SOURCE,
+       VK_DRIVER_ID_MESA_RADV_KHR                                      = VK_DRIVER_ID_MESA_RADV,
+       VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR                     = VK_DRIVER_ID_NVIDIA_PROPRIETARY,
+       VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR      = VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS,
+       VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR         = VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA,
+       VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR        = VK_DRIVER_ID_IMAGINATION_PROPRIETARY,
+       VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR           = VK_DRIVER_ID_QUALCOMM_PROPRIETARY,
+       VK_DRIVER_ID_ARM_PROPRIETARY_KHR                        = VK_DRIVER_ID_ARM_PROPRIETARY,
+       VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR                     = VK_DRIVER_ID_GOOGLE_SWIFTSHADER,
+       VK_DRIVER_ID_GGP_PROPRIETARY_KHR                        = VK_DRIVER_ID_GGP_PROPRIETARY,
+       VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR           = VK_DRIVER_ID_BROADCOM_PROPRIETARY,
+       VK_DRIVER_ID_MAX_ENUM                                           = 0x7FFFFFFF,
+};
+
+enum VkShaderFloatControlsIndependence
+{
+       VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY               = 0,
+       VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL                               = 1,
+       VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE                              = 2,
+       VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR   = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY,
+       VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR                   = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL,
+       VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR                  = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE,
+       VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_LAST,
+       VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM                  = 0x7FFFFFFF,
+};
+
+enum VkSamplerReductionMode
+{
+       VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE              = 0,
+       VK_SAMPLER_REDUCTION_MODE_MIN                                   = 1,
+       VK_SAMPLER_REDUCTION_MODE_MAX                                   = 2,
+       VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT  = VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE,
+       VK_SAMPLER_REDUCTION_MODE_MIN_EXT                               = VK_SAMPLER_REDUCTION_MODE_MIN,
+       VK_SAMPLER_REDUCTION_MODE_MAX_EXT                               = VK_SAMPLER_REDUCTION_MODE_MAX,
+       VK_SAMPLER_REDUCTION_MODE_LAST,
+       VK_SAMPLER_REDUCTION_MODE_MAX_ENUM                              = 0x7FFFFFFF,
+};
+
+enum VkSemaphoreType
+{
+       VK_SEMAPHORE_TYPE_BINARY                = 0,
+       VK_SEMAPHORE_TYPE_TIMELINE              = 1,
+       VK_SEMAPHORE_TYPE_BINARY_KHR    = VK_SEMAPHORE_TYPE_BINARY,
+       VK_SEMAPHORE_TYPE_TIMELINE_KHR  = VK_SEMAPHORE_TYPE_TIMELINE,
+       VK_SEMAPHORE_TYPE_LAST,
+       VK_SEMAPHORE_TYPE_MAX_ENUM              = 0x7FFFFFFF,
+};
+
 enum VkColorSpaceKHR
 {
        VK_COLOR_SPACE_SRGB_NONLINEAR_KHR                       = 0,
@@ -1462,40 +1588,6 @@ enum VkPerformanceCounterStorageKHR
        VK_PERFORMANCE_COUNTER_STORAGE_MAX_ENUM_KHR     = 0x7FFFFFFF,
 };
 
-enum VkDriverIdKHR
-{
-       VK_DRIVER_ID_AMD_PROPRIETARY_KHR                        = 1,
-       VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR                        = 2,
-       VK_DRIVER_ID_MESA_RADV_KHR                                      = 3,
-       VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR                     = 4,
-       VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR      = 5,
-       VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR         = 6,
-       VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR        = 7,
-       VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR           = 8,
-       VK_DRIVER_ID_ARM_PROPRIETARY_KHR                        = 9,
-       VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR                     = 10,
-       VK_DRIVER_ID_GGP_PROPRIETARY_KHR                        = 11,
-       VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR           = 12,
-       VK_DRIVER_ID_MAX_ENUM_KHR                                       = 0x7FFFFFFF,
-};
-
-enum VkShaderFloatControlsIndependenceKHR
-{
-       VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR   = 0,
-       VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR                   = 1,
-       VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR                  = 2,
-       VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_KHR_LAST,
-       VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM_KHR              = 0x7FFFFFFF,
-};
-
-enum VkSemaphoreTypeKHR
-{
-       VK_SEMAPHORE_TYPE_BINARY_KHR    = 0,
-       VK_SEMAPHORE_TYPE_TIMELINE_KHR  = 1,
-       VK_SEMAPHORE_TYPE_KHR_LAST,
-       VK_SEMAPHORE_TYPE_MAX_ENUM_KHR  = 0x7FFFFFFF,
-};
-
 enum VkPipelineExecutableStatisticFormatKHR
 {
        VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR              = 0,
@@ -1656,15 +1748,6 @@ enum VkConservativeRasterizationModeEXT
        VK_CONSERVATIVE_RASTERIZATION_MODE_MAX_ENUM_EXT                 = 0x7FFFFFFF,
 };
 
-enum VkSamplerReductionModeEXT
-{
-       VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT  = 0,
-       VK_SAMPLER_REDUCTION_MODE_MIN_EXT                               = 1,
-       VK_SAMPLER_REDUCTION_MODE_MAX_EXT                               = 2,
-       VK_SAMPLER_REDUCTION_MODE_EXT_LAST,
-       VK_SAMPLER_REDUCTION_MODE_MAX_ENUM_EXT                  = 0x7FFFFFFF,
-};
-
 enum VkBlendOverlapEXT
 {
        VK_BLEND_OVERLAP_UNCORRELATED_EXT       = 0,
@@ -1911,6 +1994,10 @@ enum VkFullScreenExclusiveEXT
 
 
 
+
+
+
+
 enum VkFormatFeatureFlagBits
 {
        VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT                                                                                                                                     = 0x00000001,
@@ -1935,11 +2022,12 @@ enum VkFormatFeatureFlagBits
        VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT           = 0x00200000,
        VK_FORMAT_FEATURE_DISJOINT_BIT                                                                                                                                          = 0x00400000,
        VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT                                                                                                            = 0x00800000,
+       VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT                                                                                                       = 0x00010000,
        VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG                                                                                            = 0x00002000,
-       VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT                                                                                           = 0x00010000,
        VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT                                                                                                          = 0x01000000,
        VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR                                                                                                                          = VK_FORMAT_FEATURE_TRANSFER_SRC_BIT,
        VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR                                                                                                                          = VK_FORMAT_FEATURE_TRANSFER_DST_BIT,
+       VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT                                                                                           = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT,
        VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR                                                                                                       = VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT,
        VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR                                                          = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT,
        VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR                         = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT,
@@ -2157,7 +2245,9 @@ enum VkBufferCreateFlagBits
        VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT                                   = 0x00000002,
        VK_BUFFER_CREATE_SPARSE_ALIASED_BIT                                             = 0x00000004,
        VK_BUFFER_CREATE_PROTECTED_BIT                                                  = 0x00000008,
-       VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT  = 0x00000010,
+       VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT              = 0x00000010,
+       VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT  = VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT,
+       VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR  = VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT,
        VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM                                             = 0x7FFFFFFF,
 };
 typedef deUint32 VkBufferCreateFlags;
@@ -2173,11 +2263,13 @@ enum VkBufferUsageFlagBits
        VK_BUFFER_USAGE_INDEX_BUFFER_BIT                                                        = 0x00000040,
        VK_BUFFER_USAGE_VERTEX_BUFFER_BIT                                                       = 0x00000080,
        VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT                                                     = 0x00000100,
+       VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT                                       = 0x00020000,
        VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT                       = 0x00000800,
        VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT       = 0x00001000,
        VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT                           = 0x00000200,
        VK_BUFFER_USAGE_RAY_TRACING_BIT_NV                                                      = 0x00000400,
-       VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT                           = 0x00020000,
+       VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT                           = VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT,
+       VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR                           = VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT,
        VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM                                                      = 0x7FFFFFFF,
 };
 typedef deUint32 VkBufferUsageFlags;
@@ -2271,8 +2363,9 @@ typedef deUint32 VkSamplerCreateFlags;
 
 enum VkDescriptorSetLayoutCreateFlagBits
 {
+       VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT              = 0x00000002,
        VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR                 = 0x00000001,
-       VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT  = 0x00000002,
+       VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT  = VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT,
        VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM                              = 0x7FFFFFFF,
 };
 typedef deUint32 VkDescriptorSetLayoutCreateFlags;
@@ -2280,14 +2373,16 @@ typedef deUint32 VkDescriptorSetLayoutCreateFlags;
 enum VkDescriptorPoolCreateFlagBits
 {
        VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT       = 0x00000001,
-       VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT     = 0x00000002,
+       VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT         = 0x00000002,
+       VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT     = VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT,
        VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM            = 0x7FFFFFFF,
 };
 typedef deUint32 VkDescriptorPoolCreateFlags;
 
 enum VkFramebufferCreateFlagBits
 {
-       VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR         = 0x00000001,
+       VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT                     = 0x00000001,
+       VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR         = VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT,
        VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM        = 0x7FFFFFFF,
 };
 typedef deUint32 VkFramebufferCreateFlags;
@@ -2438,9 +2533,13 @@ typedef deUint32 VkPeerMemoryFeatureFlags;
 
 enum VkMemoryAllocateFlagBits
 {
-       VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT              = 0x00000001,
-       VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR  = VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT,
-       VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM   = 0x7FFFFFFF,
+       VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT                                                      = 0x00000001,
+       VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT                                           = 0x00000002,
+       VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT            = 0x00000004,
+       VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR                                          = VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT,
+       VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR                                       = VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT,
+       VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR        = VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT,
+       VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM                                           = 0x7FFFFFFF,
 };
 typedef deUint32 VkMemoryAllocateFlags;
 
@@ -2546,6 +2645,44 @@ enum VkExternalSemaphoreFeatureFlagBits
 };
 typedef deUint32 VkExternalSemaphoreFeatureFlags;
 
+enum VkResolveModeFlagBits
+{
+       VK_RESOLVE_MODE_NONE                            = 0,
+       VK_RESOLVE_MODE_SAMPLE_ZERO_BIT         = 0x00000001,
+       VK_RESOLVE_MODE_AVERAGE_BIT                     = 0x00000002,
+       VK_RESOLVE_MODE_MIN_BIT                         = 0x00000004,
+       VK_RESOLVE_MODE_MAX_BIT                         = 0x00000008,
+       VK_RESOLVE_MODE_NONE_KHR                        = VK_RESOLVE_MODE_NONE,
+       VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR     = VK_RESOLVE_MODE_SAMPLE_ZERO_BIT,
+       VK_RESOLVE_MODE_AVERAGE_BIT_KHR         = VK_RESOLVE_MODE_AVERAGE_BIT,
+       VK_RESOLVE_MODE_MIN_BIT_KHR                     = VK_RESOLVE_MODE_MIN_BIT,
+       VK_RESOLVE_MODE_MAX_BIT_KHR                     = VK_RESOLVE_MODE_MAX_BIT,
+       VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM      = 0x7FFFFFFF,
+};
+typedef deUint32 VkResolveModeFlags;
+
+enum VkDescriptorBindingFlagBits
+{
+       VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT                                     = 0x00000001,
+       VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT           = 0x00000002,
+       VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT                                       = 0x00000004,
+       VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT                     = 0x00000008,
+       VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT                         = VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT,
+       VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT       = VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT,
+       VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT                           = VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT,
+       VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT         = VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT,
+       VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM                                        = 0x7FFFFFFF,
+};
+typedef deUint32 VkDescriptorBindingFlags;
+
+enum VkSemaphoreWaitFlagBits
+{
+       VK_SEMAPHORE_WAIT_ANY_BIT                               = 0x00000001,
+       VK_SEMAPHORE_WAIT_ANY_BIT_KHR                   = VK_SEMAPHORE_WAIT_ANY_BIT,
+       VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM    = 0x7FFFFFFF,
+};
+typedef deUint32 VkSemaphoreWaitFlags;
+
 enum VkSurfaceTransformFlagBitsKHR
 {
        VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR                                           = 0x00000001,
@@ -2614,24 +2751,6 @@ enum VkAcquireProfilingLockFlagBitsKHR
 };
 typedef deUint32 VkAcquireProfilingLockFlagsKHR;
 
-enum VkResolveModeFlagBitsKHR
-{
-       VK_RESOLVE_MODE_NONE_KHR                                = 0,
-       VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR             = 0x00000001,
-       VK_RESOLVE_MODE_AVERAGE_BIT_KHR                 = 0x00000002,
-       VK_RESOLVE_MODE_MIN_BIT_KHR                             = 0x00000004,
-       VK_RESOLVE_MODE_MAX_BIT_KHR                             = 0x00000008,
-       VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM_KHR  = 0x7FFFFFFF,
-};
-typedef deUint32 VkResolveModeFlagsKHR;
-
-enum VkSemaphoreWaitFlagBitsKHR
-{
-       VK_SEMAPHORE_WAIT_ANY_BIT_KHR                           = 0x00000001,
-       VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM_KHR        = 0x7FFFFFFF,
-};
-typedef deUint32 VkSemaphoreWaitFlagsKHR;
-
 enum VkDebugReportFlagBitsEXT
 {
        VK_DEBUG_REPORT_INFORMATION_BIT_EXT                     = 0x00000001,
@@ -2713,16 +2832,6 @@ enum VkDebugUtilsMessageTypeFlagBitsEXT
 };
 typedef deUint32 VkDebugUtilsMessageTypeFlagsEXT;
 
-enum VkDescriptorBindingFlagBitsEXT
-{
-       VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT                         = 0x00000001,
-       VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT       = 0x00000002,
-       VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT                           = 0x00000004,
-       VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT         = 0x00000008,
-       VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM_EXT                            = 0x7FFFFFFF,
-};
-typedef deUint32 VkDescriptorBindingFlagsEXT;
-
 enum VkGeometryFlagBitsNV
 {
        VK_GEOMETRY_OPAQUE_BIT_NV                                                       = 0x00000001,
@@ -2877,6 +2986,9 @@ typedef deUint32 VkXlibSurfaceCreateFlagsKHR;
 
 
 
+
+
+
 VK_DEFINE_PLATFORM_TYPE(XlibDisplayPtr,                                void*);
 VK_DEFINE_PLATFORM_TYPE(XlibWindow,                                    deUintptr);
 VK_DEFINE_PLATFORM_TYPE(XlibVisualID,                          deUint32);
@@ -2950,6 +3062,8 @@ VK_DEFINE_PLATFORM_TYPE(CAMetalLayer,                             void*);
 #define VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION 1
 #define VK_KHR_SHADER_CLOCK_SPEC_VERSION 1
 #define VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION 1
+#define VK_MAX_DRIVER_NAME_SIZE_KHR VK_MAX_DRIVER_NAME_SIZE
+#define VK_MAX_DRIVER_INFO_SIZE_KHR VK_MAX_DRIVER_INFO_SIZE
 #define VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION 4
 #define VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION 1
 #define VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION 1
@@ -2959,6 +3073,7 @@ VK_DEFINE_PLATFORM_TYPE(CAMetalLayer,                             void*);
 #define VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION 1
 #define VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION 1
 #define VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION 1
+#define VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION 1
 #define VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION 1
 #define VK_EXT_DEBUG_REPORT_SPEC_VERSION 9
 #define VK_NV_GLSL_SHADER_SPEC_VERSION 1
index f2961d9..c46db92 100644 (file)
@@ -138,6 +138,19 @@ virtual VkResult                   createDescriptorUpdateTemplate                                  (VkDevice device, const Vk
 virtual void                           destroyDescriptorUpdateTemplate                                 (VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator) const;
 virtual void                           updateDescriptorSetWithTemplate                                 (VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData) const;
 virtual void                           getDescriptorSetLayoutSupport                                   (VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport) const;
+virtual void                           cmdDrawIndirectCount                                                    (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride) const;
+virtual void                           cmdDrawIndexedIndirectCount                                             (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride) const;
+virtual VkResult                       createRenderPass2                                                               (VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass) const;
+virtual void                           cmdBeginRenderPass2                                                             (VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfo* pSubpassBeginInfo) const;
+virtual void                           cmdNextSubpass2                                                                 (VkCommandBuffer commandBuffer, const VkSubpassBeginInfo* pSubpassBeginInfo, const VkSubpassEndInfo* pSubpassEndInfo) const;
+virtual void                           cmdEndRenderPass2                                                               (VkCommandBuffer commandBuffer, const VkSubpassEndInfo* pSubpassEndInfo) const;
+virtual void                           resetQueryPool                                                                  (VkDevice device, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount) const;
+virtual VkResult                       getSemaphoreCounterValue                                                (VkDevice device, VkSemaphore semaphore, deUint64* pValue) const;
+virtual VkResult                       waitSemaphores                                                                  (VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, deUint64 timeout) const;
+virtual VkResult                       signalSemaphore                                                                 (VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo) const;
+virtual VkDeviceAddress                getBufferDeviceAddress                                                  (VkDevice device, const VkBufferDeviceAddressInfo* pInfo) const;
+virtual uint64_t                       getBufferOpaqueCaptureAddress                                   (VkDevice device, const VkBufferDeviceAddressInfo* pInfo) const;
+virtual uint64_t                       getDeviceMemoryOpaqueCaptureAddress                             (VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo) const;
 virtual VkResult                       createSwapchainKHR                                                              (VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain) const;
 virtual void                           destroySwapchainKHR                                                             (VkDevice device, VkSwapchainKHR swapchain, const VkAllocationCallbacks* pAllocator) const;
 virtual VkResult                       getSwapchainImagesKHR                                                   (VkDevice device, VkSwapchainKHR swapchain, deUint32* pSwapchainImageCount, VkImage* pSwapchainImages) const;
@@ -153,20 +166,11 @@ virtual VkResult                  importSemaphoreFdKHR                                                    (VkDevice device, const VkImportSe
 virtual VkResult                       getSemaphoreFdKHR                                                               (VkDevice device, const VkSemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd) const;
 virtual void                           cmdPushDescriptorSetKHR                                                 (VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, deUint32 set, deUint32 descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites) const;
 virtual void                           cmdPushDescriptorSetWithTemplateKHR                             (VkCommandBuffer commandBuffer, VkDescriptorUpdateTemplate descriptorUpdateTemplate, VkPipelineLayout layout, deUint32 set, const void* pData) const;
-virtual VkResult                       createRenderPass2KHR                                                    (VkDevice device, const VkRenderPassCreateInfo2KHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass) const;
-virtual void                           cmdBeginRenderPass2KHR                                                  (VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfoKHR* pSubpassBeginInfo) const;
-virtual void                           cmdNextSubpass2KHR                                                              (VkCommandBuffer commandBuffer, const VkSubpassBeginInfoKHR* pSubpassBeginInfo, const VkSubpassEndInfoKHR* pSubpassEndInfo) const;
-virtual void                           cmdEndRenderPass2KHR                                                    (VkCommandBuffer commandBuffer, const VkSubpassEndInfoKHR* pSubpassEndInfo) const;
 virtual VkResult                       getSwapchainStatusKHR                                                   (VkDevice device, VkSwapchainKHR swapchain) const;
 virtual VkResult                       importFenceFdKHR                                                                (VkDevice device, const VkImportFenceFdInfoKHR* pImportFenceFdInfo) const;
 virtual VkResult                       getFenceFdKHR                                                                   (VkDevice device, const VkFenceGetFdInfoKHR* pGetFdInfo, int* pFd) const;
 virtual VkResult                       acquireProfilingLockKHR                                                 (VkDevice device, const VkAcquireProfilingLockInfoKHR* pInfo) const;
 virtual void                           releaseProfilingLockKHR                                                 (VkDevice device) const;
-virtual void                           cmdDrawIndirectCountKHR                                                 (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride) const;
-virtual void                           cmdDrawIndexedIndirectCountKHR                                  (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride) const;
-virtual VkResult                       getSemaphoreCounterValueKHR                                             (VkDevice device, VkSemaphore semaphore, deUint64* pValue) const;
-virtual VkResult                       waitSemaphoresKHR                                                               (VkDevice device, const VkSemaphoreWaitInfoKHR* pWaitInfo, deUint64 timeout) const;
-virtual VkResult                       signalSemaphoreKHR                                                              (VkDevice device, const VkSemaphoreSignalInfoKHR* pSignalInfo) const;
 virtual VkResult                       getPipelineExecutablePropertiesKHR                              (VkDevice device, const VkPipelineInfoKHR* pPipelineInfo, deUint32* pExecutableCount, VkPipelineExecutablePropertiesKHR* pProperties) const;
 virtual VkResult                       getPipelineExecutableStatisticsKHR                              (VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, deUint32* pStatisticCount, VkPipelineExecutableStatisticKHR* pStatistics) const;
 virtual VkResult                       getPipelineExecutableInternalRepresentationsKHR (VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, deUint32* pInternalRepresentationCount, VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations) const;
@@ -252,9 +256,8 @@ virtual VkResult                    releasePerformanceConfigurationINTEL                    (VkDevice device, VkPe
 virtual VkResult                       queueSetPerformanceConfigurationINTEL                   (VkQueue queue, VkPerformanceConfigurationINTEL configuration) const;
 virtual VkResult                       getPerformanceParameterINTEL                                    (VkDevice device, VkPerformanceParameterTypeINTEL parameter, VkPerformanceValueINTEL* pValue) const;
 virtual void                           setLocalDimmingAMD                                                              (VkDevice device, VkSwapchainKHR swapChain, VkBool32 localDimmingEnable) const;
-virtual VkDeviceAddress                getBufferDeviceAddressEXT                                               (VkDevice device, const VkBufferDeviceAddressInfoEXT* pInfo) const;
+virtual VkDeviceAddress                getBufferDeviceAddressEXT                                               (VkDevice device, const VkBufferDeviceAddressInfo* pInfo) const;
 virtual void                           cmdSetLineStippleEXT                                                    (VkCommandBuffer commandBuffer, deUint32 lineStippleFactor, deUint16 lineStipplePattern) const;
-virtual void                           resetQueryPoolEXT                                                               (VkDevice device, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount) const;
 virtual VkResult                       getAndroidHardwareBufferPropertiesANDROID               (VkDevice device, const struct pt::AndroidHardwareBufferPtr buffer, VkAndroidHardwareBufferPropertiesANDROID* pProperties) const;
 virtual VkResult                       getMemoryAndroidHardwareBufferANDROID                   (VkDevice device, const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, struct pt::AndroidHardwareBufferPtr* pBuffer) const;
 virtual VkResult                       getMemoryWin32HandleKHR                                                 (VkDevice device, const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, pt::Win32Handle* pHandle) const;
index 4513861..3d19478 100644 (file)
@@ -18,6 +18,7 @@ void initApisMap (ApisMap& apis)
        apis.clear();
        apis.insert(::std::pair<deUint32, FunctionInfosList>(VK_API_VERSION_1_0, FunctionInfosList()));
        apis.insert(::std::pair<deUint32, FunctionInfosList>(VK_API_VERSION_1_1, FunctionInfosList()));
+       apis.insert(::std::pair<deUint32, FunctionInfosList>(VK_API_VERSION_1_2, FunctionInfosList()));
 
        apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCreateInstance",                                                                     FUNCTIONORIGIN_PLATFORM));
        apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyInstance",                                                            FUNCTIONORIGIN_INSTANCE));
@@ -322,5 +323,185 @@ void initApisMap (ApisMap& apis)
        apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkGetPhysicalDeviceExternalFenceProperties",           FUNCTIONORIGIN_INSTANCE));
        apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkGetPhysicalDeviceExternalSemaphoreProperties",       FUNCTIONORIGIN_INSTANCE));
        apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkGetDescriptorSetLayoutSupport",                                      FUNCTIONORIGIN_DEVICE));
+
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateInstance",                                                                     FUNCTIONORIGIN_PLATFORM));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyInstance",                                                            FUNCTIONORIGIN_INSTANCE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkEnumeratePhysicalDevices",                                           FUNCTIONORIGIN_INSTANCE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetPhysicalDeviceFeatures",                                          FUNCTIONORIGIN_INSTANCE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetPhysicalDeviceFormatProperties",                          FUNCTIONORIGIN_INSTANCE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetPhysicalDeviceImageFormatProperties",                     FUNCTIONORIGIN_INSTANCE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetPhysicalDeviceProperties",                                        FUNCTIONORIGIN_INSTANCE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetPhysicalDeviceQueueFamilyProperties",                     FUNCTIONORIGIN_INSTANCE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetPhysicalDeviceMemoryProperties",                          FUNCTIONORIGIN_INSTANCE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetInstanceProcAddr",                                                        FUNCTIONORIGIN_PLATFORM));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetDeviceProcAddr",                                                          FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateDevice",                                                                       FUNCTIONORIGIN_INSTANCE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyDevice",                                                                      FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkEnumerateInstanceExtensionProperties",                       FUNCTIONORIGIN_PLATFORM));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkEnumerateDeviceExtensionProperties",                         FUNCTIONORIGIN_INSTANCE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkEnumerateInstanceLayerProperties",                           FUNCTIONORIGIN_PLATFORM));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkEnumerateDeviceLayerProperties",                                     FUNCTIONORIGIN_INSTANCE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetDeviceQueue",                                                                     FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkQueueSubmit",                                                                        FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkQueueWaitIdle",                                                                      FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDeviceWaitIdle",                                                                     FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkAllocateMemory",                                                                     FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkFreeMemory",                                                                         FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkMapMemory",                                                                          FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkUnmapMemory",                                                                        FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkFlushMappedMemoryRanges",                                            FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkInvalidateMappedMemoryRanges",                                       FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetDeviceMemoryCommitment",                                          FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkBindBufferMemory",                                                           FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkBindImageMemory",                                                            FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetBufferMemoryRequirements",                                        FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetImageMemoryRequirements",                                         FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetImageSparseMemoryRequirements",                           FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetPhysicalDeviceSparseImageFormatProperties",       FUNCTIONORIGIN_INSTANCE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkQueueBindSparse",                                                            FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateFence",                                                                        FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyFence",                                                                       FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkResetFences",                                                                        FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetFenceStatus",                                                                     FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkWaitForFences",                                                                      FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateSemaphore",                                                            FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroySemaphore",                                                           FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateEvent",                                                                        FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyEvent",                                                                       FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetEventStatus",                                                                     FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkSetEvent",                                                                           FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkResetEvent",                                                                         FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateQueryPool",                                                            FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyQueryPool",                                                           FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetQueryPoolResults",                                                        FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateBuffer",                                                                       FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyBuffer",                                                                      FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateBufferView",                                                           FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyBufferView",                                                          FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateImage",                                                                        FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyImage",                                                                       FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetImageSubresourceLayout",                                          FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateImageView",                                                            FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyImageView",                                                           FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateShaderModule",                                                         FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyShaderModule",                                                        FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreatePipelineCache",                                                        FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyPipelineCache",                                                       FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetPipelineCacheData",                                                       FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkMergePipelineCaches",                                                        FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateGraphicsPipelines",                                            FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateComputePipelines",                                                     FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyPipeline",                                                            FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreatePipelineLayout",                                                       FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyPipelineLayout",                                                      FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateSampler",                                                                      FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroySampler",                                                                     FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateDescriptorSetLayout",                                          FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyDescriptorSetLayout",                                         FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateDescriptorPool",                                                       FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyDescriptorPool",                                                      FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkResetDescriptorPool",                                                        FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkAllocateDescriptorSets",                                                     FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkFreeDescriptorSets",                                                         FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkUpdateDescriptorSets",                                                       FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateFramebuffer",                                                          FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyFramebuffer",                                                         FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateRenderPass",                                                           FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyRenderPass",                                                          FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetRenderAreaGranularity",                                           FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateCommandPool",                                                          FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyCommandPool",                                                         FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkResetCommandPool",                                                           FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkAllocateCommandBuffers",                                                     FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkFreeCommandBuffers",                                                         FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkBeginCommandBuffer",                                                         FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkEndCommandBuffer",                                                           FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkResetCommandBuffer",                                                         FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdBindPipeline",                                                            FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdSetViewport",                                                                     FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdSetScissor",                                                                      FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdSetLineWidth",                                                            FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdSetDepthBias",                                                            FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdSetBlendConstants",                                                       FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdSetDepthBounds",                                                          FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdSetStencilCompareMask",                                           FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdSetStencilWriteMask",                                                     FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdSetStencilReference",                                                     FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdBindDescriptorSets",                                                      FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdBindIndexBuffer",                                                         FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdBindVertexBuffers",                                                       FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdDraw",                                                                            FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdDrawIndexed",                                                                     FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdDrawIndirect",                                                            FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdDrawIndexedIndirect",                                                     FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdDispatch",                                                                        FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdDispatchIndirect",                                                        FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdCopyBuffer",                                                                      FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdCopyImage",                                                                       FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdBlitImage",                                                                       FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdCopyBufferToImage",                                                       FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdCopyImageToBuffer",                                                       FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdUpdateBuffer",                                                            FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdFillBuffer",                                                                      FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdClearColorImage",                                                         FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdClearDepthStencilImage",                                          FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdClearAttachments",                                                        FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdResolveImage",                                                            FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdSetEvent",                                                                        FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdResetEvent",                                                                      FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdWaitEvents",                                                                      FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdPipelineBarrier",                                                         FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdBeginQuery",                                                                      FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdEndQuery",                                                                        FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdResetQueryPool",                                                          FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdWriteTimestamp",                                                          FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdCopyQueryPoolResults",                                            FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdPushConstants",                                                           FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdBeginRenderPass",                                                         FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdNextSubpass",                                                                     FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdEndRenderPass",                                                           FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdExecuteCommands",                                                         FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkEnumerateInstanceVersion",                                           FUNCTIONORIGIN_PLATFORM));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkBindBufferMemory2",                                                          FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkBindImageMemory2",                                                           FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetDeviceGroupPeerMemoryFeatures",                           FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdSetDeviceMask",                                                           FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdDispatchBase",                                                            FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkEnumeratePhysicalDeviceGroups",                                      FUNCTIONORIGIN_INSTANCE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetImageMemoryRequirements2",                                        FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetBufferMemoryRequirements2",                                       FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetImageSparseMemoryRequirements2",                          FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetPhysicalDeviceFeatures2",                                         FUNCTIONORIGIN_INSTANCE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetPhysicalDeviceProperties2",                                       FUNCTIONORIGIN_INSTANCE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetPhysicalDeviceFormatProperties2",                         FUNCTIONORIGIN_INSTANCE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetPhysicalDeviceImageFormatProperties2",            FUNCTIONORIGIN_INSTANCE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetPhysicalDeviceQueueFamilyProperties2",            FUNCTIONORIGIN_INSTANCE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetPhysicalDeviceMemoryProperties2",                         FUNCTIONORIGIN_INSTANCE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetPhysicalDeviceSparseImageFormatProperties2",      FUNCTIONORIGIN_INSTANCE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkTrimCommandPool",                                                            FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetDeviceQueue2",                                                            FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateSamplerYcbcrConversion",                                       FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroySamplerYcbcrConversion",                                      FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateDescriptorUpdateTemplate",                                     FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyDescriptorUpdateTemplate",                            FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkUpdateDescriptorSetWithTemplate",                            FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetPhysicalDeviceExternalBufferProperties",          FUNCTIONORIGIN_INSTANCE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetPhysicalDeviceExternalFenceProperties",           FUNCTIONORIGIN_INSTANCE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetPhysicalDeviceExternalSemaphoreProperties",       FUNCTIONORIGIN_INSTANCE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetDescriptorSetLayoutSupport",                                      FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdDrawIndirectCount",                                                       FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdDrawIndexedIndirectCount",                                        FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCreateRenderPass2",                                                          FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdBeginRenderPass2",                                                        FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdNextSubpass2",                                                            FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkCmdEndRenderPass2",                                                          FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkResetQueryPool",                                                                     FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetSemaphoreCounterValue",                                           FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkWaitSemaphores",                                                                     FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkSignalSemaphore",                                                            FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetBufferDeviceAddress",                                                     FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetBufferOpaqueCaptureAddress",                                      FUNCTIONORIGIN_DEVICE));
+       apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkGetDeviceMemoryOpaqueCaptureAddress",                        FUNCTIONORIGIN_DEVICE));
+
 }
 
index a83d726..8335792 100644 (file)
@@ -108,6 +108,7 @@ enum SpirvVersion
        SPIRV_VERSION_1_2       = 2,    //!< SPIR-V 1.2
        SPIRV_VERSION_1_3       = 3,    //!< SPIR-V 1.3
        SPIRV_VERSION_1_4       = 4,    //!< SPIR-V 1.4
+       SPIRV_VERSION_1_5       = 5,    //!< SPIR-V 1.5
 
        SPIRV_VERSION_LAST
 };
index ef7b37b..298c2bf 100644 (file)
@@ -687,6 +687,71 @@ void DeviceDriver::getDescriptorSetLayoutSupport (VkDevice device, const VkDescr
        m_vk.getDescriptorSetLayoutSupport(device, pCreateInfo, pSupport);
 }
 
+void DeviceDriver::cmdDrawIndirectCount (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride) const
+{
+       m_vk.cmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
+}
+
+void DeviceDriver::cmdDrawIndexedIndirectCount (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride) const
+{
+       m_vk.cmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
+}
+
+VkResult DeviceDriver::createRenderPass2 (VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass) const
+{
+       return m_vk.createRenderPass2(device, pCreateInfo, pAllocator, pRenderPass);
+}
+
+void DeviceDriver::cmdBeginRenderPass2 (VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfo* pSubpassBeginInfo) const
+{
+       m_vk.cmdBeginRenderPass2(commandBuffer, pRenderPassBegin, pSubpassBeginInfo);
+}
+
+void DeviceDriver::cmdNextSubpass2 (VkCommandBuffer commandBuffer, const VkSubpassBeginInfo* pSubpassBeginInfo, const VkSubpassEndInfo* pSubpassEndInfo) const
+{
+       m_vk.cmdNextSubpass2(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo);
+}
+
+void DeviceDriver::cmdEndRenderPass2 (VkCommandBuffer commandBuffer, const VkSubpassEndInfo* pSubpassEndInfo) const
+{
+       m_vk.cmdEndRenderPass2(commandBuffer, pSubpassEndInfo);
+}
+
+void DeviceDriver::resetQueryPool (VkDevice device, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount) const
+{
+       m_vk.resetQueryPool(device, queryPool, firstQuery, queryCount);
+}
+
+VkResult DeviceDriver::getSemaphoreCounterValue (VkDevice device, VkSemaphore semaphore, deUint64* pValue) const
+{
+       return m_vk.getSemaphoreCounterValue(device, semaphore, pValue);
+}
+
+VkResult DeviceDriver::waitSemaphores (VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, deUint64 timeout) const
+{
+       return m_vk.waitSemaphores(device, pWaitInfo, timeout);
+}
+
+VkResult DeviceDriver::signalSemaphore (VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo) const
+{
+       return m_vk.signalSemaphore(device, pSignalInfo);
+}
+
+VkDeviceAddress DeviceDriver::getBufferDeviceAddress (VkDevice device, const VkBufferDeviceAddressInfo* pInfo) const
+{
+       return m_vk.getBufferDeviceAddress(device, pInfo);
+}
+
+uint64_t DeviceDriver::getBufferOpaqueCaptureAddress (VkDevice device, const VkBufferDeviceAddressInfo* pInfo) const
+{
+       return m_vk.getBufferOpaqueCaptureAddress(device, pInfo);
+}
+
+uint64_t DeviceDriver::getDeviceMemoryOpaqueCaptureAddress (VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo) const
+{
+       return m_vk.getDeviceMemoryOpaqueCaptureAddress(device, pInfo);
+}
+
 VkResult DeviceDriver::createSwapchainKHR (VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain) const
 {
        return m_vk.createSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain);
@@ -762,26 +827,6 @@ void DeviceDriver::cmdPushDescriptorSetWithTemplateKHR (VkCommandBuffer commandB
        m_vk.cmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData);
 }
 
-VkResult DeviceDriver::createRenderPass2KHR (VkDevice device, const VkRenderPassCreateInfo2KHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass) const
-{
-       return m_vk.createRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass);
-}
-
-void DeviceDriver::cmdBeginRenderPass2KHR (VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfoKHR* pSubpassBeginInfo) const
-{
-       m_vk.cmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo);
-}
-
-void DeviceDriver::cmdNextSubpass2KHR (VkCommandBuffer commandBuffer, const VkSubpassBeginInfoKHR* pSubpassBeginInfo, const VkSubpassEndInfoKHR* pSubpassEndInfo) const
-{
-       m_vk.cmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo);
-}
-
-void DeviceDriver::cmdEndRenderPass2KHR (VkCommandBuffer commandBuffer, const VkSubpassEndInfoKHR* pSubpassEndInfo) const
-{
-       m_vk.cmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo);
-}
-
 VkResult DeviceDriver::getSwapchainStatusKHR (VkDevice device, VkSwapchainKHR swapchain) const
 {
        return m_vk.getSwapchainStatusKHR(device, swapchain);
@@ -807,31 +852,6 @@ void DeviceDriver::releaseProfilingLockKHR (VkDevice device) const
        m_vk.releaseProfilingLockKHR(device);
 }
 
-void DeviceDriver::cmdDrawIndirectCountKHR (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride) const
-{
-       m_vk.cmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
-}
-
-void DeviceDriver::cmdDrawIndexedIndirectCountKHR (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride) const
-{
-       m_vk.cmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
-}
-
-VkResult DeviceDriver::getSemaphoreCounterValueKHR (VkDevice device, VkSemaphore semaphore, deUint64* pValue) const
-{
-       return m_vk.getSemaphoreCounterValueKHR(device, semaphore, pValue);
-}
-
-VkResult DeviceDriver::waitSemaphoresKHR (VkDevice device, const VkSemaphoreWaitInfoKHR* pWaitInfo, deUint64 timeout) const
-{
-       return m_vk.waitSemaphoresKHR(device, pWaitInfo, timeout);
-}
-
-VkResult DeviceDriver::signalSemaphoreKHR (VkDevice device, const VkSemaphoreSignalInfoKHR* pSignalInfo) const
-{
-       return m_vk.signalSemaphoreKHR(device, pSignalInfo);
-}
-
 VkResult DeviceDriver::getPipelineExecutablePropertiesKHR (VkDevice device, const VkPipelineInfoKHR* pPipelineInfo, deUint32* pExecutableCount, VkPipelineExecutablePropertiesKHR* pProperties) const
 {
        return m_vk.getPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties);
@@ -1257,7 +1277,7 @@ void DeviceDriver::setLocalDimmingAMD (VkDevice device, VkSwapchainKHR swapChain
        m_vk.setLocalDimmingAMD(device, swapChain, localDimmingEnable);
 }
 
-VkDeviceAddress DeviceDriver::getBufferDeviceAddressEXT (VkDevice device, const VkBufferDeviceAddressInfoEXT* pInfo) const
+VkDeviceAddress DeviceDriver::getBufferDeviceAddressEXT (VkDevice device, const VkBufferDeviceAddressInfo* pInfo) const
 {
        return m_vk.getBufferDeviceAddressEXT(device, pInfo);
 }
@@ -1267,11 +1287,6 @@ void DeviceDriver::cmdSetLineStippleEXT (VkCommandBuffer commandBuffer, deUint32
        m_vk.cmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern);
 }
 
-void DeviceDriver::resetQueryPoolEXT (VkDevice device, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount) const
-{
-       m_vk.resetQueryPoolEXT(device, queryPool, firstQuery, queryCount);
-}
-
 VkResult DeviceDriver::getAndroidHardwareBufferPropertiesANDROID (VkDevice device, const struct pt::AndroidHardwareBufferPtr buffer, VkAndroidHardwareBufferPropertiesANDROID* pProperties) const
 {
        return m_vk.getAndroidHardwareBufferPropertiesANDROID(device, buffer, pProperties);
index 336f115..9c20e4b 100644 (file)
@@ -47,12 +47,19 @@ static const char* s_allowedDeviceKhrExtensions[] =
        "VK_KHR_vulkan_memory_model",
        "VK_KHR_uniform_buffer_standard_layout",
        "VK_KHR_imageless_framebuffer",
-       "VK_KHR_pipeline_executable_properties",
-       "VK_KHR_timeline_semaphore",
-       "VK_KHR_shader_clock",
-       "VK_KHR_spirv_1_4",
        "VK_KHR_shader_subgroup_extended_types",
+       "VK_EXT_sampler_filter_minmax",
+       "VK_EXT_shader_viewport_index_layer",
+       "VK_EXT_descriptor_indexing",
+       "VK_EXT_scalar_block_layout",
+       "VK_KHR_buffer_device_address",
+       "VK_EXT_host_query_reset",
        "VK_KHR_separate_depth_stencil_layouts",
+       "VK_KHR_timeline_semaphore",
+       "VK_KHR_spirv_1_4",
+       "VK_EXT_separate_stencil_usage",
+       "VK_KHR_pipeline_executable_properties",
+       "VK_KHR_shader_clock",
        "VK_KHR_performance_query",
 };
 
index 520423e..9eed63f 100644 (file)
@@ -32,33 +32,71 @@ DeviceFeatures::DeviceFeatures      (const InstanceInterface&                       vki,
                                                                 const std::vector<std::string>&        instanceExtensions,
                                                                 const std::vector<std::string>&        deviceExtensions)
 {
-       deMemset(&m_coreFeatures2, 0, sizeof(m_coreFeatures2));
-       m_coreFeatures2.sType   = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2;
+       m_coreFeatures2         = initVulkanStructure();
+       m_vulkan11Features      = initVulkanStructure();
+       m_vulkan12Features      = initVulkanStructure();
 
        if (isInstanceExtensionSupported(apiVersion, instanceExtensions, "VK_KHR_get_physical_device_properties2"))
        {
                const std::vector<VkExtensionProperties>        deviceExtensionProperties       = enumerateDeviceExtensionProperties(vki, physicalDevice, DE_NULL);
                void**                                                                          nextPtr                                         = &m_coreFeatures2.pNext;
+               std::vector<FeatureStructWrapperBase*>          featuresToFillFromBlob;
+               bool                                                                            vk12Supported                           = (apiVersion >= VK_MAKE_VERSION(1, 2, 0));
 
-               for (size_t i = 0; i < DE_LENGTH_OF_ARRAY(featureStructCreatorMap); ++i)
+               // in vk12 we have blob structures combining features of couple previously
+               // available feature structures, that now in vk12 must be removed from chain
+               if (vk12Supported)
                {
-                       const char* featureName = featureStructCreatorMap[i].name;
+                       addToChainVulkanStructure(&nextPtr, m_vulkan11Features);
+                       addToChainVulkanStructure(&nextPtr, m_vulkan12Features);
+               }
 
-                       if (de::contains(deviceExtensions.begin(), deviceExtensions.end(), featureName)
-                               && verifyFeatureAddCriteria(featureStructCreatorMap[i], deviceExtensionProperties))
-                       {
-                               FeatureStruct* p = createFeatureStructWrapper(featureName);
+               // iterate over data for all feature that are defined in specification
+               for (const auto& featureStructCreationData : featureStructCreationArray)
+               {
+                       const char* featureName = featureStructCreationData.name;
 
-                               if (p)
+                       // check if this feature is available on current device
+                       if (de::contains(deviceExtensions.begin(), deviceExtensions.end(), featureName) &&
+                               verifyFeatureAddCriteria(featureStructCreationData, deviceExtensionProperties))
+                       {
+                               FeatureStructWrapperBase* p = (*featureStructCreationData.creatorFunction)();
+                               if (p == DE_NULL)
+                                       continue;
+
+                               // if feature struct is part of VkPhysicalDeviceVulkan1{1,2}Features
+                               // we dont add it to the chain but store and fill later from blob data
+                               bool featureFilledFromBlob = false;
+                               if (vk12Supported)
+                                       featureFilledFromBlob = isPartOfBlobFeatures(p->getFeatureDesc().sType);
+
+                               if (featureFilledFromBlob)
+                                       featuresToFillFromBlob.push_back(p);
+                               else
                                {
+                                       // add to chain
                                        *nextPtr = p->getFeatureTypeRaw();
                                        nextPtr = p->getFeatureTypeNext();
-                                       m_features.push_back(p);
                                }
+                               m_features.push_back(p);
                        }
                }
 
                vki.getPhysicalDeviceFeatures2(physicalDevice, &m_coreFeatures2);
+
+               // fill data from VkPhysicalDeviceVulkan1{1,2}Features
+               if (vk12Supported)
+               {
+                       AllBlobs allBlobs =
+                       {
+                               m_vulkan11Features,
+                               m_vulkan12Features,
+                               // add blobs from future vulkan versions here
+                       };
+
+                       for (auto feature : featuresToFillFromBlob)
+                               feature->initializeFromBlob(allBlobs);
+               }
        }
        else
                m_coreFeatures2.features = getPhysicalDeviceFeatures(vki, physicalDevice);
@@ -67,66 +105,50 @@ DeviceFeatures::DeviceFeatures     (const InstanceInterface&                       vki,
        m_coreFeatures2.features.robustBufferAccess = false;
 }
 
-bool DeviceFeatures::verifyFeatureAddCriteria (const FeatureStructMapItem& item, const std::vector<VkExtensionProperties>& properties)
+bool DeviceFeatures::verifyFeatureAddCriteria (const FeatureStructCreationData& item, const std::vector<VkExtensionProperties>& properties)
 {
-       bool criteriaOK = true;
-
        if (deStringEqual(item.name, VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME))
        {
-               const size_t propSize = properties.size();
-
-               for (size_t propIdx = 0; propIdx < propSize; ++propIdx)
+               for (const auto& property : properties)
                {
-                       if (deStringEqual(properties[propIdx].extensionName, item.name))
-                       {
-                               criteriaOK = properties[propIdx].specVersion == item.specVersion;
-                               break;
-                       }
+                       if (deStringEqual(property.extensionName, item.name))
+                               return (property.specVersion == item.specVersion);
                }
        }
 
-       return criteriaOK;
+       return true;
 }
 
 bool DeviceFeatures::contains (const std::string& feature, bool throwIfNotExists) const
 {
-       const size_t typesSize  = m_features.size();
-
-       for (size_t typeIdx = 0; typeIdx < typesSize; ++typeIdx)
+       for (const auto f : m_features)
        {
-               if (deStringEqual(m_features[typeIdx]->getFeatureDesc().name, feature.c_str()))
-               {
+               if (deStringEqual(f->getFeatureDesc().name, feature.c_str()))
                        return true;
-               }
        }
 
        if (throwIfNotExists)
-       {
-               std::string msg("Feature " + feature + " is not supported");
-
-               TCU_THROW(NotSupportedError, msg);
-       }
+               TCU_THROW(NotSupportedError, "Feature " + feature + " is not supported");
 
        return false;
 }
 
-DeviceFeatures::~DeviceFeatures (void)
+bool DeviceFeatures::isDeviceFeatureInitialized (VkStructureType sType) const
 {
-       for (size_t i = 0; i < m_features.size(); ++i)
-               delete m_features[i];
-
-       m_features.clear();
+       for (const auto f : m_features)
+       {
+               if (f->getFeatureDesc().sType == sType)
+                       return true;
+       }
+       return false;
 }
 
-FeatureStruct* DeviceFeatures::createFeatureStructWrapper (const std::string& s)
+DeviceFeatures::~DeviceFeatures (void)
 {
-       for (size_t i = 0; i < DE_LENGTH_OF_ARRAY(featureStructCreatorMap); ++i)
-       {
-               if (deStringEqual(featureStructCreatorMap[i].name, s.c_str()))
-                       return (*featureStructCreatorMap[i].creator)();
-       }
+       for (auto p : m_features)
+               delete p;
 
-       return DE_NULL;
+       m_features.clear();
 }
 
 } // vk
index 966e94d..0301978 100644 (file)
 namespace vk
 {
 
+// Structure describing vulkan feature structure
 struct FeatureDesc
 {
-                                               FeatureDesc (VkStructureType sType_, const char* name_, deUint32 specVersion_, deUint32 typeId_)
-                                                       : name                  (name_)
-                                                       , sType                 (sType_)
-                                                       , specVersion   (specVersion_)
-                                                       , typeId                (typeId_)
-                                               {}
-
-       const char*                     name;
        VkStructureType         sType;
+       const char*                     name;
        const deUint32          specVersion;
        const deUint32          typeId;
 };
 
-struct FeatureStruct
+// Structure containg all feature blobs - this simplifies generated code
+struct AllBlobs
 {
-       virtual deUint32                getFeatureTypeId                (void) const = 0;
-       virtual FeatureDesc             getFeatureDesc                  (void) const = 0;
-       virtual void**                  getFeatureTypeNext              (void) = 0;
-       virtual void*                   getFeatureTypeRaw               (void) = 0;
-       virtual                                 ~FeatureStruct                  (void) {}
+       VkPhysicalDeviceVulkan11Features& vk11;
+       VkPhysicalDeviceVulkan12Features& vk12;
+       // add blobs from future vulkan versions here
 };
 
+// Base class for all FeatureStructWrapper specializations
+class FeatureStructWrapperBase
+{
+public:
+       virtual                                 ~FeatureStructWrapperBase       (void) {}
+       virtual void                    initializeFromBlob                      (const AllBlobs& allBlobs) = 0;
+       virtual deUint32                getFeatureTypeId                        (void) const = 0;
+       virtual FeatureDesc             getFeatureDesc                          (void) const = 0;
+       virtual void**                  getFeatureTypeNext                      (void) = 0;
+       virtual void*                   getFeatureTypeRaw                       (void) = 0;
+};
 
-struct FeatureStructMapItem
+using FeatureStructWrapperCreator      = FeatureStructWrapperBase* (*) (void);
+struct FeatureStructCreationData
 {
-       FeatureStruct*  (*creator)(void);
-       const char*             name;
-       deUint32                specVersion;
+       FeatureStructWrapperCreator     creatorFunction;
+       const char*                                     name;
+       deUint32                                        specVersion;
 };
 
-template<class FeatureType> struct FeatureStructWrapper;
+template<class FeatureType> class FeatureStructWrapper;
 template<class FeatureType> FeatureDesc makeFeatureDesc (void);
 
 template<class FeatureType>
-FeatureStruct* createFeatureStructWrapper (void)
+FeatureStructWrapperBase* createFeatureStructWrapper (void)
 {
        return new FeatureStructWrapper<FeatureType>(makeFeatureDesc<FeatureType>());
 }
 
+template<class FeatureType>
+void initFromBlob(FeatureType& featureType, const AllBlobs& allBlobs);
+
+template<class FeatureType>
+void initFromBlobWrapper(FeatureType& featureType, const AllBlobs& allBlobs)
+{
+       initFromBlob<FeatureType>(featureType, allBlobs);
+}
+
 class DeviceFeatures
 {
 public:
-                                                                               DeviceFeatures          (const InstanceInterface&                       vki,
-                                                                                                                        const deUint32                                         apiVersion,
-                                                                                                                        const VkPhysicalDevice                         physicalDevice,
-                                                                                                                        const std::vector<std::string>&        instanceExtensions,
-                                                                                                                        const std::vector<std::string>&        deviceExtensions);
-
-                                                                               ~DeviceFeatures         (void);
+                                                                                               DeviceFeatures                          (const InstanceInterface&                       vki,
+                                                                                                                                                        const deUint32                                         apiVersion,
+                                                                                                                                                        const VkPhysicalDevice                         physicalDevice,
+                                                                                                                                                        const std::vector<std::string>&        instanceExtensions,
+                                                                                                                                                        const std::vector<std::string>&        deviceExtensions);
 
-       template<class FeatureType>
-       bool                                                            getFeatureType          (FeatureType&                                           featureType) const
-       {
-               typedef FeatureStructWrapper<FeatureType>       *FeatureWrapperPtr;
-
-               const VkStructureType   sType           = makeFeatureDesc<FeatureType>().sType;
-               const size_t                    featCount       = m_features.size();
-
-               for (size_t featIdx = 0; featIdx < featCount; ++featIdx)
-               {
-                       if (sType == m_features[featIdx]->getFeatureDesc().sType)
-                       {
-                               featureType = static_cast<FeatureWrapperPtr>(m_features[featIdx])->getFeatureTypeRef();
-                               return true;
-                       }
-               }
-               return false;
-       }
+                                                                                               ~DeviceFeatures                         (void);
 
        template<class FeatureType>
-       const FeatureType&                                      getFeatureType          (void) const
-       {
-               typedef FeatureStructWrapper<FeatureType>       *FeatureWrapperPtr;
+       const FeatureType&                                                      getFeatureType                          (void) const;
 
-               const FeatureDesc               featDesc        = makeFeatureDesc<FeatureType>();
-               const VkStructureType   sType           = featDesc.sType;
-               const size_t                    featCount       = m_features.size();
+       const VkPhysicalDeviceFeatures2&                        getCoreFeatures2                        (void) const { return m_coreFeatures2; }
+       const VkPhysicalDeviceVulkan11Features&         getVulkan11Features                     (void) const { return m_vulkan11Features; }
+       const VkPhysicalDeviceVulkan12Features&         getVulkan12Features                     (void) const { return m_vulkan12Features; }
 
-               for (size_t featIdx = 0; featIdx < featCount; ++featIdx)
-               {
-                       if (sType == m_features[featIdx]->getFeatureDesc().sType)
-                               return static_cast<FeatureWrapperPtr>(m_features[featIdx])->getFeatureTypeRef();
-               }
+       bool                                                                            contains                                        (const std::string& feature, bool throwIfNotExists = false) const;
 
-               const deUint32                  featureId = featDesc.typeId;
+       bool                                                                            isDeviceFeatureInitialized      (VkStructureType sType) const;
 
-               for (size_t featIdx = 0; featIdx < featCount; ++featIdx)
-               {
-                       if (featureId == m_features[featIdx]->getFeatureTypeId())
-                               return static_cast<FeatureWrapperPtr>(m_features[featIdx])->getFeatureTypeRef();
-               }
+private:
 
-               FeatureStruct* p = vk::createFeatureStructWrapper<FeatureType>();
-               m_features.push_back(p);
+       static bool                                                     verifyFeatureAddCriteria        (const FeatureStructCreationData& item, const std::vector<VkExtensionProperties>& properties);
 
-               return static_cast<FeatureWrapperPtr>(p)->getFeatureTypeRef();
-       }
+private:
 
-       const VkPhysicalDeviceFeatures2&        getCoreFeatures2        (void) const { return m_coreFeatures2; }
+       VkPhysicalDeviceFeatures2                                               m_coreFeatures2;
+       mutable std::vector<FeatureStructWrapperBase*>  m_features;
+       VkPhysicalDeviceVulkan11Features                                m_vulkan11Features;
+       VkPhysicalDeviceVulkan12Features                                m_vulkan12Features;
+};
 
-       bool                                                            contains                        (const std::string& feature, bool throwIfNotExists = false) const;
+template<class FeatureType>
+const FeatureType& DeviceFeatures::getFeatureType(void) const
+{
+       typedef FeatureStructWrapper<FeatureType>* FeatureWrapperPtr;
 
-private:
+       const FeatureDesc               featDesc        = makeFeatureDesc<FeatureType>();
+       const VkStructureType   sType           = featDesc.sType;
 
-       static FeatureStruct*                           createFeatureStructWrapper      (const std::string& s);
+       // try to find feature by sType
+       for (auto feature : m_features)
+       {
+               if (sType == feature->getFeatureDesc().sType)
+                       return static_cast<FeatureWrapperPtr>(feature)->getFeatureTypeRef();
+       }
 
-       static bool                                                     verifyFeatureAddCriteria        (const FeatureStructMapItem& item, const std::vector<VkExtensionProperties>& properties);
+       // try to find feature by id that was assigned by gen_framework script
+       const deUint32 featureId = featDesc.typeId;
+       for (auto feature : m_features)
+       {
+               if (featureId == feature->getFeatureTypeId())
+                       return static_cast<FeatureWrapperPtr>(feature)->getFeatureTypeRef();
+       }
 
-       VkPhysicalDeviceFeatures2                       m_coreFeatures2;
-       mutable std::vector<FeatureStruct*>     m_features;
-};
+       // if initialized feature structure was not found create empty one and return it
+       m_features.push_back(vk::createFeatureStructWrapper<FeatureType>());
+       return static_cast<FeatureWrapperPtr>(m_features.back())->getFeatureTypeRef();
+}
 
 template<class FeatureType>
-struct FeatureStructWrapper : FeatureStruct
+class FeatureStructWrapper : public FeatureStructWrapperBase
 {
+public:
+       FeatureStructWrapper (const FeatureDesc& featureDesc)
+               : m_featureDesc(featureDesc)
+       {
+               deMemset(&m_featureType, 0, sizeof(m_featureType));
+               m_featureType.sType = featureDesc.sType;
+       }
+
+       void initializeFromBlob (const AllBlobs& allBlobs)
+       {
+               initFromBlobWrapper(m_featureType, allBlobs);
+       }
+
+       deUint32                getFeatureTypeId        (void) const    { return m_featureDesc.typeId;  }
+       FeatureDesc             getFeatureDesc          (void) const    { return m_featureDesc;                 }
+       void**                  getFeatureTypeNext      (void)                  { return &m_featureType.pNext;  }
+       void*                   getFeatureTypeRaw       (void)                  { return &m_featureType;                }
+       FeatureType&    getFeatureTypeRef       (void)                  { return m_featureType;                 }
+
+public:
+       // metadata about feature structure
        const FeatureDesc       m_featureDesc;
-       FeatureType                     m_featureType;
 
-                                               FeatureStructWrapper    (void)
-                                                       : m_featureDesc (VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2, DE_NULL, ~0u, 0u)
-                                               {
-                                                       deMemset(&m_featureType, 0, sizeof(m_featureType));
-                                               }
-
-                                               FeatureStructWrapper    (const FeatureDesc& featureDesc)
-                                                       : m_featureDesc (featureDesc)
-                                               {
-                                                       deMemset(&m_featureType, 0, sizeof(m_featureType));
-                                                       m_featureType.sType = featureDesc.sType;
-                                               }
-
-       deUint32                        getFeatureTypeId                (void) const    { return m_featureDesc.typeId;  }
-       FeatureDesc                     getFeatureDesc                  (void) const    { return m_featureDesc;                 }
-       void**                          getFeatureTypeNext              (void)                  { return &m_featureType.pNext;  }
-       void*                           getFeatureTypeRaw               (void)                  { return &m_featureType;                }
-       FeatureType&            getFeatureTypeRef               (void)                  { return m_featureType;                 }
+       // actual vulkan feature structure
+       FeatureType                     m_featureType;
 };
 
 } // vk
index 67766b2..07602fc 100644 (file)
@@ -8,6 +8,7 @@ namespace vk
 #define VK_KHR_16BIT_STORAGE_EXTENSION_NAME "VK_KHR_16bit_storage"
 #define VK_KHR_8BIT_STORAGE_EXTENSION_NAME "VK_KHR_8bit_storage"
 #define VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME "VK_EXT_blend_operation_advanced"
+#define VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME "VK_KHR_buffer_device_address"
 #define VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME "VK_EXT_buffer_device_address"
 #define DECL_AMD_COHERENT_MEMORY_EXTENSION_NAME "not_existent_feature"
 #define VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME "VK_NV_compute_shader_derivatives"
@@ -57,63 +58,213 @@ namespace vk
 #define VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME "VK_EXT_ycbcr_image_arrays"
 
 
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDevice16BitStorageFeatures>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES, VK_KHR_16BIT_STORAGE_EXTENSION_NAME, VK_KHR_16BIT_STORAGE_SPEC_VERSION, 50); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDevice8BitStorageFeaturesKHR>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR, VK_KHR_8BIT_STORAGE_EXTENSION_NAME, VK_KHR_8BIT_STORAGE_SPEC_VERSION, 49); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT, VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME, VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION, 48); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceBufferDeviceAddressFeaturesEXT>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT, VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME, VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION, 47); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceCoherentMemoryFeaturesAMD>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD, DECL_AMD_COHERENT_MEMORY_EXTENSION_NAME, 0, 46); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceComputeShaderDerivativesFeaturesNV>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV, VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME, VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION, 45); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceConditionalRenderingFeaturesEXT>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT, VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME, VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION, 44); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceCooperativeMatrixFeaturesNV>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV, VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME, VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION, 43); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceCornerSampledImageFeaturesNV>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV, VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME, VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION, 42); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceCoverageReductionModeFeaturesNV>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV, VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME, VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION, 41); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV, VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME, VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION, 40); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceDepthClipEnableFeaturesEXT>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT, VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME, VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION, 39); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceDescriptorIndexingFeaturesEXT>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT, VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME, VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION, 38); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceExclusiveScissorFeaturesNV>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV, VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME, VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION, 37); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceFragmentDensityMapFeaturesEXT>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT, VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME, VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION, 36); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV, VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME, VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION, 35); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT, VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME, VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION, 34); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceHostQueryResetFeaturesEXT>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT, VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME, VK_EXT_HOST_QUERY_RESET_SPEC_VERSION, 33); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceImagelessFramebufferFeaturesKHR>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR, VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME, VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION, 32); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceIndexTypeUint8FeaturesEXT>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT, VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME, VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION, 31); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceInlineUniformBlockFeaturesEXT>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT, VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME, VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION, 30); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceLineRasterizationFeaturesEXT>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT, VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME, VK_EXT_LINE_RASTERIZATION_SPEC_VERSION, 29); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceMemoryPriorityFeaturesEXT>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT, VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME, VK_EXT_MEMORY_PRIORITY_SPEC_VERSION, 28); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceMeshShaderFeaturesNV>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV, VK_NV_MESH_SHADER_EXTENSION_NAME, VK_NV_MESH_SHADER_SPEC_VERSION, 27); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceMultiviewFeatures>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES, VK_KHR_MULTIVIEW_EXTENSION_NAME, VK_KHR_MULTIVIEW_SPEC_VERSION, 26); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDevicePerformanceQueryFeaturesKHR>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR, VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME, VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION, 25); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR, VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME, VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION, 24); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceProtectedMemoryFeatures>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES, DECL_PROTECTED_MEMORY_EXTENSION_NAME, 0, 23); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV, VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME, VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION, 22); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceSamplerYcbcrConversionFeatures>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES, VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME, VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION, 21); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceScalarBlockLayoutFeaturesEXT>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT, VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME, VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION, 20); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR, VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME, VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION, 19); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderAtomicInt64FeaturesKHR>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR, VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME, VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION, 18); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderClockFeaturesKHR>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR, VK_KHR_SHADER_CLOCK_EXTENSION_NAME, VK_KHR_SHADER_CLOCK_SPEC_VERSION, 17); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT, VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME, VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION, 16); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderDrawParametersFeatures>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES, VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME, VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION, 15); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderFloat16Int8FeaturesKHR>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR, VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME, VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION, 14); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderImageFootprintFeaturesNV>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV, VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME, VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION, 13); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL, VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME, VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION, 12); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR, VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME, VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION, 11); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShadingRateImageFeaturesNV>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV, VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME, VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION, 10); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceSubgroupSizeControlFeaturesEXT>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT, VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME, VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION, 9); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT, VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME, VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION, 8); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceTimelineSemaphoreFeaturesKHR>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR, VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME, VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION, 7); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceTransformFeedbackFeaturesEXT>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT, VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME, VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION, 6); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR, VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME, VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION, 5); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceVariablePointersFeatures>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES, VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME, VK_KHR_VARIABLE_POINTERS_SPEC_VERSION, 4); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT, VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME, VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION, 3); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceVulkanMemoryModelFeaturesKHR>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR, VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME, VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION, 2); }
-template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceYcbcrImageArraysFeaturesEXT>(void) { return FeatureDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT, VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME, VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION, 1); }
+template<> void initFromBlob<VkPhysicalDevice16BitStorageFeatures>(VkPhysicalDevice16BitStorageFeatures& featureType, const AllBlobs& allBlobs)
+{
+       featureType.storageBuffer16BitAccess = allBlobs.vk11.storageBuffer16BitAccess;
+       featureType.uniformAndStorageBuffer16BitAccess = allBlobs.vk11.uniformAndStorageBuffer16BitAccess;
+       featureType.storagePushConstant16 = allBlobs.vk11.storagePushConstant16;
+       featureType.storageInputOutput16 = allBlobs.vk11.storageInputOutput16;
+}
+template<> void initFromBlob<VkPhysicalDeviceMultiviewFeatures>(VkPhysicalDeviceMultiviewFeatures& featureType, const AllBlobs& allBlobs)
+{
+       featureType.multiview = allBlobs.vk11.multiview;
+       featureType.multiviewGeometryShader = allBlobs.vk11.multiviewGeometryShader;
+       featureType.multiviewTessellationShader = allBlobs.vk11.multiviewTessellationShader;
+}
+template<> void initFromBlob<VkPhysicalDeviceVariablePointersFeatures>(VkPhysicalDeviceVariablePointersFeatures& featureType, const AllBlobs& allBlobs)
+{
+       featureType.variablePointersStorageBuffer = allBlobs.vk11.variablePointersStorageBuffer;
+       featureType.variablePointers = allBlobs.vk11.variablePointers;
+}
+template<> void initFromBlob<VkPhysicalDeviceProtectedMemoryFeatures>(VkPhysicalDeviceProtectedMemoryFeatures& featureType, const AllBlobs& allBlobs)
+{
+       featureType.protectedMemory = allBlobs.vk11.protectedMemory;
+}
+template<> void initFromBlob<VkPhysicalDeviceSamplerYcbcrConversionFeatures>(VkPhysicalDeviceSamplerYcbcrConversionFeatures& featureType, const AllBlobs& allBlobs)
+{
+       featureType.samplerYcbcrConversion = allBlobs.vk11.samplerYcbcrConversion;
+}
+template<> void initFromBlob<VkPhysicalDeviceShaderDrawParametersFeatures>(VkPhysicalDeviceShaderDrawParametersFeatures& featureType, const AllBlobs& allBlobs)
+{
+       featureType.shaderDrawParameters = allBlobs.vk11.shaderDrawParameters;
+}
+template<> void initFromBlob<VkPhysicalDevice8BitStorageFeatures>(VkPhysicalDevice8BitStorageFeatures& featureType, const AllBlobs& allBlobs)
+{
+       featureType.storageBuffer8BitAccess = allBlobs.vk12.storageBuffer8BitAccess;
+       featureType.uniformAndStorageBuffer8BitAccess = allBlobs.vk12.uniformAndStorageBuffer8BitAccess;
+       featureType.storagePushConstant8 = allBlobs.vk12.storagePushConstant8;
+}
+template<> void initFromBlob<VkPhysicalDeviceShaderAtomicInt64Features>(VkPhysicalDeviceShaderAtomicInt64Features& featureType, const AllBlobs& allBlobs)
+{
+       featureType.shaderBufferInt64Atomics = allBlobs.vk12.shaderBufferInt64Atomics;
+       featureType.shaderSharedInt64Atomics = allBlobs.vk12.shaderSharedInt64Atomics;
+}
+template<> void initFromBlob<VkPhysicalDeviceShaderFloat16Int8Features>(VkPhysicalDeviceShaderFloat16Int8Features& featureType, const AllBlobs& allBlobs)
+{
+       featureType.shaderFloat16 = allBlobs.vk12.shaderFloat16;
+       featureType.shaderInt8 = allBlobs.vk12.shaderInt8;
+}
+template<> void initFromBlob<VkPhysicalDeviceDescriptorIndexingFeatures>(VkPhysicalDeviceDescriptorIndexingFeatures& featureType, const AllBlobs& allBlobs)
+{
+       featureType.shaderInputAttachmentArrayDynamicIndexing = allBlobs.vk12.shaderInputAttachmentArrayDynamicIndexing;
+       featureType.shaderUniformTexelBufferArrayDynamicIndexing = allBlobs.vk12.shaderUniformTexelBufferArrayDynamicIndexing;
+       featureType.shaderStorageTexelBufferArrayDynamicIndexing = allBlobs.vk12.shaderStorageTexelBufferArrayDynamicIndexing;
+       featureType.shaderUniformBufferArrayNonUniformIndexing = allBlobs.vk12.shaderUniformBufferArrayNonUniformIndexing;
+       featureType.shaderSampledImageArrayNonUniformIndexing = allBlobs.vk12.shaderSampledImageArrayNonUniformIndexing;
+       featureType.shaderStorageBufferArrayNonUniformIndexing = allBlobs.vk12.shaderStorageBufferArrayNonUniformIndexing;
+       featureType.shaderStorageImageArrayNonUniformIndexing = allBlobs.vk12.shaderStorageImageArrayNonUniformIndexing;
+       featureType.shaderInputAttachmentArrayNonUniformIndexing = allBlobs.vk12.shaderInputAttachmentArrayNonUniformIndexing;
+       featureType.shaderUniformTexelBufferArrayNonUniformIndexing = allBlobs.vk12.shaderUniformTexelBufferArrayNonUniformIndexing;
+       featureType.shaderStorageTexelBufferArrayNonUniformIndexing = allBlobs.vk12.shaderStorageTexelBufferArrayNonUniformIndexing;
+       featureType.descriptorBindingUniformBufferUpdateAfterBind = allBlobs.vk12.descriptorBindingUniformBufferUpdateAfterBind;
+       featureType.descriptorBindingSampledImageUpdateAfterBind = allBlobs.vk12.descriptorBindingSampledImageUpdateAfterBind;
+       featureType.descriptorBindingStorageImageUpdateAfterBind = allBlobs.vk12.descriptorBindingStorageImageUpdateAfterBind;
+       featureType.descriptorBindingStorageBufferUpdateAfterBind = allBlobs.vk12.descriptorBindingStorageBufferUpdateAfterBind;
+       featureType.descriptorBindingUniformTexelBufferUpdateAfterBind = allBlobs.vk12.descriptorBindingUniformTexelBufferUpdateAfterBind;
+       featureType.descriptorBindingStorageTexelBufferUpdateAfterBind = allBlobs.vk12.descriptorBindingStorageTexelBufferUpdateAfterBind;
+       featureType.descriptorBindingUpdateUnusedWhilePending = allBlobs.vk12.descriptorBindingUpdateUnusedWhilePending;
+       featureType.descriptorBindingPartiallyBound = allBlobs.vk12.descriptorBindingPartiallyBound;
+       featureType.descriptorBindingVariableDescriptorCount = allBlobs.vk12.descriptorBindingVariableDescriptorCount;
+       featureType.runtimeDescriptorArray = allBlobs.vk12.runtimeDescriptorArray;
+}
+template<> void initFromBlob<VkPhysicalDeviceScalarBlockLayoutFeatures>(VkPhysicalDeviceScalarBlockLayoutFeatures& featureType, const AllBlobs& allBlobs)
+{
+       featureType.scalarBlockLayout = allBlobs.vk12.scalarBlockLayout;
+}
+template<> void initFromBlob<VkPhysicalDeviceVulkanMemoryModelFeatures>(VkPhysicalDeviceVulkanMemoryModelFeatures& featureType, const AllBlobs& allBlobs)
+{
+       featureType.vulkanMemoryModel = allBlobs.vk12.vulkanMemoryModel;
+       featureType.vulkanMemoryModelDeviceScope = allBlobs.vk12.vulkanMemoryModelDeviceScope;
+       featureType.vulkanMemoryModelAvailabilityVisibilityChains = allBlobs.vk12.vulkanMemoryModelAvailabilityVisibilityChains;
+}
+template<> void initFromBlob<VkPhysicalDeviceImagelessFramebufferFeatures>(VkPhysicalDeviceImagelessFramebufferFeatures& featureType, const AllBlobs& allBlobs)
+{
+       featureType.imagelessFramebuffer = allBlobs.vk12.imagelessFramebuffer;
+}
+template<> void initFromBlob<VkPhysicalDeviceUniformBufferStandardLayoutFeatures>(VkPhysicalDeviceUniformBufferStandardLayoutFeatures& featureType, const AllBlobs& allBlobs)
+{
+       featureType.uniformBufferStandardLayout = allBlobs.vk12.uniformBufferStandardLayout;
+}
+template<> void initFromBlob<VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures>(VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures& featureType, const AllBlobs& allBlobs)
+{
+       featureType.shaderSubgroupExtendedTypes = allBlobs.vk12.shaderSubgroupExtendedTypes;
+}
+template<> void initFromBlob<VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures>(VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures& featureType, const AllBlobs& allBlobs)
+{
+       featureType.separateDepthStencilLayouts = allBlobs.vk12.separateDepthStencilLayouts;
+}
+template<> void initFromBlob<VkPhysicalDeviceHostQueryResetFeatures>(VkPhysicalDeviceHostQueryResetFeatures& featureType, const AllBlobs& allBlobs)
+{
+       featureType.hostQueryReset = allBlobs.vk12.hostQueryReset;
+}
+template<> void initFromBlob<VkPhysicalDeviceTimelineSemaphoreFeatures>(VkPhysicalDeviceTimelineSemaphoreFeatures& featureType, const AllBlobs& allBlobs)
+{
+       featureType.timelineSemaphore = allBlobs.vk12.timelineSemaphore;
+}
+template<> void initFromBlob<VkPhysicalDeviceBufferDeviceAddressFeatures>(VkPhysicalDeviceBufferDeviceAddressFeatures& featureType, const AllBlobs& allBlobs)
+{
+       featureType.bufferDeviceAddress = allBlobs.vk12.bufferDeviceAddress;
+       featureType.bufferDeviceAddressCaptureReplay = allBlobs.vk12.bufferDeviceAddressCaptureReplay;
+       featureType.bufferDeviceAddressMultiDevice = allBlobs.vk12.bufferDeviceAddressMultiDevice;
+}
 
+// generic template is not enough for some compilers
+template<> void initFromBlob<VkPhysicalDevicePerformanceQueryFeaturesKHR>(VkPhysicalDevicePerformanceQueryFeaturesKHR&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceShaderClockFeaturesKHR>(VkPhysicalDeviceShaderClockFeaturesKHR&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR>(VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceTransformFeedbackFeaturesEXT>(VkPhysicalDeviceTransformFeedbackFeaturesEXT&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceCornerSampledImageFeaturesNV>(VkPhysicalDeviceCornerSampledImageFeaturesNV&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT>(VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceASTCDecodeFeaturesEXT>(VkPhysicalDeviceASTCDecodeFeaturesEXT&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceConditionalRenderingFeaturesEXT>(VkPhysicalDeviceConditionalRenderingFeaturesEXT&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceDepthClipEnableFeaturesEXT>(VkPhysicalDeviceDepthClipEnableFeaturesEXT&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceInlineUniformBlockFeaturesEXT>(VkPhysicalDeviceInlineUniformBlockFeaturesEXT&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT>(VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceShaderSMBuiltinsFeaturesNV>(VkPhysicalDeviceShaderSMBuiltinsFeaturesNV&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceShadingRateImageFeaturesNV>(VkPhysicalDeviceShadingRateImageFeaturesNV&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV>(VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT>(VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceComputeShaderDerivativesFeaturesNV>(VkPhysicalDeviceComputeShaderDerivativesFeaturesNV&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceMeshShaderFeaturesNV>(VkPhysicalDeviceMeshShaderFeaturesNV&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV>(VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceShaderImageFootprintFeaturesNV>(VkPhysicalDeviceShaderImageFootprintFeaturesNV&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceExclusiveScissorFeaturesNV>(VkPhysicalDeviceExclusiveScissorFeaturesNV&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL>(VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceFragmentDensityMapFeaturesEXT>(VkPhysicalDeviceFragmentDensityMapFeaturesEXT&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceSubgroupSizeControlFeaturesEXT>(VkPhysicalDeviceSubgroupSizeControlFeaturesEXT&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceCoherentMemoryFeaturesAMD>(VkPhysicalDeviceCoherentMemoryFeaturesAMD&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceMemoryPriorityFeaturesEXT>(VkPhysicalDeviceMemoryPriorityFeaturesEXT&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV>(VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceBufferDeviceAddressFeaturesEXT>(VkPhysicalDeviceBufferDeviceAddressFeaturesEXT&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceCooperativeMatrixFeaturesNV>(VkPhysicalDeviceCooperativeMatrixFeaturesNV&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceCoverageReductionModeFeaturesNV>(VkPhysicalDeviceCoverageReductionModeFeaturesNV&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT>(VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceYcbcrImageArraysFeaturesEXT>(VkPhysicalDeviceYcbcrImageArraysFeaturesEXT&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceLineRasterizationFeaturesEXT>(VkPhysicalDeviceLineRasterizationFeaturesEXT&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceIndexTypeUint8FeaturesEXT>(VkPhysicalDeviceIndexTypeUint8FeaturesEXT&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT>(VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT&, const AllBlobs&) {}
+template<> void initFromBlob<VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT>(VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT&, const AllBlobs&) {}
 
-static const FeatureStructMapItem featureStructCreatorMap[] =
+
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDevice16BitStorageFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES, VK_KHR_16BIT_STORAGE_EXTENSION_NAME, VK_KHR_16BIT_STORAGE_SPEC_VERSION, 51}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDevice8BitStorageFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES, VK_KHR_8BIT_STORAGE_EXTENSION_NAME, VK_KHR_8BIT_STORAGE_SPEC_VERSION, 50}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT, VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME, VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION, 49}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceBufferDeviceAddressFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES, VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME, VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION, 48}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceBufferDeviceAddressFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT, VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME, VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION, 47}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceCoherentMemoryFeaturesAMD>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD, DECL_AMD_COHERENT_MEMORY_EXTENSION_NAME, 0, 46}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceComputeShaderDerivativesFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV, VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME, VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION, 45}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceConditionalRenderingFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT, VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME, VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION, 44}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceCooperativeMatrixFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV, VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME, VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION, 43}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceCornerSampledImageFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV, VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME, VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION, 42}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceCoverageReductionModeFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV, VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME, VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION, 41}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV, VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME, VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION, 40}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceDepthClipEnableFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT, VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME, VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION, 39}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceDescriptorIndexingFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES, VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME, VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION, 38}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceExclusiveScissorFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV, VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME, VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION, 37}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceFragmentDensityMapFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT, VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME, VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION, 36}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV, VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME, VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION, 35}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT, VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME, VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION, 34}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceHostQueryResetFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES, VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME, VK_EXT_HOST_QUERY_RESET_SPEC_VERSION, 33}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceImagelessFramebufferFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES, VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME, VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION, 32}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceIndexTypeUint8FeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT, VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME, VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION, 31}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceInlineUniformBlockFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT, VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME, VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION, 30}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceLineRasterizationFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT, VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME, VK_EXT_LINE_RASTERIZATION_SPEC_VERSION, 29}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceMemoryPriorityFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT, VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME, VK_EXT_MEMORY_PRIORITY_SPEC_VERSION, 28}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceMeshShaderFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV, VK_NV_MESH_SHADER_EXTENSION_NAME, VK_NV_MESH_SHADER_SPEC_VERSION, 27}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceMultiviewFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES, VK_KHR_MULTIVIEW_EXTENSION_NAME, VK_KHR_MULTIVIEW_SPEC_VERSION, 26}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDevicePerformanceQueryFeaturesKHR>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR, VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME, VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION, 25}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR, VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME, VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION, 24}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceProtectedMemoryFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES, DECL_PROTECTED_MEMORY_EXTENSION_NAME, 0, 23}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV, VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME, VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION, 22}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceSamplerYcbcrConversionFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES, VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME, VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION, 21}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceScalarBlockLayoutFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES, VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME, VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION, 20}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES, VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME, VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION, 19}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderAtomicInt64Features>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES, VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME, VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION, 18}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderClockFeaturesKHR>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR, VK_KHR_SHADER_CLOCK_EXTENSION_NAME, VK_KHR_SHADER_CLOCK_SPEC_VERSION, 17}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT, VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME, VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION, 16}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderDrawParametersFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES, VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME, VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION, 15}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderFloat16Int8Features>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES, VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME, VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION, 14}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderImageFootprintFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV, VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME, VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION, 13}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL, VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME, VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION, 12}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES, VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME, VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION, 11}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShadingRateImageFeaturesNV>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV, VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME, VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION, 10}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceSubgroupSizeControlFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT, VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME, VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION, 9}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT, VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME, VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION, 8}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceTimelineSemaphoreFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES, VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME, VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION, 7}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceTransformFeedbackFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT, VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME, VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION, 6}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceUniformBufferStandardLayoutFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES, VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME, VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION, 5}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceVariablePointersFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES, VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME, VK_KHR_VARIABLE_POINTERS_SPEC_VERSION, 4}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT, VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME, VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION, 3}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceVulkanMemoryModelFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES, VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME, VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION, 2}; }
+template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceYcbcrImageArraysFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT, VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME, VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION, 1}; }
+
+
+static const FeatureStructCreationData featureStructCreationArray[] =
 {
        { createFeatureStructWrapper<VkPhysicalDevice16BitStorageFeatures>, VK_KHR_16BIT_STORAGE_EXTENSION_NAME, VK_KHR_16BIT_STORAGE_SPEC_VERSION },
-       { createFeatureStructWrapper<VkPhysicalDevice8BitStorageFeaturesKHR>, VK_KHR_8BIT_STORAGE_EXTENSION_NAME, VK_KHR_8BIT_STORAGE_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDevice8BitStorageFeatures>, VK_KHR_8BIT_STORAGE_EXTENSION_NAME, VK_KHR_8BIT_STORAGE_SPEC_VERSION },
        { createFeatureStructWrapper<VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT>, VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME, VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceBufferDeviceAddressFeatures>, VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME, VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION },
        { createFeatureStructWrapper<VkPhysicalDeviceBufferDeviceAddressFeaturesEXT>, VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME, VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION },
        { createFeatureStructWrapper<VkPhysicalDeviceCoherentMemoryFeaturesAMD>, DECL_AMD_COHERENT_MEMORY_EXTENSION_NAME, 0 },
        { createFeatureStructWrapper<VkPhysicalDeviceComputeShaderDerivativesFeaturesNV>, VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME, VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION },
@@ -123,13 +274,13 @@ static const FeatureStructMapItem featureStructCreatorMap[] =
        { createFeatureStructWrapper<VkPhysicalDeviceCoverageReductionModeFeaturesNV>, VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME, VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION },
        { createFeatureStructWrapper<VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV>, VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME, VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION },
        { createFeatureStructWrapper<VkPhysicalDeviceDepthClipEnableFeaturesEXT>, VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME, VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION },
-       { createFeatureStructWrapper<VkPhysicalDeviceDescriptorIndexingFeaturesEXT>, VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME, VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceDescriptorIndexingFeatures>, VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME, VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION },
        { createFeatureStructWrapper<VkPhysicalDeviceExclusiveScissorFeaturesNV>, VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME, VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION },
        { createFeatureStructWrapper<VkPhysicalDeviceFragmentDensityMapFeaturesEXT>, VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME, VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION },
        { createFeatureStructWrapper<VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV>, VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME, VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION },
        { createFeatureStructWrapper<VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT>, VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME, VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION },
-       { createFeatureStructWrapper<VkPhysicalDeviceHostQueryResetFeaturesEXT>, VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME, VK_EXT_HOST_QUERY_RESET_SPEC_VERSION },
-       { createFeatureStructWrapper<VkPhysicalDeviceImagelessFramebufferFeaturesKHR>, VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME, VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceHostQueryResetFeatures>, VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME, VK_EXT_HOST_QUERY_RESET_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceImagelessFramebufferFeatures>, VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME, VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION },
        { createFeatureStructWrapper<VkPhysicalDeviceIndexTypeUint8FeaturesEXT>, VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME, VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION },
        { createFeatureStructWrapper<VkPhysicalDeviceInlineUniformBlockFeaturesEXT>, VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME, VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION },
        { createFeatureStructWrapper<VkPhysicalDeviceLineRasterizationFeaturesEXT>, VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME, VK_EXT_LINE_RASTERIZATION_SPEC_VERSION },
@@ -141,26 +292,55 @@ static const FeatureStructMapItem featureStructCreatorMap[] =
        { createFeatureStructWrapper<VkPhysicalDeviceProtectedMemoryFeatures>, DECL_PROTECTED_MEMORY_EXTENSION_NAME, 0 },
        { createFeatureStructWrapper<VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV>, VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME, VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION },
        { createFeatureStructWrapper<VkPhysicalDeviceSamplerYcbcrConversionFeatures>, VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME, VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION },
-       { createFeatureStructWrapper<VkPhysicalDeviceScalarBlockLayoutFeaturesEXT>, VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME, VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION },
-       { createFeatureStructWrapper<VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR>, VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME, VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION },
-       { createFeatureStructWrapper<VkPhysicalDeviceShaderAtomicInt64FeaturesKHR>, VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME, VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceScalarBlockLayoutFeatures>, VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME, VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures>, VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME, VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceShaderAtomicInt64Features>, VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME, VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION },
        { createFeatureStructWrapper<VkPhysicalDeviceShaderClockFeaturesKHR>, VK_KHR_SHADER_CLOCK_EXTENSION_NAME, VK_KHR_SHADER_CLOCK_SPEC_VERSION },
        { createFeatureStructWrapper<VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT>, VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME, VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION },
        { createFeatureStructWrapper<VkPhysicalDeviceShaderDrawParametersFeatures>, VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME, VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION },
-       { createFeatureStructWrapper<VkPhysicalDeviceShaderFloat16Int8FeaturesKHR>, VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME, VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceShaderFloat16Int8Features>, VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME, VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION },
        { createFeatureStructWrapper<VkPhysicalDeviceShaderImageFootprintFeaturesNV>, VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME, VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION },
        { createFeatureStructWrapper<VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL>, VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME, VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION },
-       { createFeatureStructWrapper<VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR>, VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME, VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures>, VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME, VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION },
        { createFeatureStructWrapper<VkPhysicalDeviceShadingRateImageFeaturesNV>, VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME, VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION },
        { createFeatureStructWrapper<VkPhysicalDeviceSubgroupSizeControlFeaturesEXT>, VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME, VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION },
        { createFeatureStructWrapper<VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT>, VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME, VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION },
-       { createFeatureStructWrapper<VkPhysicalDeviceTimelineSemaphoreFeaturesKHR>, VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME, VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceTimelineSemaphoreFeatures>, VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME, VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION },
        { createFeatureStructWrapper<VkPhysicalDeviceTransformFeedbackFeaturesEXT>, VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME, VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION },
-       { createFeatureStructWrapper<VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR>, VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME, VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceUniformBufferStandardLayoutFeatures>, VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME, VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION },
        { createFeatureStructWrapper<VkPhysicalDeviceVariablePointersFeatures>, VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME, VK_KHR_VARIABLE_POINTERS_SPEC_VERSION },
        { createFeatureStructWrapper<VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT>, VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME, VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION },
-       { createFeatureStructWrapper<VkPhysicalDeviceVulkanMemoryModelFeaturesKHR>, VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME, VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION },
+       { createFeatureStructWrapper<VkPhysicalDeviceVulkanMemoryModelFeatures>, VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME, VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION },
        { createFeatureStructWrapper<VkPhysicalDeviceYcbcrImageArraysFeaturesEXT>, VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME, VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION },
 };
+
+bool isPartOfBlobFeatures (VkStructureType sType)
+{
+       const std::vector<VkStructureType> sTypeVect =  {
+               // Vulkan11
+               VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES,
+               VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES,
+               VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES,
+               VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES,
+               VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES,
+               VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES,
+               // Vulkan12
+               VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES,
+               VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES,
+               VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES,
+               VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES,
+               VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES,
+               VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES,
+               VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES,
+               VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES,
+               VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES,
+               VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES,
+               VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES,
+               VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES,
+               VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES,
+       };
+       return de::contains(sTypeVect.begin(), sTypeVect.end(), sType);
+}
+
 } // vk
 
index 0d0c748..b902e8c 100644 (file)
@@ -1,53 +1,54 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  */
-const vk::VkPhysicalDevice16BitStorageFeatures&                                                        get16BitStorageFeatures                                         (void) const;
-const vk::VkPhysicalDevice8BitStorageFeaturesKHR&                                              get8BitStorageFeatures                                          (void) const;
-const vk::VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT&                   getBlendOperationAdvancedFeatures                       (void) const;
-const vk::VkPhysicalDeviceBufferDeviceAddressFeaturesEXT&                              getBufferDeviceAddressFeatures                          (void) const;
-const vk::VkPhysicalDeviceCoherentMemoryFeaturesAMD&                                   getCoherentMemoryFeaturesAMD                            (void) const;
-const vk::VkPhysicalDeviceComputeShaderDerivativesFeaturesNV&                  getComputeShaderDerivativesFeatures                     (void) const;
-const vk::VkPhysicalDeviceConditionalRenderingFeaturesEXT&                             getConditionalRenderingFeatures                         (void) const;
-const vk::VkPhysicalDeviceCooperativeMatrixFeaturesNV&                                 getCooperativeMatrixFeatures                            (void) const;
-const vk::VkPhysicalDeviceCornerSampledImageFeaturesNV&                                        getCornerSampledImageFeatures                           (void) const;
-const vk::VkPhysicalDeviceCoverageReductionModeFeaturesNV&                             getCoverageReductionModeFeatures                        (void) const;
-const vk::VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV&  getDedicatedAllocationImageAliasingFeatures     (void) const;
-const vk::VkPhysicalDeviceDepthClipEnableFeaturesEXT&                                  getDepthClipEnableFeatures                                      (void) const;
-const vk::VkPhysicalDeviceDescriptorIndexingFeaturesEXT&                               getDescriptorIndexingFeatures                           (void) const;
-const vk::VkPhysicalDeviceExclusiveScissorFeaturesNV&                                  getExclusiveScissorFeatures                                     (void) const;
-const vk::VkPhysicalDeviceFragmentDensityMapFeaturesEXT&                               getFragmentDensityMapFeatures                           (void) const;
-const vk::VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV&                 getFragmentShaderBarycentricFeatures            (void) const;
-const vk::VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT&                  getFragmentShaderInterlockFeatures                      (void) const;
-const vk::VkPhysicalDeviceHostQueryResetFeaturesEXT&                                   getHostQueryResetFeatures                                       (void) const;
-const vk::VkPhysicalDeviceImagelessFramebufferFeaturesKHR&                             getImagelessFramebufferFeatures                         (void) const;
-const vk::VkPhysicalDeviceIndexTypeUint8FeaturesEXT&                                   getIndexTypeUint8Features                                       (void) const;
-const vk::VkPhysicalDeviceInlineUniformBlockFeaturesEXT&                               getInlineUniformBlockFeatures                           (void) const;
-const vk::VkPhysicalDeviceLineRasterizationFeaturesEXT&                                        getLineRasterizationFeatures                            (void) const;
-const vk::VkPhysicalDeviceMemoryPriorityFeaturesEXT&                                   getMemoryPriorityFeatures                                       (void) const;
-const vk::VkPhysicalDeviceMeshShaderFeaturesNV&                                                        getMeshShaderFeatures                                           (void) const;
-const vk::VkPhysicalDeviceMultiviewFeatures&                                                   getMultiviewFeatures                                            (void) const;
-const vk::VkPhysicalDevicePerformanceQueryFeaturesKHR&                                 getPerformanceQueryFeatures                                     (void) const;
-const vk::VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR&             getPipelineExecutablePropertiesFeatures         (void) const;
-const vk::VkPhysicalDeviceProtectedMemoryFeatures&                                             getProtectedMemoryFeatures                                      (void) const;
-const vk::VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV&                        getRepresentativeFragmentTestFeatures           (void) const;
-const vk::VkPhysicalDeviceSamplerYcbcrConversionFeatures&                              getSamplerYcbcrConversionFeatures                       (void) const;
-const vk::VkPhysicalDeviceScalarBlockLayoutFeaturesEXT&                                        getScalarBlockLayoutFeatures                            (void) const;
-const vk::VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR&              getSeparateDepthStencilLayoutsFeatures          (void) const;
-const vk::VkPhysicalDeviceShaderAtomicInt64FeaturesKHR&                                        getShaderAtomicInt64Features                            (void) const;
-const vk::VkPhysicalDeviceShaderClockFeaturesKHR&                                              getShaderClockFeatures                                          (void) const;
-const vk::VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT&   getShaderDemoteToHelperInvocationFeatures       (void) const;
-const vk::VkPhysicalDeviceShaderDrawParametersFeatures&                                        getShaderDrawParametersFeatures                         (void) const;
-const vk::VkPhysicalDeviceShaderFloat16Int8FeaturesKHR&                                        getShaderFloat16Int8Features                            (void) const;
-const vk::VkPhysicalDeviceShaderImageFootprintFeaturesNV&                              getShaderImageFootprintFeatures                         (void) const;
-const vk::VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL&                        getShaderIntegerFunctions2FeaturesINTEL         (void) const;
-const vk::VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR&              getShaderSubgroupExtendedTypesFeatures          (void) const;
-const vk::VkPhysicalDeviceShadingRateImageFeaturesNV&                                  getShadingRateImageFeatures                                     (void) const;
-const vk::VkPhysicalDeviceSubgroupSizeControlFeaturesEXT&                              getSubgroupSizeControlFeatures                          (void) const;
-const vk::VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT&                             getTexelBufferAlignmentFeatures                         (void) const;
-const vk::VkPhysicalDeviceTimelineSemaphoreFeaturesKHR&                                        getTimelineSemaphoreFeatures                            (void) const;
-const vk::VkPhysicalDeviceTransformFeedbackFeaturesEXT&                                        getTransformFeedbackFeatures                            (void) const;
-const vk::VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR&              getUniformBufferStandardLayoutFeatures          (void) const;
-const vk::VkPhysicalDeviceVariablePointersFeatures&                                            getVariablePointersFeatures                                     (void) const;
-const vk::VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT&                   getVertexAttributeDivisorFeatures                       (void) const;
-const vk::VkPhysicalDeviceVulkanMemoryModelFeaturesKHR&                                        getVulkanMemoryModelFeatures                            (void) const;
-const vk::VkPhysicalDeviceYcbcrImageArraysFeaturesEXT&                                 getYcbcrImageArraysFeatures                                     (void) const;
+const vk::VkPhysicalDevice16BitStorageFeatures&                                                        get16BitStorageFeatures                                                 (void) const;
+const vk::VkPhysicalDevice8BitStorageFeatures&                                                 get8BitStorageFeatures                                                  (void) const;
+const vk::VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT&                   getBlendOperationAdvancedFeaturesEXT                    (void) const;
+const vk::VkPhysicalDeviceBufferDeviceAddressFeatures&                                 getBufferDeviceAddressFeatures                                  (void) const;
+const vk::VkPhysicalDeviceBufferDeviceAddressFeaturesEXT&                              getBufferDeviceAddressFeaturesEXT                               (void) const;
+const vk::VkPhysicalDeviceCoherentMemoryFeaturesAMD&                                   getCoherentMemoryFeaturesAMD                                    (void) const;
+const vk::VkPhysicalDeviceComputeShaderDerivativesFeaturesNV&                  getComputeShaderDerivativesFeatures                             (void) const;
+const vk::VkPhysicalDeviceConditionalRenderingFeaturesEXT&                             getConditionalRenderingFeaturesEXT                              (void) const;
+const vk::VkPhysicalDeviceCooperativeMatrixFeaturesNV&                                 getCooperativeMatrixFeatures                                    (void) const;
+const vk::VkPhysicalDeviceCornerSampledImageFeaturesNV&                                        getCornerSampledImageFeatures                                   (void) const;
+const vk::VkPhysicalDeviceCoverageReductionModeFeaturesNV&                             getCoverageReductionModeFeatures                                (void) const;
+const vk::VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV&  getDedicatedAllocationImageAliasingFeatures             (void) const;
+const vk::VkPhysicalDeviceDepthClipEnableFeaturesEXT&                                  getDepthClipEnableFeaturesEXT                                   (void) const;
+const vk::VkPhysicalDeviceDescriptorIndexingFeatures&                                  getDescriptorIndexingFeatures                                   (void) const;
+const vk::VkPhysicalDeviceExclusiveScissorFeaturesNV&                                  getExclusiveScissorFeatures                                             (void) const;
+const vk::VkPhysicalDeviceFragmentDensityMapFeaturesEXT&                               getFragmentDensityMapFeaturesEXT                                (void) const;
+const vk::VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV&                 getFragmentShaderBarycentricFeatures                    (void) const;
+const vk::VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT&                  getFragmentShaderInterlockFeaturesEXT                   (void) const;
+const vk::VkPhysicalDeviceHostQueryResetFeatures&                                              getHostQueryResetFeatures                                               (void) const;
+const vk::VkPhysicalDeviceImagelessFramebufferFeatures&                                        getImagelessFramebufferFeatures                                 (void) const;
+const vk::VkPhysicalDeviceIndexTypeUint8FeaturesEXT&                                   getIndexTypeUint8FeaturesEXT                                    (void) const;
+const vk::VkPhysicalDeviceInlineUniformBlockFeaturesEXT&                               getInlineUniformBlockFeaturesEXT                                (void) const;
+const vk::VkPhysicalDeviceLineRasterizationFeaturesEXT&                                        getLineRasterizationFeaturesEXT                                 (void) const;
+const vk::VkPhysicalDeviceMemoryPriorityFeaturesEXT&                                   getMemoryPriorityFeaturesEXT                                    (void) const;
+const vk::VkPhysicalDeviceMeshShaderFeaturesNV&                                                        getMeshShaderFeatures                                                   (void) const;
+const vk::VkPhysicalDeviceMultiviewFeatures&                                                   getMultiviewFeatures                                                    (void) const;
+const vk::VkPhysicalDevicePerformanceQueryFeaturesKHR&                                 getPerformanceQueryFeatures                                             (void) const;
+const vk::VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR&             getPipelineExecutablePropertiesFeatures                 (void) const;
+const vk::VkPhysicalDeviceProtectedMemoryFeatures&                                             getProtectedMemoryFeatures                                              (void) const;
+const vk::VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV&                        getRepresentativeFragmentTestFeatures                   (void) const;
+const vk::VkPhysicalDeviceSamplerYcbcrConversionFeatures&                              getSamplerYcbcrConversionFeatures                               (void) const;
+const vk::VkPhysicalDeviceScalarBlockLayoutFeatures&                                   getScalarBlockLayoutFeatures                                    (void) const;
+const vk::VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures&                 getSeparateDepthStencilLayoutsFeatures                  (void) const;
+const vk::VkPhysicalDeviceShaderAtomicInt64Features&                                   getShaderAtomicInt64Features                                    (void) const;
+const vk::VkPhysicalDeviceShaderClockFeaturesKHR&                                              getShaderClockFeatures                                                  (void) const;
+const vk::VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT&   getShaderDemoteToHelperInvocationFeaturesEXT    (void) const;
+const vk::VkPhysicalDeviceShaderDrawParametersFeatures&                                        getShaderDrawParametersFeatures                                 (void) const;
+const vk::VkPhysicalDeviceShaderFloat16Int8Features&                                   getShaderFloat16Int8Features                                    (void) const;
+const vk::VkPhysicalDeviceShaderImageFootprintFeaturesNV&                              getShaderImageFootprintFeatures                                 (void) const;
+const vk::VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL&                        getShaderIntegerFunctions2FeaturesINTEL                 (void) const;
+const vk::VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures&                 getShaderSubgroupExtendedTypesFeatures                  (void) const;
+const vk::VkPhysicalDeviceShadingRateImageFeaturesNV&                                  getShadingRateImageFeatures                                             (void) const;
+const vk::VkPhysicalDeviceSubgroupSizeControlFeaturesEXT&                              getSubgroupSizeControlFeaturesEXT                               (void) const;
+const vk::VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT&                             getTexelBufferAlignmentFeaturesEXT                              (void) const;
+const vk::VkPhysicalDeviceTimelineSemaphoreFeatures&                                   getTimelineSemaphoreFeatures                                    (void) const;
+const vk::VkPhysicalDeviceTransformFeedbackFeaturesEXT&                                        getTransformFeedbackFeaturesEXT                                 (void) const;
+const vk::VkPhysicalDeviceUniformBufferStandardLayoutFeatures&                 getUniformBufferStandardLayoutFeatures                  (void) const;
+const vk::VkPhysicalDeviceVariablePointersFeatures&                                            getVariablePointersFeatures                                             (void) const;
+const vk::VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT&                   getVertexAttributeDivisorFeaturesEXT                    (void) const;
+const vk::VkPhysicalDeviceVulkanMemoryModelFeatures&                                   getVulkanMemoryModelFeatures                                    (void) const;
+const vk::VkPhysicalDeviceYcbcrImageArraysFeaturesEXT&                                 getYcbcrImageArraysFeaturesEXT                                  (void) const;
index 44ccff2..8a4d777 100644 (file)
@@ -2,28 +2,29 @@
  * be lost! Modify the generating script instead.
  */
 const vk::VkPhysicalDevice16BitStorageFeatures&                                                        Context::get16BitStorageFeatures                                                (void) const { return m_device->get16BitStorageFeatures();                                              }
-const vk::VkPhysicalDevice8BitStorageFeaturesKHR&                                              Context::get8BitStorageFeatures                                                 (void) const { return m_device->get8BitStorageFeatures();                                               }
-const vk::VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT&                   Context::getBlendOperationAdvancedFeatures                              (void) const { return m_device->getBlendOperationAdvancedFeatures();                    }
-const vk::VkPhysicalDeviceBufferDeviceAddressFeaturesEXT&                              Context::getBufferDeviceAddressFeatures                                 (void) const { return m_device->getBufferDeviceAddressFeatures();                               }
+const vk::VkPhysicalDevice8BitStorageFeatures&                                                 Context::get8BitStorageFeatures                                                 (void) const { return m_device->get8BitStorageFeatures();                                               }
+const vk::VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT&                   Context::getBlendOperationAdvancedFeaturesEXT                   (void) const { return m_device->getBlendOperationAdvancedFeaturesEXT();                 }
+const vk::VkPhysicalDeviceBufferDeviceAddressFeatures&                                 Context::getBufferDeviceAddressFeatures                                 (void) const { return m_device->getBufferDeviceAddressFeatures();                               }
+const vk::VkPhysicalDeviceBufferDeviceAddressFeaturesEXT&                              Context::getBufferDeviceAddressFeaturesEXT                              (void) const { return m_device->getBufferDeviceAddressFeaturesEXT();                    }
 const vk::VkPhysicalDeviceCoherentMemoryFeaturesAMD&                                   Context::getCoherentMemoryFeaturesAMD                                   (void) const { return m_device->getCoherentMemoryFeaturesAMD();                                 }
 const vk::VkPhysicalDeviceComputeShaderDerivativesFeaturesNV&                  Context::getComputeShaderDerivativesFeatures                    (void) const { return m_device->getComputeShaderDerivativesFeatures();                  }
-const vk::VkPhysicalDeviceConditionalRenderingFeaturesEXT&                             Context::getConditionalRenderingFeatures                                (void) const { return m_device->getConditionalRenderingFeatures();                              }
+const vk::VkPhysicalDeviceConditionalRenderingFeaturesEXT&                             Context::getConditionalRenderingFeaturesEXT                             (void) const { return m_device->getConditionalRenderingFeaturesEXT();                   }
 const vk::VkPhysicalDeviceCooperativeMatrixFeaturesNV&                                 Context::getCooperativeMatrixFeatures                                   (void) const { return m_device->getCooperativeMatrixFeatures();                                 }
 const vk::VkPhysicalDeviceCornerSampledImageFeaturesNV&                                        Context::getCornerSampledImageFeatures                                  (void) const { return m_device->getCornerSampledImageFeatures();                                }
 const vk::VkPhysicalDeviceCoverageReductionModeFeaturesNV&                             Context::getCoverageReductionModeFeatures                               (void) const { return m_device->getCoverageReductionModeFeatures();                             }
 const vk::VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV&  Context::getDedicatedAllocationImageAliasingFeatures    (void) const { return m_device->getDedicatedAllocationImageAliasingFeatures();  }
-const vk::VkPhysicalDeviceDepthClipEnableFeaturesEXT&                                  Context::getDepthClipEnableFeatures                                             (void) const { return m_device->getDepthClipEnableFeatures();                                   }
-const vk::VkPhysicalDeviceDescriptorIndexingFeaturesEXT&                               Context::getDescriptorIndexingFeatures                                  (void) const { return m_device->getDescriptorIndexingFeatures();                                }
+const vk::VkPhysicalDeviceDepthClipEnableFeaturesEXT&                                  Context::getDepthClipEnableFeaturesEXT                                  (void) const { return m_device->getDepthClipEnableFeaturesEXT();                                }
+const vk::VkPhysicalDeviceDescriptorIndexingFeatures&                                  Context::getDescriptorIndexingFeatures                                  (void) const { return m_device->getDescriptorIndexingFeatures();                                }
 const vk::VkPhysicalDeviceExclusiveScissorFeaturesNV&                                  Context::getExclusiveScissorFeatures                                    (void) const { return m_device->getExclusiveScissorFeatures();                                  }
-const vk::VkPhysicalDeviceFragmentDensityMapFeaturesEXT&                               Context::getFragmentDensityMapFeatures                                  (void) const { return m_device->getFragmentDensityMapFeatures();                                }
+const vk::VkPhysicalDeviceFragmentDensityMapFeaturesEXT&                               Context::getFragmentDensityMapFeaturesEXT                               (void) const { return m_device->getFragmentDensityMapFeaturesEXT();                             }
 const vk::VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV&                 Context::getFragmentShaderBarycentricFeatures                   (void) const { return m_device->getFragmentShaderBarycentricFeatures();                 }
-const vk::VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT&                  Context::getFragmentShaderInterlockFeatures                             (void) const { return m_device->getFragmentShaderInterlockFeatures();                   }
-const vk::VkPhysicalDeviceHostQueryResetFeaturesEXT&                                   Context::getHostQueryResetFeatures                                              (void) const { return m_device->getHostQueryResetFeatures();                                    }
-const vk::VkPhysicalDeviceImagelessFramebufferFeaturesKHR&                             Context::getImagelessFramebufferFeatures                                (void) const { return m_device->getImagelessFramebufferFeatures();                              }
-const vk::VkPhysicalDeviceIndexTypeUint8FeaturesEXT&                                   Context::getIndexTypeUint8Features                                              (void) const { return m_device->getIndexTypeUint8Features();                                    }
-const vk::VkPhysicalDeviceInlineUniformBlockFeaturesEXT&                               Context::getInlineUniformBlockFeatures                                  (void) const { return m_device->getInlineUniformBlockFeatures();                                }
-const vk::VkPhysicalDeviceLineRasterizationFeaturesEXT&                                        Context::getLineRasterizationFeatures                                   (void) const { return m_device->getLineRasterizationFeatures();                                 }
-const vk::VkPhysicalDeviceMemoryPriorityFeaturesEXT&                                   Context::getMemoryPriorityFeatures                                              (void) const { return m_device->getMemoryPriorityFeatures();                                    }
+const vk::VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT&                  Context::getFragmentShaderInterlockFeaturesEXT                  (void) const { return m_device->getFragmentShaderInterlockFeaturesEXT();                }
+const vk::VkPhysicalDeviceHostQueryResetFeatures&                                              Context::getHostQueryResetFeatures                                              (void) const { return m_device->getHostQueryResetFeatures();                                    }
+const vk::VkPhysicalDeviceImagelessFramebufferFeatures&                                        Context::getImagelessFramebufferFeatures                                (void) const { return m_device->getImagelessFramebufferFeatures();                              }
+const vk::VkPhysicalDeviceIndexTypeUint8FeaturesEXT&                                   Context::getIndexTypeUint8FeaturesEXT                                   (void) const { return m_device->getIndexTypeUint8FeaturesEXT();                                 }
+const vk::VkPhysicalDeviceInlineUniformBlockFeaturesEXT&                               Context::getInlineUniformBlockFeaturesEXT                               (void) const { return m_device->getInlineUniformBlockFeaturesEXT();                             }
+const vk::VkPhysicalDeviceLineRasterizationFeaturesEXT&                                        Context::getLineRasterizationFeaturesEXT                                (void) const { return m_device->getLineRasterizationFeaturesEXT();                              }
+const vk::VkPhysicalDeviceMemoryPriorityFeaturesEXT&                                   Context::getMemoryPriorityFeaturesEXT                                   (void) const { return m_device->getMemoryPriorityFeaturesEXT();                                 }
 const vk::VkPhysicalDeviceMeshShaderFeaturesNV&                                                        Context::getMeshShaderFeatures                                                  (void) const { return m_device->getMeshShaderFeatures();                                                }
 const vk::VkPhysicalDeviceMultiviewFeatures&                                                   Context::getMultiviewFeatures                                                   (void) const { return m_device->getMultiviewFeatures();                                                 }
 const vk::VkPhysicalDevicePerformanceQueryFeaturesKHR&                                 Context::getPerformanceQueryFeatures                                    (void) const { return m_device->getPerformanceQueryFeatures();                                  }
@@ -31,23 +32,23 @@ const vk::VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR&          Context::get
 const vk::VkPhysicalDeviceProtectedMemoryFeatures&                                             Context::getProtectedMemoryFeatures                                             (void) const { return m_device->getProtectedMemoryFeatures();                                   }
 const vk::VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV&                        Context::getRepresentativeFragmentTestFeatures                  (void) const { return m_device->getRepresentativeFragmentTestFeatures();                }
 const vk::VkPhysicalDeviceSamplerYcbcrConversionFeatures&                              Context::getSamplerYcbcrConversionFeatures                              (void) const { return m_device->getSamplerYcbcrConversionFeatures();                    }
-const vk::VkPhysicalDeviceScalarBlockLayoutFeaturesEXT&                                        Context::getScalarBlockLayoutFeatures                                   (void) const { return m_device->getScalarBlockLayoutFeatures();                                 }
-const vk::VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR&              Context::getSeparateDepthStencilLayoutsFeatures                 (void) const { return m_device->getSeparateDepthStencilLayoutsFeatures();               }
-const vk::VkPhysicalDeviceShaderAtomicInt64FeaturesKHR&                                        Context::getShaderAtomicInt64Features                                   (void) const { return m_device->getShaderAtomicInt64Features();                                 }
+const vk::VkPhysicalDeviceScalarBlockLayoutFeatures&                                   Context::getScalarBlockLayoutFeatures                                   (void) const { return m_device->getScalarBlockLayoutFeatures();                                 }
+const vk::VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures&                 Context::getSeparateDepthStencilLayoutsFeatures                 (void) const { return m_device->getSeparateDepthStencilLayoutsFeatures();               }
+const vk::VkPhysicalDeviceShaderAtomicInt64Features&                                   Context::getShaderAtomicInt64Features                                   (void) const { return m_device->getShaderAtomicInt64Features();                                 }
 const vk::VkPhysicalDeviceShaderClockFeaturesKHR&                                              Context::getShaderClockFeatures                                                 (void) const { return m_device->getShaderClockFeatures();                                               }
-const vk::VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT&   Context::getShaderDemoteToHelperInvocationFeatures              (void) const { return m_device->getShaderDemoteToHelperInvocationFeatures();    }
+const vk::VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT&   Context::getShaderDemoteToHelperInvocationFeaturesEXT   (void) const { return m_device->getShaderDemoteToHelperInvocationFeaturesEXT(); }
 const vk::VkPhysicalDeviceShaderDrawParametersFeatures&                                        Context::getShaderDrawParametersFeatures                                (void) const { return m_device->getShaderDrawParametersFeatures();                              }
-const vk::VkPhysicalDeviceShaderFloat16Int8FeaturesKHR&                                        Context::getShaderFloat16Int8Features                                   (void) const { return m_device->getShaderFloat16Int8Features();                                 }
+const vk::VkPhysicalDeviceShaderFloat16Int8Features&                                   Context::getShaderFloat16Int8Features                                   (void) const { return m_device->getShaderFloat16Int8Features();                                 }
 const vk::VkPhysicalDeviceShaderImageFootprintFeaturesNV&                              Context::getShaderImageFootprintFeatures                                (void) const { return m_device->getShaderImageFootprintFeatures();                              }
 const vk::VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL&                        Context::getShaderIntegerFunctions2FeaturesINTEL                (void) const { return m_device->getShaderIntegerFunctions2FeaturesINTEL();              }
-const vk::VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR&              Context::getShaderSubgroupExtendedTypesFeatures                 (void) const { return m_device->getShaderSubgroupExtendedTypesFeatures();               }
+const vk::VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures&                 Context::getShaderSubgroupExtendedTypesFeatures                 (void) const { return m_device->getShaderSubgroupExtendedTypesFeatures();               }
 const vk::VkPhysicalDeviceShadingRateImageFeaturesNV&                                  Context::getShadingRateImageFeatures                                    (void) const { return m_device->getShadingRateImageFeatures();                                  }
-const vk::VkPhysicalDeviceSubgroupSizeControlFeaturesEXT&                              Context::getSubgroupSizeControlFeatures                                 (void) const { return m_device->getSubgroupSizeControlFeatures();                               }
-const vk::VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT&                             Context::getTexelBufferAlignmentFeatures                                (void) const { return m_device->getTexelBufferAlignmentFeatures();                              }
-const vk::VkPhysicalDeviceTimelineSemaphoreFeaturesKHR&                                        Context::getTimelineSemaphoreFeatures                                   (void) const { return m_device->getTimelineSemaphoreFeatures();                                 }
-const vk::VkPhysicalDeviceTransformFeedbackFeaturesEXT&                                        Context::getTransformFeedbackFeatures                                   (void) const { return m_device->getTransformFeedbackFeatures();                                 }
-const vk::VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR&              Context::getUniformBufferStandardLayoutFeatures                 (void) const { return m_device->getUniformBufferStandardLayoutFeatures();               }
+const vk::VkPhysicalDeviceSubgroupSizeControlFeaturesEXT&                              Context::getSubgroupSizeControlFeaturesEXT                              (void) const { return m_device->getSubgroupSizeControlFeaturesEXT();                    }
+const vk::VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT&                             Context::getTexelBufferAlignmentFeaturesEXT                             (void) const { return m_device->getTexelBufferAlignmentFeaturesEXT();                   }
+const vk::VkPhysicalDeviceTimelineSemaphoreFeatures&                                   Context::getTimelineSemaphoreFeatures                                   (void) const { return m_device->getTimelineSemaphoreFeatures();                                 }
+const vk::VkPhysicalDeviceTransformFeedbackFeaturesEXT&                                        Context::getTransformFeedbackFeaturesEXT                                (void) const { return m_device->getTransformFeedbackFeaturesEXT();                              }
+const vk::VkPhysicalDeviceUniformBufferStandardLayoutFeatures&                 Context::getUniformBufferStandardLayoutFeatures                 (void) const { return m_device->getUniformBufferStandardLayoutFeatures();               }
 const vk::VkPhysicalDeviceVariablePointersFeatures&                                            Context::getVariablePointersFeatures                                    (void) const { return m_device->getVariablePointersFeatures();                                  }
-const vk::VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT&                   Context::getVertexAttributeDivisorFeatures                              (void) const { return m_device->getVertexAttributeDivisorFeatures();                    }
-const vk::VkPhysicalDeviceVulkanMemoryModelFeaturesKHR&                                        Context::getVulkanMemoryModelFeatures                                   (void) const { return m_device->getVulkanMemoryModelFeatures();                                 }
-const vk::VkPhysicalDeviceYcbcrImageArraysFeaturesEXT&                                 Context::getYcbcrImageArraysFeatures                                    (void) const { return m_device->getYcbcrImageArraysFeatures();                                  }
+const vk::VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT&                   Context::getVertexAttributeDivisorFeaturesEXT                   (void) const { return m_device->getVertexAttributeDivisorFeaturesEXT();                 }
+const vk::VkPhysicalDeviceVulkanMemoryModelFeatures&                                   Context::getVulkanMemoryModelFeatures                                   (void) const { return m_device->getVulkanMemoryModelFeatures();                                 }
+const vk::VkPhysicalDeviceYcbcrImageArraysFeaturesEXT&                                 Context::getYcbcrImageArraysFeaturesEXT                                 (void) const { return m_device->getYcbcrImageArraysFeaturesEXT();                               }
index 4d3d6b7..152bca1 100644 (file)
@@ -1,53 +1,54 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  */
-const VkPhysicalDevice16BitStorageFeatures&                                                    get16BitStorageFeatures                                         (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevice16BitStorageFeatures>();                                                  }
-const VkPhysicalDevice8BitStorageFeaturesKHR&                                          get8BitStorageFeatures                                          (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevice8BitStorageFeaturesKHR>();                                                }
-const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT&                       getBlendOperationAdvancedFeatures                       (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT>();                             }
-const VkPhysicalDeviceBufferDeviceAddressFeaturesEXT&                          getBufferDeviceAddressFeatures                          (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceBufferDeviceAddressFeaturesEXT>();                                }
-const VkPhysicalDeviceCoherentMemoryFeaturesAMD&                                       getCoherentMemoryFeaturesAMD                            (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceCoherentMemoryFeaturesAMD>();                                             }
-const VkPhysicalDeviceComputeShaderDerivativesFeaturesNV&                      getComputeShaderDerivativesFeatures                     (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceComputeShaderDerivativesFeaturesNV>();                    }
-const VkPhysicalDeviceConditionalRenderingFeaturesEXT&                         getConditionalRenderingFeatures                         (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceConditionalRenderingFeaturesEXT>();                               }
-const VkPhysicalDeviceCooperativeMatrixFeaturesNV&                                     getCooperativeMatrixFeatures                            (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceCooperativeMatrixFeaturesNV>();                                   }
-const VkPhysicalDeviceCornerSampledImageFeaturesNV&                                    getCornerSampledImageFeatures                           (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceCornerSampledImageFeaturesNV>();                                  }
-const VkPhysicalDeviceCoverageReductionModeFeaturesNV&                         getCoverageReductionModeFeatures                        (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceCoverageReductionModeFeaturesNV>();                               }
-const VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV&      getDedicatedAllocationImageAliasingFeatures     (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV>();    }
-const VkPhysicalDeviceDepthClipEnableFeaturesEXT&                                      getDepthClipEnableFeatures                                      (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceDepthClipEnableFeaturesEXT>();                                    }
-const VkPhysicalDeviceDescriptorIndexingFeaturesEXT&                           getDescriptorIndexingFeatures                           (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceDescriptorIndexingFeaturesEXT>();                                 }
-const VkPhysicalDeviceExclusiveScissorFeaturesNV&                                      getExclusiveScissorFeatures                                     (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceExclusiveScissorFeaturesNV>();                                    }
-const VkPhysicalDeviceFragmentDensityMapFeaturesEXT&                           getFragmentDensityMapFeatures                           (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceFragmentDensityMapFeaturesEXT>();                                 }
-const VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV&                     getFragmentShaderBarycentricFeatures            (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV>();                   }
-const VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT&                      getFragmentShaderInterlockFeatures                      (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT>();                    }
-const VkPhysicalDeviceHostQueryResetFeaturesEXT&                                       getHostQueryResetFeatures                                       (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceHostQueryResetFeaturesEXT>();                                             }
-const VkPhysicalDeviceImagelessFramebufferFeaturesKHR&                         getImagelessFramebufferFeatures                         (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceImagelessFramebufferFeaturesKHR>();                               }
-const VkPhysicalDeviceIndexTypeUint8FeaturesEXT&                                       getIndexTypeUint8Features                                       (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceIndexTypeUint8FeaturesEXT>();                                             }
-const VkPhysicalDeviceInlineUniformBlockFeaturesEXT&                           getInlineUniformBlockFeatures                           (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceInlineUniformBlockFeaturesEXT>();                                 }
-const VkPhysicalDeviceLineRasterizationFeaturesEXT&                                    getLineRasterizationFeatures                            (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceLineRasterizationFeaturesEXT>();                                  }
-const VkPhysicalDeviceMemoryPriorityFeaturesEXT&                                       getMemoryPriorityFeatures                                       (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceMemoryPriorityFeaturesEXT>();                                             }
-const VkPhysicalDeviceMeshShaderFeaturesNV&                                                    getMeshShaderFeatures                                           (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceMeshShaderFeaturesNV>();                                                  }
-const VkPhysicalDeviceMultiviewFeatures&                                                       getMultiviewFeatures                                            (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceMultiviewFeatures>();                                                             }
-const VkPhysicalDevicePerformanceQueryFeaturesKHR&                                     getPerformanceQueryFeatures                                     (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevicePerformanceQueryFeaturesKHR>();                                   }
-const VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR&         getPipelineExecutablePropertiesFeatures         (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR>();               }
-const VkPhysicalDeviceProtectedMemoryFeatures&                                         getProtectedMemoryFeatures                                      (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceProtectedMemoryFeatures>();                                               }
-const VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV&                    getRepresentativeFragmentTestFeatures           (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV>();                  }
-const VkPhysicalDeviceSamplerYcbcrConversionFeatures&                          getSamplerYcbcrConversionFeatures                       (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceSamplerYcbcrConversionFeatures>();                                }
-const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT&                                    getScalarBlockLayoutFeatures                            (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceScalarBlockLayoutFeaturesEXT>();                                  }
-const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR&          getSeparateDepthStencilLayoutsFeatures          (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR>();                }
-const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR&                                    getShaderAtomicInt64Features                            (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderAtomicInt64FeaturesKHR>();                                  }
-const VkPhysicalDeviceShaderClockFeaturesKHR&                                          getShaderClockFeatures                                          (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderClockFeaturesKHR>();                                                }
-const VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT&       getShaderDemoteToHelperInvocationFeatures       (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT>();             }
-const VkPhysicalDeviceShaderDrawParametersFeatures&                                    getShaderDrawParametersFeatures                         (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderDrawParametersFeatures>();                                  }
-const VkPhysicalDeviceShaderFloat16Int8FeaturesKHR&                                    getShaderFloat16Int8Features                            (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderFloat16Int8FeaturesKHR>();                                  }
-const VkPhysicalDeviceShaderImageFootprintFeaturesNV&                          getShaderImageFootprintFeatures                         (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderImageFootprintFeaturesNV>();                                }
-const VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL&                    getShaderIntegerFunctions2FeaturesINTEL         (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL>();                  }
-const VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR&          getShaderSubgroupExtendedTypesFeatures          (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR>();                }
-const VkPhysicalDeviceShadingRateImageFeaturesNV&                                      getShadingRateImageFeatures                                     (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShadingRateImageFeaturesNV>();                                    }
-const VkPhysicalDeviceSubgroupSizeControlFeaturesEXT&                          getSubgroupSizeControlFeatures                          (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceSubgroupSizeControlFeaturesEXT>();                                }
-const VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT&                         getTexelBufferAlignmentFeatures                         (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT>();                               }
-const VkPhysicalDeviceTimelineSemaphoreFeaturesKHR&                                    getTimelineSemaphoreFeatures                            (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceTimelineSemaphoreFeaturesKHR>();                                  }
-const VkPhysicalDeviceTransformFeedbackFeaturesEXT&                                    getTransformFeedbackFeatures                            (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceTransformFeedbackFeaturesEXT>();                                  }
-const VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR&          getUniformBufferStandardLayoutFeatures          (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR>();                }
-const VkPhysicalDeviceVariablePointersFeatures&                                                getVariablePointersFeatures                                     (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceVariablePointersFeatures>();                                              }
-const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT&                       getVertexAttributeDivisorFeatures                       (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT>();                             }
-const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR&                                    getVulkanMemoryModelFeatures                            (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceVulkanMemoryModelFeaturesKHR>();                                  }
-const VkPhysicalDeviceYcbcrImageArraysFeaturesEXT&                                     getYcbcrImageArraysFeatures                                     (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceYcbcrImageArraysFeaturesEXT>();                                   }
+const VkPhysicalDevice16BitStorageFeatures&                                                    get16BitStorageFeatures                                                 (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevice16BitStorageFeatures>();                                                  }
+const VkPhysicalDevice8BitStorageFeatures&                                                     get8BitStorageFeatures                                                  (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevice8BitStorageFeatures>();                                                   }
+const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT&                       getBlendOperationAdvancedFeaturesEXT                    (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT>();                             }
+const VkPhysicalDeviceBufferDeviceAddressFeatures&                                     getBufferDeviceAddressFeatures                                  (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceBufferDeviceAddressFeatures>();                                   }
+const VkPhysicalDeviceBufferDeviceAddressFeaturesEXT&                          getBufferDeviceAddressFeaturesEXT                               (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceBufferDeviceAddressFeaturesEXT>();                                }
+const VkPhysicalDeviceCoherentMemoryFeaturesAMD&                                       getCoherentMemoryFeaturesAMD                                    (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceCoherentMemoryFeaturesAMD>();                                             }
+const VkPhysicalDeviceComputeShaderDerivativesFeaturesNV&                      getComputeShaderDerivativesFeatures                             (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceComputeShaderDerivativesFeaturesNV>();                    }
+const VkPhysicalDeviceConditionalRenderingFeaturesEXT&                         getConditionalRenderingFeaturesEXT                              (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceConditionalRenderingFeaturesEXT>();                               }
+const VkPhysicalDeviceCooperativeMatrixFeaturesNV&                                     getCooperativeMatrixFeatures                                    (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceCooperativeMatrixFeaturesNV>();                                   }
+const VkPhysicalDeviceCornerSampledImageFeaturesNV&                                    getCornerSampledImageFeatures                                   (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceCornerSampledImageFeaturesNV>();                                  }
+const VkPhysicalDeviceCoverageReductionModeFeaturesNV&                         getCoverageReductionModeFeatures                                (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceCoverageReductionModeFeaturesNV>();                               }
+const VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV&      getDedicatedAllocationImageAliasingFeatures             (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV>();    }
+const VkPhysicalDeviceDepthClipEnableFeaturesEXT&                                      getDepthClipEnableFeaturesEXT                                   (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceDepthClipEnableFeaturesEXT>();                                    }
+const VkPhysicalDeviceDescriptorIndexingFeatures&                                      getDescriptorIndexingFeatures                                   (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceDescriptorIndexingFeatures>();                                    }
+const VkPhysicalDeviceExclusiveScissorFeaturesNV&                                      getExclusiveScissorFeatures                                             (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceExclusiveScissorFeaturesNV>();                                    }
+const VkPhysicalDeviceFragmentDensityMapFeaturesEXT&                           getFragmentDensityMapFeaturesEXT                                (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceFragmentDensityMapFeaturesEXT>();                                 }
+const VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV&                     getFragmentShaderBarycentricFeatures                    (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV>();                   }
+const VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT&                      getFragmentShaderInterlockFeaturesEXT                   (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT>();                    }
+const VkPhysicalDeviceHostQueryResetFeatures&                                          getHostQueryResetFeatures                                               (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceHostQueryResetFeatures>();                                                }
+const VkPhysicalDeviceImagelessFramebufferFeatures&                                    getImagelessFramebufferFeatures                                 (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceImagelessFramebufferFeatures>();                                  }
+const VkPhysicalDeviceIndexTypeUint8FeaturesEXT&                                       getIndexTypeUint8FeaturesEXT                                    (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceIndexTypeUint8FeaturesEXT>();                                             }
+const VkPhysicalDeviceInlineUniformBlockFeaturesEXT&                           getInlineUniformBlockFeaturesEXT                                (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceInlineUniformBlockFeaturesEXT>();                                 }
+const VkPhysicalDeviceLineRasterizationFeaturesEXT&                                    getLineRasterizationFeaturesEXT                                 (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceLineRasterizationFeaturesEXT>();                                  }
+const VkPhysicalDeviceMemoryPriorityFeaturesEXT&                                       getMemoryPriorityFeaturesEXT                                    (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceMemoryPriorityFeaturesEXT>();                                             }
+const VkPhysicalDeviceMeshShaderFeaturesNV&                                                    getMeshShaderFeatures                                                   (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceMeshShaderFeaturesNV>();                                                  }
+const VkPhysicalDeviceMultiviewFeatures&                                                       getMultiviewFeatures                                                    (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceMultiviewFeatures>();                                                             }
+const VkPhysicalDevicePerformanceQueryFeaturesKHR&                                     getPerformanceQueryFeatures                                             (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevicePerformanceQueryFeaturesKHR>();                                   }
+const VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR&         getPipelineExecutablePropertiesFeatures                 (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR>();               }
+const VkPhysicalDeviceProtectedMemoryFeatures&                                         getProtectedMemoryFeatures                                              (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceProtectedMemoryFeatures>();                                               }
+const VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV&                    getRepresentativeFragmentTestFeatures                   (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV>();                  }
+const VkPhysicalDeviceSamplerYcbcrConversionFeatures&                          getSamplerYcbcrConversionFeatures                               (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceSamplerYcbcrConversionFeatures>();                                }
+const VkPhysicalDeviceScalarBlockLayoutFeatures&                                       getScalarBlockLayoutFeatures                                    (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceScalarBlockLayoutFeatures>();                                             }
+const VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures&                     getSeparateDepthStencilLayoutsFeatures                  (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures>();                   }
+const VkPhysicalDeviceShaderAtomicInt64Features&                                       getShaderAtomicInt64Features                                    (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderAtomicInt64Features>();                                             }
+const VkPhysicalDeviceShaderClockFeaturesKHR&                                          getShaderClockFeatures                                                  (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderClockFeaturesKHR>();                                                }
+const VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT&       getShaderDemoteToHelperInvocationFeaturesEXT    (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT>();             }
+const VkPhysicalDeviceShaderDrawParametersFeatures&                                    getShaderDrawParametersFeatures                                 (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderDrawParametersFeatures>();                                  }
+const VkPhysicalDeviceShaderFloat16Int8Features&                                       getShaderFloat16Int8Features                                    (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderFloat16Int8Features>();                                             }
+const VkPhysicalDeviceShaderImageFootprintFeaturesNV&                          getShaderImageFootprintFeatures                                 (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderImageFootprintFeaturesNV>();                                }
+const VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL&                    getShaderIntegerFunctions2FeaturesINTEL                 (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL>();                  }
+const VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures&                     getShaderSubgroupExtendedTypesFeatures                  (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures>();                   }
+const VkPhysicalDeviceShadingRateImageFeaturesNV&                                      getShadingRateImageFeatures                                             (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShadingRateImageFeaturesNV>();                                    }
+const VkPhysicalDeviceSubgroupSizeControlFeaturesEXT&                          getSubgroupSizeControlFeaturesEXT                               (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceSubgroupSizeControlFeaturesEXT>();                                }
+const VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT&                         getTexelBufferAlignmentFeaturesEXT                              (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT>();                               }
+const VkPhysicalDeviceTimelineSemaphoreFeatures&                                       getTimelineSemaphoreFeatures                                    (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceTimelineSemaphoreFeatures>();                                             }
+const VkPhysicalDeviceTransformFeedbackFeaturesEXT&                                    getTransformFeedbackFeaturesEXT                                 (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceTransformFeedbackFeaturesEXT>();                                  }
+const VkPhysicalDeviceUniformBufferStandardLayoutFeatures&                     getUniformBufferStandardLayoutFeatures                  (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceUniformBufferStandardLayoutFeatures>();                   }
+const VkPhysicalDeviceVariablePointersFeatures&                                                getVariablePointersFeatures                                             (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceVariablePointersFeatures>();                                              }
+const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT&                       getVertexAttributeDivisorFeaturesEXT                    (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT>();                             }
+const VkPhysicalDeviceVulkanMemoryModelFeatures&                                       getVulkanMemoryModelFeatures                                    (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceVulkanMemoryModelFeatures>();                                             }
+const VkPhysicalDeviceYcbcrImageArraysFeaturesEXT&                                     getYcbcrImageArraysFeaturesEXT                                  (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceYcbcrImageArraysFeaturesEXT>();                                   }
index bf87cd1..c3acddd 100644 (file)
@@ -138,6 +138,19 @@ CreateDescriptorUpdateTemplateFunc                                 createDescriptorUpdateTemplate;
 DestroyDescriptorUpdateTemplateFunc                                    destroyDescriptorUpdateTemplate;
 UpdateDescriptorSetWithTemplateFunc                                    updateDescriptorSetWithTemplate;
 GetDescriptorSetLayoutSupportFunc                                      getDescriptorSetLayoutSupport;
+CmdDrawIndirectCountFunc                                                       cmdDrawIndirectCount;
+CmdDrawIndexedIndirectCountFunc                                                cmdDrawIndexedIndirectCount;
+CreateRenderPass2Func                                                          createRenderPass2;
+CmdBeginRenderPass2Func                                                                cmdBeginRenderPass2;
+CmdNextSubpass2Func                                                                    cmdNextSubpass2;
+CmdEndRenderPass2Func                                                          cmdEndRenderPass2;
+ResetQueryPoolFunc                                                                     resetQueryPool;
+GetSemaphoreCounterValueFunc                                           getSemaphoreCounterValue;
+WaitSemaphoresFunc                                                                     waitSemaphores;
+SignalSemaphoreFunc                                                                    signalSemaphore;
+GetBufferDeviceAddressFunc                                                     getBufferDeviceAddress;
+GetBufferOpaqueCaptureAddressFunc                                      getBufferOpaqueCaptureAddress;
+GetDeviceMemoryOpaqueCaptureAddressFunc                                getDeviceMemoryOpaqueCaptureAddress;
 CreateSwapchainKHRFunc                                                         createSwapchainKHR;
 DestroySwapchainKHRFunc                                                                destroySwapchainKHR;
 GetSwapchainImagesKHRFunc                                                      getSwapchainImagesKHR;
@@ -153,20 +166,11 @@ ImportSemaphoreFdKHRFunc                                                  importSemaphoreFdKHR;
 GetSemaphoreFdKHRFunc                                                          getSemaphoreFdKHR;
 CmdPushDescriptorSetKHRFunc                                                    cmdPushDescriptorSetKHR;
 CmdPushDescriptorSetWithTemplateKHRFunc                                cmdPushDescriptorSetWithTemplateKHR;
-CreateRenderPass2KHRFunc                                                       createRenderPass2KHR;
-CmdBeginRenderPass2KHRFunc                                                     cmdBeginRenderPass2KHR;
-CmdNextSubpass2KHRFunc                                                         cmdNextSubpass2KHR;
-CmdEndRenderPass2KHRFunc                                                       cmdEndRenderPass2KHR;
 GetSwapchainStatusKHRFunc                                                      getSwapchainStatusKHR;
 ImportFenceFdKHRFunc                                                           importFenceFdKHR;
 GetFenceFdKHRFunc                                                                      getFenceFdKHR;
 AcquireProfilingLockKHRFunc                                                    acquireProfilingLockKHR;
 ReleaseProfilingLockKHRFunc                                                    releaseProfilingLockKHR;
-CmdDrawIndirectCountKHRFunc                                                    cmdDrawIndirectCountKHR;
-CmdDrawIndexedIndirectCountKHRFunc                                     cmdDrawIndexedIndirectCountKHR;
-GetSemaphoreCounterValueKHRFunc                                                getSemaphoreCounterValueKHR;
-WaitSemaphoresKHRFunc                                                          waitSemaphoresKHR;
-SignalSemaphoreKHRFunc                                                         signalSemaphoreKHR;
 GetPipelineExecutablePropertiesKHRFunc                         getPipelineExecutablePropertiesKHR;
 GetPipelineExecutableStatisticsKHRFunc                         getPipelineExecutableStatisticsKHR;
 GetPipelineExecutableInternalRepresentationsKHRFunc    getPipelineExecutableInternalRepresentationsKHR;
@@ -254,7 +258,6 @@ GetPerformanceParameterINTELFunc                                    getPerformanceParameterINTEL;
 SetLocalDimmingAMDFunc                                                         setLocalDimmingAMD;
 GetBufferDeviceAddressEXTFunc                                          getBufferDeviceAddressEXT;
 CmdSetLineStippleEXTFunc                                                       cmdSetLineStippleEXT;
-ResetQueryPoolEXTFunc                                                          resetQueryPoolEXT;
 GetAndroidHardwareBufferPropertiesANDROIDFunc          getAndroidHardwareBufferPropertiesANDROID;
 GetMemoryAndroidHardwareBufferANDROIDFunc                      getMemoryAndroidHardwareBufferANDROID;
 GetMemoryWin32HandleKHRFunc                                                    getMemoryWin32HandleKHR;
diff --git a/external/vulkancts/framework/vulkan/vkDeviceProperties.cpp b/external/vulkancts/framework/vulkan/vkDeviceProperties.cpp
new file mode 100644 (file)
index 0000000..bf90c30
--- /dev/null
@@ -0,0 +1,112 @@
+/*-------------------------------------------------------------------------
+* Vulkan CTS
+* ----------
+*
+* Copyright (c) 2019 The Khronos Group Inc.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*      http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+#include "deSTLUtil.hpp"
+#include "deString.h"
+#include "vkQueryUtil.hpp"
+#include "vkDeviceProperties.inl"
+#include "vkDeviceProperties.hpp"
+
+namespace vk
+{
+
+DeviceProperties::DeviceProperties     (const InstanceInterface&                       vki,
+                                                                        const deUint32                                         apiVersion,
+                                                                        const VkPhysicalDevice                         physicalDevice,
+                                                                        const std::vector<std::string>&        instanceExtensions,
+                                                                        const std::vector<std::string>&        deviceExtensions)
+{
+       m_coreProperties2 = initVulkanStructure();
+
+       if (isInstanceExtensionSupported(apiVersion, instanceExtensions, "VK_KHR_get_physical_device_properties2"))
+       {
+               const std::vector<VkExtensionProperties>        deviceExtensionProperties       = enumerateDeviceExtensionProperties(vki, physicalDevice, DE_NULL);
+               void**                                                                          nextPtr                                         = &m_coreProperties2.pNext;
+
+               for (size_t i = 0; i < DE_LENGTH_OF_ARRAY(propertyStructCreatorMap); ++i)
+               {
+                       const char* propertyName = propertyStructCreatorMap[i].name;
+
+                       if (de::contains(deviceExtensions.begin(), deviceExtensions.end(), propertyName))
+                       {
+                               PropertyStruct* p = createPropertyStructWrapper(propertyName);
+
+                               if (p)
+                               {
+                                       *nextPtr = p->getPropertyTypeRaw();
+                                       nextPtr = p->getPropertyTypeNext();
+                                       m_properties.push_back(p);
+                               }
+                       }
+               }
+
+               vki.getPhysicalDeviceProperties2(physicalDevice, &m_coreProperties2);
+       }
+       else
+               m_coreProperties2.properties = getPhysicalDeviceProperties(vki, physicalDevice);
+}
+
+bool DeviceProperties::contains (const std::string& property, bool throwIfNotExists) const
+{
+       const size_t typesSize  = m_properties.size();
+
+       for (size_t typeIdx = 0; typeIdx < typesSize; ++typeIdx)
+       {
+               if (deStringEqual(m_properties[typeIdx]->getPropertyDesc().name, property.c_str()))
+               {
+                       return true;
+               }
+       }
+
+       if (throwIfNotExists)
+       {
+               std::string msg("Property " + property + " is not supported");
+
+               TCU_THROW(NotSupportedError, msg);
+       }
+
+       return false;
+}
+
+bool DeviceProperties::isDevicePropertyInitialized (VkStructureType sType) const
+{
+       return findStructureInChain(&m_coreProperties2, sType) != DE_NULL;
+}
+
+DeviceProperties::~DeviceProperties (void)
+{
+       for (size_t i = 0; i < m_properties.size(); ++i)
+               delete m_properties[i];
+
+       m_properties.clear();
+}
+
+PropertyStruct* DeviceProperties::createPropertyStructWrapper (const std::string& s)
+{
+       for (size_t i = 0; i < DE_LENGTH_OF_ARRAY(propertyStructCreatorMap); ++i)
+       {
+               if (deStringEqual(propertyStructCreatorMap[i].name, s.c_str()))
+                       return (*propertyStructCreatorMap[i].creator)();
+       }
+
+       return DE_NULL;
+}
+
+} // vk
+
diff --git a/external/vulkancts/framework/vulkan/vkDeviceProperties.hpp b/external/vulkancts/framework/vulkan/vkDeviceProperties.hpp
new file mode 100644 (file)
index 0000000..8254587
--- /dev/null
@@ -0,0 +1,178 @@
+#ifndef _VKDEVICEPROPERTIES_HPP
+#define _VKDEVICEPROPERTIES_HPP
+/*-------------------------------------------------------------------------
+ * Vulkan CTS Framework
+ * --------------------
+ *
+ * Copyright (c) 2019 The Khronos Group Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ *//*!
+ * \file
+ * \brief Vulkan DeviceProperties class utility.
+ *//*--------------------------------------------------------------------*/
+
+#include <map>
+#include <string>
+#include <utility>
+#include <vector>
+
+#include "deMemory.h"
+#include "vkDefs.hpp"
+
+namespace vk
+{
+
+struct PropertyDesc
+{
+                                               PropertyDesc (VkStructureType sType_, const char* name_, deUint32 specVersion_, deUint32 typeId_)
+                                                       : name                  (name_)
+                                                       , sType                 (sType_)
+                                                       , specVersion   (specVersion_)
+                                                       , typeId                (typeId_)
+                                               {}
+
+       const char*                     name;
+       VkStructureType         sType;
+       const deUint32          specVersion;
+       const deUint32          typeId;
+};
+
+struct PropertyStruct
+{
+       virtual deUint32                getPropertyTypeId               (void) const = 0;
+       virtual PropertyDesc    getPropertyDesc                 (void) const = 0;
+       virtual void**                  getPropertyTypeNext             (void) = 0;
+       virtual void*                   getPropertyTypeRaw              (void) = 0;
+       virtual                                 ~PropertyStruct                 (void) {}
+};
+
+
+struct PropertyStructMapItem
+{
+       PropertyStruct* (*creator)(void);
+       const char*             name;
+       deUint32                specVersion;
+};
+
+template<class PropertyType> struct PropertyStructWrapper;
+template<class PropertyType> PropertyDesc makePropertyDesc (void);
+
+template<class PropertyType>
+PropertyStruct* createPropertyStructWrapper (void)
+{
+       return new PropertyStructWrapper<PropertyType>(makePropertyDesc<PropertyType>());
+}
+
+class DeviceProperties
+{
+public:
+                                                                                       DeviceProperties                                (const InstanceInterface&                       vki,
+                                                                                                                                                        const deUint32                                         apiVersion,
+                                                                                                                                                        const VkPhysicalDevice                         physicalDevice,
+                                                                                                                                                        const std::vector<std::string>&        instanceExtensions,
+                                                                                                                                                        const std::vector<std::string>&        deviceExtensions);
+
+                                                                                       ~DeviceProperties                               (void);
+
+       template<class PropertyType>
+       bool                                                                    getPropertyType                                 (PropertyType&                                          propertyType) const
+       {
+               typedef PropertyStructWrapper<PropertyType>     *PropertyWrapperPtr;
+
+               const VkStructureType   sType           = makePropertyDesc<PropertyType>().sType;
+               const size_t                    propCount       = m_properties.size();
+
+               for (size_t propIdx = 0; propIdx < propCount; ++propIdx)
+               {
+                       if (sType == m_properties[propIdx]->getPropertyDesc().sType)
+                       {
+                               propertyType = static_cast<PropertyWrapperPtr>(m_properties[propIdx])->getPropertyTypeRef();
+                               return true;
+                       }
+               }
+               return false;
+       }
+
+       template<class PropertyType>
+       const PropertyType&                                             getPropertyType                                 (void) const
+       {
+               typedef PropertyStructWrapper<PropertyType>     *PropertyWrapperPtr;
+
+               const PropertyDesc              propDesc        = makePropertyDesc<PropertyType>();
+               const VkStructureType   sType           = propDesc.sType;
+               const size_t                    propCount       = m_properties.size();
+
+               for (size_t propIdx = 0; propIdx < propCount; ++propIdx)
+               {
+                       if (sType == m_properties[propIdx]->getPropertyDesc().sType)
+                               return static_cast<PropertyWrapperPtr>(m_properties[propIdx])->getPropertyTypeRef();
+               }
+
+               const deUint32                  propertyId = propDesc.typeId;
+
+               for (size_t propIdx = 0; propIdx < propCount; ++propIdx)
+               {
+                       if (propertyId == m_properties[propIdx]->getPropertyTypeId())
+                               return static_cast<PropertyWrapperPtr>(m_properties[propIdx])->getPropertyTypeRef();
+               }
+
+               PropertyStruct* p = vk::createPropertyStructWrapper<PropertyType>();
+               m_properties.push_back(p);
+
+               return static_cast<PropertyWrapperPtr>(p)->getPropertyTypeRef();
+       }
+
+       const VkPhysicalDeviceProperties2&              getCoreProperties2                              (void) const { return m_coreProperties2; }
+
+       bool                                                                    contains                                                (const std::string& property, bool throwIfNotExists = false) const;
+
+       bool                                                                    isDevicePropertyInitialized             (VkStructureType sType) const;
+
+private:
+       static PropertyStruct*                                  createPropertyStructWrapper             (const std::string& s);
+
+       VkPhysicalDeviceProperties2                             m_coreProperties2;
+       mutable std::vector<PropertyStruct*>    m_properties;
+};
+
+template<class PropertyType>
+struct PropertyStructWrapper : PropertyStruct
+{
+       const PropertyDesc      m_propertyDesc;
+       PropertyType            m_propertyType;
+
+                                               PropertyStructWrapper   (void)
+                                                       : m_propertyDesc        (VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2, DE_NULL, ~0u, 0u)
+                                               {
+                                                       deMemset(&m_propertyType, 0, sizeof(m_propertyType));
+                                               }
+
+                                               PropertyStructWrapper   (const PropertyDesc& propertyDesc)
+                                                       : m_propertyDesc        (propertyDesc)
+                                               {
+                                                       deMemset(&m_propertyType, 0, sizeof(m_propertyType));
+                                                       m_propertyType.sType = propertyDesc.sType;
+                                               }
+
+       deUint32                        getPropertyTypeId               (void) const    { return m_propertyDesc.typeId; }
+       PropertyDesc            getPropertyDesc                 (void) const    { return m_propertyDesc;                }
+       void**                          getPropertyTypeNext             (void)                  { return &m_propertyType.pNext; }
+       void*                           getPropertyTypeRaw              (void)                  { return &m_propertyType;               }
+       PropertyType&           getPropertyTypeRef              (void)                  { return m_propertyType;                }
+};
+
+} // vk
+
+#endif // _VKDEVICEPROPERTIES_HPP
diff --git a/external/vulkancts/framework/vulkan/vkDeviceProperties.inl b/external/vulkancts/framework/vulkan/vkDeviceProperties.inl
new file mode 100644 (file)
index 0000000..fdc05dc
--- /dev/null
@@ -0,0 +1,118 @@
+/* WARNING: This is auto-generated file. Do not modify, since changes will
+ * be lost! Modify the generating script instead.
+ */
+#include "vkDeviceProperties.hpp"
+
+namespace vk
+{
+#define VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME "VK_EXT_blend_operation_advanced"
+#define VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME "VK_EXT_conservative_rasterization"
+#define VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME "VK_NV_cooperative_matrix"
+#define VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME "VK_KHR_depth_stencil_resolve"
+#define VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME "VK_EXT_descriptor_indexing"
+#define VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME "VK_EXT_discard_rectangles"
+#define DECL_DRIVER_EXTENSION_NAME "not_existent_property"
+#define VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME "VK_EXT_external_memory_host"
+#define VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME "VK_KHR_shader_float_controls"
+#define VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME "VK_EXT_fragment_density_map"
+#define VK_KHR_DEVICE_GROUP_EXTENSION_NAME "VK_KHR_device_group"
+#define VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME "VK_EXT_inline_uniform_block"
+#define VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME "VK_EXT_line_rasterization"
+#define VK_KHR_MAINTENANCE3_EXTENSION_NAME "VK_KHR_maintenance3"
+#define DECL_2_MEMORY_EXTENSION_NAME "not_existent_property"
+#define VK_EXT_MEMORY_BUDGET_EXTENSION_NAME "VK_EXT_memory_budget"
+#define VK_NV_MESH_SHADER_EXTENSION_NAME  "VK_NV_mesh_shader"
+#define VK_KHR_MULTIVIEW_EXTENSION_NAME   "VK_KHR_multiview"
+#define VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME "VK_NVX_multiview_per_view_attributes"
+#define VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME "VK_KHR_performance_query"
+#define DECL_POINT_CLIPPING_EXTENSION_NAME "not_existent_property"
+#define DECL_PROTECTED_MEMORY_EXTENSION_NAME "not_existent_property"
+#define VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME "VK_KHR_push_descriptor"
+#define VK_NV_RAY_TRACING_EXTENSION_NAME  "VK_NV_ray_tracing"
+#define VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME "VK_EXT_sampler_filter_minmax"
+#define VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME "VK_EXT_sample_locations"
+#define DECL_AMD_SHADER_CORE_EXTENSION_NAME "not_existent_property"
+#define VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME "VK_NV_shading_rate_image"
+#define DECL_SUBGROUP_EXTENSION_NAME "not_existent_property"
+#define VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME "VK_EXT_subgroup_size_control"
+#define VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME "VK_EXT_texel_buffer_alignment"
+#define VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME "VK_KHR_timeline_semaphore"
+#define VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME "VK_EXT_transform_feedback"
+#define VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME "VK_EXT_vertex_attribute_divisor"
+
+
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT, VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME, VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION, 34); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceConservativeRasterizationPropertiesEXT>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT, VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME, VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION, 33); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceCooperativeMatrixPropertiesNV>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV, VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME, VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION, 32); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceDepthStencilResolveProperties>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES, VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME, VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION, 31); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceDescriptorIndexingProperties>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES, VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME, VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION, 30); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceDiscardRectanglePropertiesEXT>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT, VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME, VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION, 29); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceDriverProperties>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES, DECL_DRIVER_EXTENSION_NAME, 0, 28); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceExternalMemoryHostPropertiesEXT>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT, VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME, VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION, 27); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceFloatControlsProperties>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES, VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME, VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION, 26); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceFragmentDensityMapPropertiesEXT>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT, VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME, VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION, 25); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceGroupProperties>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES, VK_KHR_DEVICE_GROUP_EXTENSION_NAME, VK_KHR_DEVICE_GROUP_SPEC_VERSION, 24); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceInlineUniformBlockPropertiesEXT>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT, VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME, VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION, 23); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceLineRasterizationPropertiesEXT>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT, VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME, VK_EXT_LINE_RASTERIZATION_SPEC_VERSION, 22); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceMaintenance3Properties>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES, VK_KHR_MAINTENANCE3_EXTENSION_NAME, VK_KHR_MAINTENANCE3_SPEC_VERSION, 21); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceMemoryProperties2>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2, DECL_2_MEMORY_EXTENSION_NAME, 0, 20); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceMemoryBudgetPropertiesEXT>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT, VK_EXT_MEMORY_BUDGET_EXTENSION_NAME, VK_EXT_MEMORY_BUDGET_SPEC_VERSION, 19); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceMeshShaderPropertiesNV>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV, VK_NV_MESH_SHADER_EXTENSION_NAME, VK_NV_MESH_SHADER_SPEC_VERSION, 18); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceMultiviewProperties>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES, VK_KHR_MULTIVIEW_EXTENSION_NAME, VK_KHR_MULTIVIEW_SPEC_VERSION, 17); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX, VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME, VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION, 16); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDevicePerformanceQueryPropertiesKHR>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR, VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME, VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION, 15); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDevicePointClippingProperties>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES, DECL_POINT_CLIPPING_EXTENSION_NAME, 0, 14); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceProtectedMemoryProperties>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES, DECL_PROTECTED_MEMORY_EXTENSION_NAME, 0, 13); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDevicePushDescriptorPropertiesKHR>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR, VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME, VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION, 12); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceRayTracingPropertiesNV>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV, VK_NV_RAY_TRACING_EXTENSION_NAME, VK_NV_RAY_TRACING_SPEC_VERSION, 11); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceSamplerFilterMinmaxProperties>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES, VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME, VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION, 10); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceSampleLocationsPropertiesEXT>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT, VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME, VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION, 9); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceShaderCorePropertiesAMD>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD, DECL_AMD_SHADER_CORE_EXTENSION_NAME, 0, 8); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceShadingRateImagePropertiesNV>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV, VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME, VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION, 7); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceSubgroupProperties>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES, DECL_SUBGROUP_EXTENSION_NAME, 0, 6); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceSubgroupSizeControlPropertiesEXT>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT, VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME, VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION, 5); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT, VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME, VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION, 4); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceTimelineSemaphoreProperties>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES, VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME, VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION, 3); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceTransformFeedbackPropertiesEXT>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT, VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME, VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION, 2); }
+template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT>(void) { return PropertyDesc(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT, VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME, VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION, 1); }
+
+
+static const PropertyStructMapItem propertyStructCreatorMap[] =
+{
+       { createPropertyStructWrapper<VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT>, VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME, VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceConservativeRasterizationPropertiesEXT>, VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME, VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceCooperativeMatrixPropertiesNV>, VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME, VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceDepthStencilResolveProperties>, VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME, VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceDescriptorIndexingProperties>, VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME, VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceDiscardRectanglePropertiesEXT>, VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME, VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceDriverProperties>, DECL_DRIVER_EXTENSION_NAME, 0 },
+       { createPropertyStructWrapper<VkPhysicalDeviceExternalMemoryHostPropertiesEXT>, VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME, VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceFloatControlsProperties>, VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME, VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceFragmentDensityMapPropertiesEXT>, VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME, VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceGroupProperties>, VK_KHR_DEVICE_GROUP_EXTENSION_NAME, VK_KHR_DEVICE_GROUP_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceInlineUniformBlockPropertiesEXT>, VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME, VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceLineRasterizationPropertiesEXT>, VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME, VK_EXT_LINE_RASTERIZATION_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceMaintenance3Properties>, VK_KHR_MAINTENANCE3_EXTENSION_NAME, VK_KHR_MAINTENANCE3_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceMemoryProperties2>, DECL_2_MEMORY_EXTENSION_NAME, 0 },
+       { createPropertyStructWrapper<VkPhysicalDeviceMemoryBudgetPropertiesEXT>, VK_EXT_MEMORY_BUDGET_EXTENSION_NAME, VK_EXT_MEMORY_BUDGET_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceMeshShaderPropertiesNV>, VK_NV_MESH_SHADER_EXTENSION_NAME, VK_NV_MESH_SHADER_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceMultiviewProperties>, VK_KHR_MULTIVIEW_EXTENSION_NAME, VK_KHR_MULTIVIEW_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX>, VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME, VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDevicePerformanceQueryPropertiesKHR>, VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME, VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDevicePointClippingProperties>, DECL_POINT_CLIPPING_EXTENSION_NAME, 0 },
+       { createPropertyStructWrapper<VkPhysicalDeviceProtectedMemoryProperties>, DECL_PROTECTED_MEMORY_EXTENSION_NAME, 0 },
+       { createPropertyStructWrapper<VkPhysicalDevicePushDescriptorPropertiesKHR>, VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME, VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceRayTracingPropertiesNV>, VK_NV_RAY_TRACING_EXTENSION_NAME, VK_NV_RAY_TRACING_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceSamplerFilterMinmaxProperties>, VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME, VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceSampleLocationsPropertiesEXT>, VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME, VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceShaderCorePropertiesAMD>, DECL_AMD_SHADER_CORE_EXTENSION_NAME, 0 },
+       { createPropertyStructWrapper<VkPhysicalDeviceShadingRateImagePropertiesNV>, VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME, VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceSubgroupProperties>, DECL_SUBGROUP_EXTENSION_NAME, 0 },
+       { createPropertyStructWrapper<VkPhysicalDeviceSubgroupSizeControlPropertiesEXT>, VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME, VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT>, VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME, VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceTimelineSemaphoreProperties>, VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME, VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceTransformFeedbackPropertiesEXT>, VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME, VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION },
+       { createPropertyStructWrapper<VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT>, VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME, VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION },
+};
+} // vk
+
diff --git a/external/vulkancts/framework/vulkan/vkDevicePropertiesForContextDecl.inl b/external/vulkancts/framework/vulkan/vkDevicePropertiesForContextDecl.inl
new file mode 100644 (file)
index 0000000..fba5421
--- /dev/null
@@ -0,0 +1,37 @@
+/* WARNING: This is auto-generated file. Do not modify, since changes will
+ * be lost! Modify the generating script instead.
+ */
+const vk::VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT&         getBlendOperationAdvancedPropertiesEXT          (void) const;
+const vk::VkPhysicalDeviceConservativeRasterizationPropertiesEXT&      getConservativeRasterizationPropertiesEXT       (void) const;
+const vk::VkPhysicalDeviceCooperativeMatrixPropertiesNV&                       getCooperativeMatrixProperties                          (void) const;
+const vk::VkPhysicalDeviceDepthStencilResolveProperties&                       getDepthStencilResolveProperties                        (void) const;
+const vk::VkPhysicalDeviceDescriptorIndexingProperties&                                getDescriptorIndexingProperties                         (void) const;
+const vk::VkPhysicalDeviceDiscardRectanglePropertiesEXT&                       getDiscardRectanglePropertiesEXT                        (void) const;
+const vk::VkPhysicalDeviceDriverProperties&                                                    getDriverProperties                                                     (void) const;
+const vk::VkPhysicalDeviceExternalMemoryHostPropertiesEXT&                     getExternalMemoryHostPropertiesEXT                      (void) const;
+const vk::VkPhysicalDeviceFloatControlsProperties&                                     getFloatControlsProperties                                      (void) const;
+const vk::VkPhysicalDeviceFragmentDensityMapPropertiesEXT&                     getFragmentDensityMapPropertiesEXT                      (void) const;
+const vk::VkPhysicalDeviceGroupProperties&                                                     getGroupProperties                                                      (void) const;
+const vk::VkPhysicalDeviceInlineUniformBlockPropertiesEXT&                     getInlineUniformBlockPropertiesEXT                      (void) const;
+const vk::VkPhysicalDeviceLineRasterizationPropertiesEXT&                      getLineRasterizationPropertiesEXT                       (void) const;
+const vk::VkPhysicalDeviceMaintenance3Properties&                                      getMaintenance3Properties                                       (void) const;
+const vk::VkPhysicalDeviceMemoryProperties2&                                           getMemoryProperties2                                            (void) const;
+const vk::VkPhysicalDeviceMemoryBudgetPropertiesEXT&                           getMemoryBudgetPropertiesEXT                            (void) const;
+const vk::VkPhysicalDeviceMeshShaderPropertiesNV&                                      getMeshShaderProperties                                         (void) const;
+const vk::VkPhysicalDeviceMultiviewProperties&                                         getMultiviewProperties                                          (void) const;
+const vk::VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX&     getMultiviewPerViewAttributesPropertiesX        (void) const;
+const vk::VkPhysicalDevicePerformanceQueryPropertiesKHR&                       getPerformanceQueryProperties                           (void) const;
+const vk::VkPhysicalDevicePointClippingProperties&                                     getPointClippingProperties                                      (void) const;
+const vk::VkPhysicalDeviceProtectedMemoryProperties&                           getProtectedMemoryProperties                            (void) const;
+const vk::VkPhysicalDevicePushDescriptorPropertiesKHR&                         getPushDescriptorProperties                                     (void) const;
+const vk::VkPhysicalDeviceRayTracingPropertiesNV&                                      getRayTracingProperties                                         (void) const;
+const vk::VkPhysicalDeviceSamplerFilterMinmaxProperties&                       getSamplerFilterMinmaxProperties                        (void) const;
+const vk::VkPhysicalDeviceSampleLocationsPropertiesEXT&                                getSampleLocationsPropertiesEXT                         (void) const;
+const vk::VkPhysicalDeviceShaderCorePropertiesAMD&                                     getShaderCorePropertiesAMD                                      (void) const;
+const vk::VkPhysicalDeviceShadingRateImagePropertiesNV&                                getShadingRateImageProperties                           (void) const;
+const vk::VkPhysicalDeviceSubgroupProperties&                                          getSubgroupProperties                                           (void) const;
+const vk::VkPhysicalDeviceSubgroupSizeControlPropertiesEXT&                    getSubgroupSizeControlPropertiesEXT                     (void) const;
+const vk::VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT&           getTexelBufferAlignmentPropertiesEXT            (void) const;
+const vk::VkPhysicalDeviceTimelineSemaphoreProperties&                         getTimelineSemaphoreProperties                          (void) const;
+const vk::VkPhysicalDeviceTransformFeedbackPropertiesEXT&                      getTransformFeedbackPropertiesEXT                       (void) const;
+const vk::VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT&         getVertexAttributeDivisorPropertiesEXT          (void) const;
diff --git a/external/vulkancts/framework/vulkan/vkDevicePropertiesForContextDefs.inl b/external/vulkancts/framework/vulkan/vkDevicePropertiesForContextDefs.inl
new file mode 100644 (file)
index 0000000..53d6fe1
--- /dev/null
@@ -0,0 +1,37 @@
+/* WARNING: This is auto-generated file. Do not modify, since changes will
+ * be lost! Modify the generating script instead.
+ */
+const vk::VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT&         Context::getBlendOperationAdvancedPropertiesEXT         (void) const { return m_device->getBlendOperationAdvancedPropertiesEXT();               }
+const vk::VkPhysicalDeviceConservativeRasterizationPropertiesEXT&      Context::getConservativeRasterizationPropertiesEXT      (void) const { return m_device->getConservativeRasterizationPropertiesEXT();    }
+const vk::VkPhysicalDeviceCooperativeMatrixPropertiesNV&                       Context::getCooperativeMatrixProperties                         (void) const { return m_device->getCooperativeMatrixProperties();                               }
+const vk::VkPhysicalDeviceDepthStencilResolveProperties&                       Context::getDepthStencilResolveProperties                       (void) const { return m_device->getDepthStencilResolveProperties();                             }
+const vk::VkPhysicalDeviceDescriptorIndexingProperties&                                Context::getDescriptorIndexingProperties                        (void) const { return m_device->getDescriptorIndexingProperties();                              }
+const vk::VkPhysicalDeviceDiscardRectanglePropertiesEXT&                       Context::getDiscardRectanglePropertiesEXT                       (void) const { return m_device->getDiscardRectanglePropertiesEXT();                             }
+const vk::VkPhysicalDeviceDriverProperties&                                                    Context::getDriverProperties                                            (void) const { return m_device->getDriverProperties();                                                  }
+const vk::VkPhysicalDeviceExternalMemoryHostPropertiesEXT&                     Context::getExternalMemoryHostPropertiesEXT                     (void) const { return m_device->getExternalMemoryHostPropertiesEXT();                   }
+const vk::VkPhysicalDeviceFloatControlsProperties&                                     Context::getFloatControlsProperties                                     (void) const { return m_device->getFloatControlsProperties();                                   }
+const vk::VkPhysicalDeviceFragmentDensityMapPropertiesEXT&                     Context::getFragmentDensityMapPropertiesEXT                     (void) const { return m_device->getFragmentDensityMapPropertiesEXT();                   }
+const vk::VkPhysicalDeviceGroupProperties&                                                     Context::getGroupProperties                                                     (void) const { return m_device->getGroupProperties();                                                   }
+const vk::VkPhysicalDeviceInlineUniformBlockPropertiesEXT&                     Context::getInlineUniformBlockPropertiesEXT                     (void) const { return m_device->getInlineUniformBlockPropertiesEXT();                   }
+const vk::VkPhysicalDeviceLineRasterizationPropertiesEXT&                      Context::getLineRasterizationPropertiesEXT                      (void) const { return m_device->getLineRasterizationPropertiesEXT();                    }
+const vk::VkPhysicalDeviceMaintenance3Properties&                                      Context::getMaintenance3Properties                                      (void) const { return m_device->getMaintenance3Properties();                                    }
+const vk::VkPhysicalDeviceMemoryProperties2&                                           Context::getMemoryProperties2                                           (void) const { return m_device->getMemoryProperties2();                                                 }
+const vk::VkPhysicalDeviceMemoryBudgetPropertiesEXT&                           Context::getMemoryBudgetPropertiesEXT                           (void) const { return m_device->getMemoryBudgetPropertiesEXT();                                 }
+const vk::VkPhysicalDeviceMeshShaderPropertiesNV&                                      Context::getMeshShaderProperties                                        (void) const { return m_device->getMeshShaderProperties();                                              }
+const vk::VkPhysicalDeviceMultiviewProperties&                                         Context::getMultiviewProperties                                         (void) const { return m_device->getMultiviewProperties();                                               }
+const vk::VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX&     Context::getMultiviewPerViewAttributesPropertiesX       (void) const { return m_device->getMultiviewPerViewAttributesPropertiesX();             }
+const vk::VkPhysicalDevicePerformanceQueryPropertiesKHR&                       Context::getPerformanceQueryProperties                          (void) const { return m_device->getPerformanceQueryProperties();                                }
+const vk::VkPhysicalDevicePointClippingProperties&                                     Context::getPointClippingProperties                                     (void) const { return m_device->getPointClippingProperties();                                   }
+const vk::VkPhysicalDeviceProtectedMemoryProperties&                           Context::getProtectedMemoryProperties                           (void) const { return m_device->getProtectedMemoryProperties();                                 }
+const vk::VkPhysicalDevicePushDescriptorPropertiesKHR&                         Context::getPushDescriptorProperties                            (void) const { return m_device->getPushDescriptorProperties();                                  }
+const vk::VkPhysicalDeviceRayTracingPropertiesNV&                                      Context::getRayTracingProperties                                        (void) const { return m_device->getRayTracingProperties();                                              }
+const vk::VkPhysicalDeviceSamplerFilterMinmaxProperties&                       Context::getSamplerFilterMinmaxProperties                       (void) const { return m_device->getSamplerFilterMinmaxProperties();                             }
+const vk::VkPhysicalDeviceSampleLocationsPropertiesEXT&                                Context::getSampleLocationsPropertiesEXT                        (void) const { return m_device->getSampleLocationsPropertiesEXT();                              }
+const vk::VkPhysicalDeviceShaderCorePropertiesAMD&                                     Context::getShaderCorePropertiesAMD                                     (void) const { return m_device->getShaderCorePropertiesAMD();                                   }
+const vk::VkPhysicalDeviceShadingRateImagePropertiesNV&                                Context::getShadingRateImageProperties                          (void) const { return m_device->getShadingRateImageProperties();                                }
+const vk::VkPhysicalDeviceSubgroupProperties&                                          Context::getSubgroupProperties                                          (void) const { return m_device->getSubgroupProperties();                                                }
+const vk::VkPhysicalDeviceSubgroupSizeControlPropertiesEXT&                    Context::getSubgroupSizeControlPropertiesEXT            (void) const { return m_device->getSubgroupSizeControlPropertiesEXT();                  }
+const vk::VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT&           Context::getTexelBufferAlignmentPropertiesEXT           (void) const { return m_device->getTexelBufferAlignmentPropertiesEXT();                 }
+const vk::VkPhysicalDeviceTimelineSemaphoreProperties&                         Context::getTimelineSemaphoreProperties                         (void) const { return m_device->getTimelineSemaphoreProperties();                               }
+const vk::VkPhysicalDeviceTransformFeedbackPropertiesEXT&                      Context::getTransformFeedbackPropertiesEXT                      (void) const { return m_device->getTransformFeedbackPropertiesEXT();                    }
+const vk::VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT&         Context::getVertexAttributeDivisorPropertiesEXT         (void) const { return m_device->getVertexAttributeDivisorPropertiesEXT();               }
diff --git a/external/vulkancts/framework/vulkan/vkDevicePropertiesForDefaultDeviceDefs.inl b/external/vulkancts/framework/vulkan/vkDevicePropertiesForDefaultDeviceDefs.inl
new file mode 100644 (file)
index 0000000..1bf6fe8
--- /dev/null
@@ -0,0 +1,37 @@
+/* WARNING: This is auto-generated file. Do not modify, since changes will
+ * be lost! Modify the generating script instead.
+ */
+const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT&             getBlendOperationAdvancedPropertiesEXT          (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT>();            }
+const VkPhysicalDeviceConservativeRasterizationPropertiesEXT&  getConservativeRasterizationPropertiesEXT       (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceConservativeRasterizationPropertiesEXT>();         }
+const VkPhysicalDeviceCooperativeMatrixPropertiesNV&                   getCooperativeMatrixProperties                          (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceCooperativeMatrixPropertiesNV>();                          }
+const VkPhysicalDeviceDepthStencilResolveProperties&                   getDepthStencilResolveProperties                        (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceDepthStencilResolveProperties>();                          }
+const VkPhysicalDeviceDescriptorIndexingProperties&                            getDescriptorIndexingProperties                         (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceDescriptorIndexingProperties>();                           }
+const VkPhysicalDeviceDiscardRectanglePropertiesEXT&                   getDiscardRectanglePropertiesEXT                        (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceDiscardRectanglePropertiesEXT>();                          }
+const VkPhysicalDeviceDriverProperties&                                                        getDriverProperties                                                     (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceDriverProperties>();                                                       }
+const VkPhysicalDeviceExternalMemoryHostPropertiesEXT&                 getExternalMemoryHostPropertiesEXT                      (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceExternalMemoryHostPropertiesEXT>();                        }
+const VkPhysicalDeviceFloatControlsProperties&                                 getFloatControlsProperties                                      (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceFloatControlsProperties>();                                        }
+const VkPhysicalDeviceFragmentDensityMapPropertiesEXT&                 getFragmentDensityMapPropertiesEXT                      (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceFragmentDensityMapPropertiesEXT>();                        }
+const VkPhysicalDeviceGroupProperties&                                                 getGroupProperties                                                      (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceGroupProperties>();                                                        }
+const VkPhysicalDeviceInlineUniformBlockPropertiesEXT&                 getInlineUniformBlockPropertiesEXT                      (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceInlineUniformBlockPropertiesEXT>();                        }
+const VkPhysicalDeviceLineRasterizationPropertiesEXT&                  getLineRasterizationPropertiesEXT                       (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceLineRasterizationPropertiesEXT>();                         }
+const VkPhysicalDeviceMaintenance3Properties&                                  getMaintenance3Properties                                       (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceMaintenance3Properties>();                                         }
+const VkPhysicalDeviceMemoryProperties2&                                               getMemoryProperties2                                            (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceMemoryProperties2>();                                                      }
+const VkPhysicalDeviceMemoryBudgetPropertiesEXT&                               getMemoryBudgetPropertiesEXT                            (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceMemoryBudgetPropertiesEXT>();                                      }
+const VkPhysicalDeviceMeshShaderPropertiesNV&                                  getMeshShaderProperties                                         (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceMeshShaderPropertiesNV>();                                         }
+const VkPhysicalDeviceMultiviewProperties&                                             getMultiviewProperties                                          (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceMultiviewProperties>();                                            }
+const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX& getMultiviewPerViewAttributesPropertiesX        (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX>();        }
+const VkPhysicalDevicePerformanceQueryPropertiesKHR&                   getPerformanceQueryProperties                           (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDevicePerformanceQueryPropertiesKHR>();                          }
+const VkPhysicalDevicePointClippingProperties&                                 getPointClippingProperties                                      (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDevicePointClippingProperties>();                                        }
+const VkPhysicalDeviceProtectedMemoryProperties&                               getProtectedMemoryProperties                            (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceProtectedMemoryProperties>();                                      }
+const VkPhysicalDevicePushDescriptorPropertiesKHR&                             getPushDescriptorProperties                                     (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDevicePushDescriptorPropertiesKHR>();                            }
+const VkPhysicalDeviceRayTracingPropertiesNV&                                  getRayTracingProperties                                         (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceRayTracingPropertiesNV>();                                         }
+const VkPhysicalDeviceSamplerFilterMinmaxProperties&                   getSamplerFilterMinmaxProperties                        (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceSamplerFilterMinmaxProperties>();                          }
+const VkPhysicalDeviceSampleLocationsPropertiesEXT&                            getSampleLocationsPropertiesEXT                         (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceSampleLocationsPropertiesEXT>();                           }
+const VkPhysicalDeviceShaderCorePropertiesAMD&                                 getShaderCorePropertiesAMD                                      (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceShaderCorePropertiesAMD>();                                        }
+const VkPhysicalDeviceShadingRateImagePropertiesNV&                            getShadingRateImageProperties                           (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceShadingRateImagePropertiesNV>();                           }
+const VkPhysicalDeviceSubgroupProperties&                                              getSubgroupProperties                                           (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceSubgroupProperties>();                                                     }
+const VkPhysicalDeviceSubgroupSizeControlPropertiesEXT&                        getSubgroupSizeControlPropertiesEXT                     (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceSubgroupSizeControlPropertiesEXT>();                       }
+const VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT&               getTexelBufferAlignmentPropertiesEXT            (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT>();                      }
+const VkPhysicalDeviceTimelineSemaphoreProperties&                             getTimelineSemaphoreProperties                          (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceTimelineSemaphoreProperties>();                            }
+const VkPhysicalDeviceTransformFeedbackPropertiesEXT&                  getTransformFeedbackPropertiesEXT                       (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceTransformFeedbackPropertiesEXT>();                         }
+const VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT&             getVertexAttributeDivisorPropertiesEXT          (void) const { return m_devicePropertiesFull.getPropertyType<VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT>();            }
index 7239e5e..d8f2d9a 100644 (file)
@@ -281,6 +281,12 @@ void getDeviceExtensionFunctions (deUint32 apiVersion, ::std::string extName, ::
                functions.push_back("vkWaitSemaphoresKHR");
                functions.push_back("vkSignalSemaphoreKHR");
        }
+       else if (extName == "VK_KHR_buffer_device_address")
+       {
+               functions.push_back("vkGetBufferDeviceAddressKHR");
+               functions.push_back("vkGetBufferOpaqueCaptureAddressKHR");
+               functions.push_back("vkGetDeviceMemoryOpaqueCaptureAddressKHR");
+       }
        else if (extName == "VK_KHR_pipeline_executable_properties")
        {
                functions.push_back("vkGetPipelineExecutablePropertiesKHR");
@@ -547,6 +553,7 @@ void getDeviceExtensionFunctions (deUint32 apiVersion, ::std::string extName, ::
        "VK_KHR_maintenance3",
        "VK_KHR_draw_indirect_count",
        "VK_KHR_timeline_semaphore",
+       "VK_KHR_buffer_device_address",
        "VK_KHR_pipeline_executable_properties",
        "VK_EXT_debug_marker",
        "VK_EXT_transform_feedback",
index 3dab768..1ed9659 100644 (file)
@@ -166,6 +166,19 @@ typedef VKAPI_ATTR void                                    (VKAPI_CALL* GetPhysicalDeviceExternalBufferProperti
 typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceExternalFencePropertiesFunc)                                                      (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties);
 typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceExternalSemaphorePropertiesFunc)                                          (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties);
 typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetDescriptorSetLayoutSupportFunc)                                                                         (VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdDrawIndirectCountFunc)                                                                                          (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdDrawIndexedIndirectCountFunc)                                                                           (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateRenderPass2Func)                                                                                                     (VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdBeginRenderPass2Func)                                                                                           (VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfo* pSubpassBeginInfo);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdNextSubpass2Func)                                                                                                       (VkCommandBuffer commandBuffer, const VkSubpassBeginInfo* pSubpassBeginInfo, const VkSubpassEndInfo* pSubpassEndInfo);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdEndRenderPass2Func)                                                                                                     (VkCommandBuffer commandBuffer, const VkSubpassEndInfo* pSubpassEndInfo);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* ResetQueryPoolFunc)                                                                                                        (VkDevice device, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetSemaphoreCounterValueFunc)                                                                                      (VkDevice device, VkSemaphore semaphore, deUint64* pValue);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* WaitSemaphoresFunc)                                                                                                        (VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, deUint64 timeout);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* SignalSemaphoreFunc)                                                                                                       (VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo);
+typedef VKAPI_ATTR VkDeviceAddress             (VKAPI_CALL* GetBufferDeviceAddressFunc)                                                                                        (VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
+typedef VKAPI_ATTR uint64_t                            (VKAPI_CALL* GetBufferOpaqueCaptureAddressFunc)                                                                         (VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
+typedef VKAPI_ATTR uint64_t                            (VKAPI_CALL* GetDeviceMemoryOpaqueCaptureAddressFunc)                                                           (VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo);
 typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroySurfaceKHRFunc)                                                                                                     (VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks* pAllocator);
 typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPhysicalDeviceSurfaceSupportKHRFunc)                                                            (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported);
 typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPhysicalDeviceSurfaceCapabilitiesKHRFunc)                                                       (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities);
@@ -211,10 +224,10 @@ typedef VKAPI_ATTR void                                   (VKAPI_CALL* CmdPushDescriptorSetWithTemplateKHRFunc
 typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateDescriptorUpdateTemplateKHRFunc)                                                                     (VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate);
 typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyDescriptorUpdateTemplateKHRFunc)                                                            (VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator);
 typedef VKAPI_ATTR void                                        (VKAPI_CALL* UpdateDescriptorSetWithTemplateKHRFunc)                                                            (VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateRenderPass2KHRFunc)                                                                                          (VkDevice device, const VkRenderPassCreateInfo2KHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdBeginRenderPass2KHRFunc)                                                                                        (VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfoKHR* pSubpassBeginInfo);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdNextSubpass2KHRFunc)                                                                                            (VkCommandBuffer commandBuffer, const VkSubpassBeginInfoKHR* pSubpassBeginInfo, const VkSubpassEndInfoKHR* pSubpassEndInfo);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdEndRenderPass2KHRFunc)                                                                                          (VkCommandBuffer commandBuffer, const VkSubpassEndInfoKHR* pSubpassEndInfo);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateRenderPass2KHRFunc)                                                                                          (VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdBeginRenderPass2KHRFunc)                                                                                        (VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfo* pSubpassBeginInfo);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdNextSubpass2KHRFunc)                                                                                            (VkCommandBuffer commandBuffer, const VkSubpassBeginInfo* pSubpassBeginInfo, const VkSubpassEndInfo* pSubpassEndInfo);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdEndRenderPass2KHRFunc)                                                                                          (VkCommandBuffer commandBuffer, const VkSubpassEndInfo* pSubpassEndInfo);
 typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetSwapchainStatusKHRFunc)                                                                                         (VkDevice device, VkSwapchainKHR swapchain);
 typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceExternalFencePropertiesKHRFunc)                                           (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties);
 typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* ImportFenceFdKHRFunc)                                                                                                      (VkDevice device, const VkImportFenceFdInfoKHR* pImportFenceFdInfo);
@@ -240,8 +253,11 @@ typedef VKAPI_ATTR void                                    (VKAPI_CALL* GetDescriptorSetLayoutSupportKHRFunc)
 typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdDrawIndirectCountKHRFunc)                                                                                       (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride);
 typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdDrawIndexedIndirectCountKHRFunc)                                                                        (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride);
 typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetSemaphoreCounterValueKHRFunc)                                                                           (VkDevice device, VkSemaphore semaphore, deUint64* pValue);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* WaitSemaphoresKHRFunc)                                                                                                     (VkDevice device, const VkSemaphoreWaitInfoKHR* pWaitInfo, deUint64 timeout);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* SignalSemaphoreKHRFunc)                                                                                            (VkDevice device, const VkSemaphoreSignalInfoKHR* pSignalInfo);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* WaitSemaphoresKHRFunc)                                                                                                     (VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, deUint64 timeout);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* SignalSemaphoreKHRFunc)                                                                                            (VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo);
+typedef VKAPI_ATTR VkDeviceAddress             (VKAPI_CALL* GetBufferDeviceAddressKHRFunc)                                                                                     (VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
+typedef VKAPI_ATTR uint64_t                            (VKAPI_CALL* GetBufferOpaqueCaptureAddressKHRFunc)                                                                      (VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
+typedef VKAPI_ATTR uint64_t                            (VKAPI_CALL* GetDeviceMemoryOpaqueCaptureAddressKHRFunc)                                                        (VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo);
 typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPipelineExecutablePropertiesKHRFunc)                                                            (VkDevice device, const VkPipelineInfoKHR* pPipelineInfo, deUint32* pExecutableCount, VkPipelineExecutablePropertiesKHR* pProperties);
 typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPipelineExecutableStatisticsKHRFunc)                                                            (VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, deUint32* pStatisticCount, VkPipelineExecutableStatisticKHR* pStatistics);
 typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPipelineExecutableInternalRepresentationsKHRFunc)                                       (VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, deUint32* pInternalRepresentationCount, VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations);
@@ -339,7 +355,7 @@ typedef VKAPI_ATTR VkResult                         (VKAPI_CALL* ReleasePerformanceConfigurationINTEL
 typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* QueueSetPerformanceConfigurationINTELFunc)                                                         (VkQueue queue, VkPerformanceConfigurationINTEL configuration);
 typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPerformanceParameterINTELFunc)                                                                          (VkDevice device, VkPerformanceParameterTypeINTEL parameter, VkPerformanceValueINTEL* pValue);
 typedef VKAPI_ATTR void                                        (VKAPI_CALL* SetLocalDimmingAMDFunc)                                                                                            (VkDevice device, VkSwapchainKHR swapChain, VkBool32 localDimmingEnable);
-typedef VKAPI_ATTR VkDeviceAddress             (VKAPI_CALL* GetBufferDeviceAddressEXTFunc)                                                                                     (VkDevice device, const VkBufferDeviceAddressInfoEXT* pInfo);
+typedef VKAPI_ATTR VkDeviceAddress             (VKAPI_CALL* GetBufferDeviceAddressEXTFunc)                                                                                     (VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
 typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPhysicalDeviceCooperativeMatrixPropertiesNVFunc)                                        (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkCooperativeMatrixPropertiesNV* pProperties);
 typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNVFunc)       (VkPhysicalDevice physicalDevice, deUint32* pCombinationCount, VkFramebufferMixedSamplesCombinationNV* pCombinations);
 typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateHeadlessSurfaceEXTFunc)                                                                                      (VkInstance instance, const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
index 3bf556c..30ca238 100644 (file)
@@ -561,349 +561,444 @@ template<> VkStructureType getStructureType<VkPhysicalDeviceShaderDrawParameters
        return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES;
 }
 
-template<> VkStructureType getStructureType<VkSwapchainCreateInfoKHR> (void)
+template<> VkStructureType getStructureType<VkPhysicalDeviceVulkan11Features> (void)
 {
-       return VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR;
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES;
 }
 
-template<> VkStructureType getStructureType<VkPresentInfoKHR> (void)
+template<> VkStructureType getStructureType<VkPhysicalDeviceVulkan11Properties> (void)
 {
-       return VK_STRUCTURE_TYPE_PRESENT_INFO_KHR;
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES;
 }
 
-template<> VkStructureType getStructureType<VkImageSwapchainCreateInfoKHR> (void)
+template<> VkStructureType getStructureType<VkPhysicalDeviceVulkan12Features> (void)
 {
-       return VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR;
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES;
 }
 
-template<> VkStructureType getStructureType<VkBindImageMemorySwapchainInfoKHR> (void)
+template<> VkStructureType getStructureType<VkPhysicalDeviceVulkan12Properties> (void)
 {
-       return VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR;
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES;
 }
 
-template<> VkStructureType getStructureType<VkAcquireNextImageInfoKHR> (void)
+template<> VkStructureType getStructureType<VkImageFormatListCreateInfo> (void)
 {
-       return VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR;
+       return VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO;
 }
 
-template<> VkStructureType getStructureType<VkDeviceGroupPresentCapabilitiesKHR> (void)
+template<> VkStructureType getStructureType<VkAttachmentDescription2> (void)
 {
-       return VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR;
+       return VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2;
 }
 
-template<> VkStructureType getStructureType<VkDeviceGroupPresentInfoKHR> (void)
+template<> VkStructureType getStructureType<VkAttachmentReference2> (void)
 {
-       return VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR;
+       return VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2;
 }
 
-template<> VkStructureType getStructureType<VkDeviceGroupSwapchainCreateInfoKHR> (void)
+template<> VkStructureType getStructureType<VkSubpassDescription2> (void)
 {
-       return VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR;
+       return VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2;
 }
 
-template<> VkStructureType getStructureType<VkDisplayModeCreateInfoKHR> (void)
+template<> VkStructureType getStructureType<VkSubpassDependency2> (void)
 {
-       return VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR;
+       return VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2;
 }
 
-template<> VkStructureType getStructureType<VkDisplaySurfaceCreateInfoKHR> (void)
+template<> VkStructureType getStructureType<VkRenderPassCreateInfo2> (void)
 {
-       return VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR;
+       return VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2;
 }
 
-template<> VkStructureType getStructureType<VkDisplayPresentInfoKHR> (void)
+template<> VkStructureType getStructureType<VkSubpassBeginInfo> (void)
 {
-       return VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR;
+       return VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO;
 }
 
-template<> VkStructureType getStructureType<VkImportMemoryFdInfoKHR> (void)
+template<> VkStructureType getStructureType<VkSubpassEndInfo> (void)
 {
-       return VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR;
+       return VK_STRUCTURE_TYPE_SUBPASS_END_INFO;
 }
 
-template<> VkStructureType getStructureType<VkMemoryFdPropertiesKHR> (void)
+template<> VkStructureType getStructureType<VkPhysicalDevice8BitStorageFeatures> (void)
 {
-       return VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR;
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES;
 }
 
-template<> VkStructureType getStructureType<VkMemoryGetFdInfoKHR> (void)
+template<> VkStructureType getStructureType<VkPhysicalDeviceDriverProperties> (void)
 {
-       return VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR;
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES;
 }
 
-template<> VkStructureType getStructureType<VkImportSemaphoreFdInfoKHR> (void)
+template<> VkStructureType getStructureType<VkPhysicalDeviceShaderAtomicInt64Features> (void)
 {
-       return VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR;
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES;
 }
 
-template<> VkStructureType getStructureType<VkSemaphoreGetFdInfoKHR> (void)
+template<> VkStructureType getStructureType<VkPhysicalDeviceShaderFloat16Int8Features> (void)
 {
-       return VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR;
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES;
 }
 
-template<> VkStructureType getStructureType<VkPhysicalDevicePushDescriptorPropertiesKHR> (void)
+template<> VkStructureType getStructureType<VkPhysicalDeviceFloatControlsProperties> (void)
 {
-       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR;
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES;
 }
 
-template<> VkStructureType getStructureType<VkPhysicalDeviceShaderFloat16Int8FeaturesKHR> (void)
+template<> VkStructureType getStructureType<VkDescriptorSetLayoutBindingFlagsCreateInfo> (void)
 {
-       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR;
+       return VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO;
 }
 
-template<> VkStructureType getStructureType<VkPresentRegionsKHR> (void)
+template<> VkStructureType getStructureType<VkPhysicalDeviceDescriptorIndexingFeatures> (void)
 {
-       return VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR;
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES;
 }
 
-template<> VkStructureType getStructureType<VkPhysicalDeviceImagelessFramebufferFeaturesKHR> (void)
+template<> VkStructureType getStructureType<VkPhysicalDeviceDescriptorIndexingProperties> (void)
 {
-       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR;
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES;
 }
 
-template<> VkStructureType getStructureType<VkFramebufferAttachmentImageInfoKHR> (void)
+template<> VkStructureType getStructureType<VkDescriptorSetVariableDescriptorCountAllocateInfo> (void)
 {
-       return VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR;
+       return VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO;
 }
 
-template<> VkStructureType getStructureType<VkFramebufferAttachmentsCreateInfoKHR> (void)
+template<> VkStructureType getStructureType<VkDescriptorSetVariableDescriptorCountLayoutSupport> (void)
 {
-       return VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR;
+       return VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT;
 }
 
-template<> VkStructureType getStructureType<VkRenderPassAttachmentBeginInfoKHR> (void)
+template<> VkStructureType getStructureType<VkSubpassDescriptionDepthStencilResolve> (void)
 {
-       return VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR;
+       return VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE;
 }
 
-template<> VkStructureType getStructureType<VkAttachmentDescription2KHR> (void)
+template<> VkStructureType getStructureType<VkPhysicalDeviceDepthStencilResolveProperties> (void)
 {
-       return VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR;
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES;
 }
 
-template<> VkStructureType getStructureType<VkAttachmentReference2KHR> (void)
+template<> VkStructureType getStructureType<VkPhysicalDeviceScalarBlockLayoutFeatures> (void)
 {
-       return VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR;
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES;
 }
 
-template<> VkStructureType getStructureType<VkSubpassDescription2KHR> (void)
+template<> VkStructureType getStructureType<VkImageStencilUsageCreateInfo> (void)
 {
-       return VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR;
+       return VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO;
 }
 
-template<> VkStructureType getStructureType<VkSubpassDependency2KHR> (void)
+template<> VkStructureType getStructureType<VkSamplerReductionModeCreateInfo> (void)
 {
-       return VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR;
+       return VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO;
 }
 
-template<> VkStructureType getStructureType<VkRenderPassCreateInfo2KHR> (void)
+template<> VkStructureType getStructureType<VkPhysicalDeviceSamplerFilterMinmaxProperties> (void)
 {
-       return VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR;
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES;
 }
 
-template<> VkStructureType getStructureType<VkSubpassBeginInfoKHR> (void)
+template<> VkStructureType getStructureType<VkPhysicalDeviceVulkanMemoryModelFeatures> (void)
 {
-       return VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR;
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES;
 }
 
-template<> VkStructureType getStructureType<VkSubpassEndInfoKHR> (void)
+template<> VkStructureType getStructureType<VkPhysicalDeviceImagelessFramebufferFeatures> (void)
 {
-       return VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR;
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES;
 }
 
-template<> VkStructureType getStructureType<VkSharedPresentSurfaceCapabilitiesKHR> (void)
+template<> VkStructureType getStructureType<VkFramebufferAttachmentImageInfo> (void)
 {
-       return VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR;
+       return VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO;
 }
 
-template<> VkStructureType getStructureType<VkImportFenceFdInfoKHR> (void)
+template<> VkStructureType getStructureType<VkFramebufferAttachmentsCreateInfo> (void)
 {
-       return VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR;
+       return VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO;
 }
 
-template<> VkStructureType getStructureType<VkFenceGetFdInfoKHR> (void)
+template<> VkStructureType getStructureType<VkRenderPassAttachmentBeginInfo> (void)
 {
-       return VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR;
+       return VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO;
 }
 
-template<> VkStructureType getStructureType<VkPhysicalDevicePerformanceQueryFeaturesKHR> (void)
+template<> VkStructureType getStructureType<VkPhysicalDeviceUniformBufferStandardLayoutFeatures> (void)
 {
-       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR;
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES;
 }
 
-template<> VkStructureType getStructureType<VkPhysicalDevicePerformanceQueryPropertiesKHR> (void)
+template<> VkStructureType getStructureType<VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures> (void)
 {
-       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR;
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES;
 }
 
-template<> VkStructureType getStructureType<VkPerformanceCounterKHR> (void)
+template<> VkStructureType getStructureType<VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures> (void)
 {
-       return VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR;
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES;
 }
 
-template<> VkStructureType getStructureType<VkPerformanceCounterDescriptionKHR> (void)
+template<> VkStructureType getStructureType<VkAttachmentReferenceStencilLayout> (void)
 {
-       return VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR;
+       return VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT;
 }
 
-template<> VkStructureType getStructureType<VkQueryPoolPerformanceCreateInfoKHR> (void)
+template<> VkStructureType getStructureType<VkAttachmentDescriptionStencilLayout> (void)
 {
-       return VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR;
+       return VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT;
 }
 
-template<> VkStructureType getStructureType<VkAcquireProfilingLockInfoKHR> (void)
+template<> VkStructureType getStructureType<VkPhysicalDeviceHostQueryResetFeatures> (void)
 {
-       return VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR;
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES;
 }
 
-template<> VkStructureType getStructureType<VkPerformanceQuerySubmitInfoKHR> (void)
+template<> VkStructureType getStructureType<VkPhysicalDeviceTimelineSemaphoreFeatures> (void)
 {
-       return VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR;
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES;
 }
 
-template<> VkStructureType getStructureType<VkPhysicalDeviceSurfaceInfo2KHR> (void)
+template<> VkStructureType getStructureType<VkPhysicalDeviceTimelineSemaphoreProperties> (void)
 {
-       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR;
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES;
 }
 
-template<> VkStructureType getStructureType<VkSurfaceCapabilities2KHR> (void)
+template<> VkStructureType getStructureType<VkSemaphoreTypeCreateInfo> (void)
 {
-       return VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR;
+       return VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO;
 }
 
-template<> VkStructureType getStructureType<VkSurfaceFormat2KHR> (void)
+template<> VkStructureType getStructureType<VkTimelineSemaphoreSubmitInfo> (void)
 {
-       return VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR;
+       return VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO;
 }
 
-template<> VkStructureType getStructureType<VkDisplayProperties2KHR> (void)
+template<> VkStructureType getStructureType<VkSemaphoreWaitInfo> (void)
 {
-       return VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR;
+       return VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO;
 }
 
-template<> VkStructureType getStructureType<VkDisplayPlaneProperties2KHR> (void)
+template<> VkStructureType getStructureType<VkSemaphoreSignalInfo> (void)
 {
-       return VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR;
+       return VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO;
 }
 
-template<> VkStructureType getStructureType<VkDisplayModeProperties2KHR> (void)
+template<> VkStructureType getStructureType<VkPhysicalDeviceBufferDeviceAddressFeatures> (void)
 {
-       return VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR;
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES;
 }
 
-template<> VkStructureType getStructureType<VkDisplayPlaneInfo2KHR> (void)
+template<> VkStructureType getStructureType<VkBufferDeviceAddressInfo> (void)
 {
-       return VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR;
+       return VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO;
 }
 
-template<> VkStructureType getStructureType<VkDisplayPlaneCapabilities2KHR> (void)
+template<> VkStructureType getStructureType<VkBufferOpaqueCaptureAddressCreateInfo> (void)
 {
-       return VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR;
+       return VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO;
+}
+
+template<> VkStructureType getStructureType<VkMemoryOpaqueCaptureAddressAllocateInfo> (void)
+{
+       return VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO;
+}
+
+template<> VkStructureType getStructureType<VkDeviceMemoryOpaqueCaptureAddressInfo> (void)
+{
+       return VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO;
 }
 
-template<> VkStructureType getStructureType<VkImageFormatListCreateInfoKHR> (void)
+template<> VkStructureType getStructureType<VkSwapchainCreateInfoKHR> (void)
 {
-       return VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR;
+       return VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR;
 }
 
-template<> VkStructureType getStructureType<VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR> (void)
+template<> VkStructureType getStructureType<VkPresentInfoKHR> (void)
 {
-       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR;
+       return VK_STRUCTURE_TYPE_PRESENT_INFO_KHR;
 }
 
-template<> VkStructureType getStructureType<VkPhysicalDevice8BitStorageFeaturesKHR> (void)
+template<> VkStructureType getStructureType<VkImageSwapchainCreateInfoKHR> (void)
 {
-       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR;
+       return VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR;
 }
 
-template<> VkStructureType getStructureType<VkPhysicalDeviceShaderAtomicInt64FeaturesKHR> (void)
+template<> VkStructureType getStructureType<VkBindImageMemorySwapchainInfoKHR> (void)
 {
-       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR;
+       return VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR;
 }
 
-template<> VkStructureType getStructureType<VkPhysicalDeviceShaderClockFeaturesKHR> (void)
+template<> VkStructureType getStructureType<VkAcquireNextImageInfoKHR> (void)
 {
-       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR;
+       return VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR;
+}
+
+template<> VkStructureType getStructureType<VkDeviceGroupPresentCapabilitiesKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR;
 }
 
-template<> VkStructureType getStructureType<VkPhysicalDeviceDriverPropertiesKHR> (void)
+template<> VkStructureType getStructureType<VkDeviceGroupPresentInfoKHR> (void)
 {
-       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR;
+       return VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR;
 }
 
-template<> VkStructureType getStructureType<VkPhysicalDeviceFloatControlsPropertiesKHR> (void)
+template<> VkStructureType getStructureType<VkDeviceGroupSwapchainCreateInfoKHR> (void)
 {
-       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR;
+       return VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR;
 }
 
-template<> VkStructureType getStructureType<VkSubpassDescriptionDepthStencilResolveKHR> (void)
+template<> VkStructureType getStructureType<VkDisplayModeCreateInfoKHR> (void)
 {
-       return VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR;
+       return VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR;
 }
 
-template<> VkStructureType getStructureType<VkPhysicalDeviceDepthStencilResolvePropertiesKHR> (void)
+template<> VkStructureType getStructureType<VkDisplaySurfaceCreateInfoKHR> (void)
 {
-       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR;
+       return VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR;
 }
 
-template<> VkStructureType getStructureType<VkPhysicalDeviceTimelineSemaphoreFeaturesKHR> (void)
+template<> VkStructureType getStructureType<VkDisplayPresentInfoKHR> (void)
 {
-       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR;
+       return VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR;
 }
 
-template<> VkStructureType getStructureType<VkPhysicalDeviceTimelineSemaphorePropertiesKHR> (void)
+template<> VkStructureType getStructureType<VkImportMemoryFdInfoKHR> (void)
 {
-       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR;
+       return VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR;
 }
 
-template<> VkStructureType getStructureType<VkSemaphoreTypeCreateInfoKHR> (void)
+template<> VkStructureType getStructureType<VkMemoryFdPropertiesKHR> (void)
 {
-       return VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR;
+       return VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR;
 }
 
-template<> VkStructureType getStructureType<VkTimelineSemaphoreSubmitInfoKHR> (void)
+template<> VkStructureType getStructureType<VkMemoryGetFdInfoKHR> (void)
 {
-       return VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR;
+       return VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR;
 }
 
-template<> VkStructureType getStructureType<VkSemaphoreWaitInfoKHR> (void)
+template<> VkStructureType getStructureType<VkImportSemaphoreFdInfoKHR> (void)
 {
-       return VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR;
+       return VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR;
 }
 
-template<> VkStructureType getStructureType<VkSemaphoreSignalInfoKHR> (void)
+template<> VkStructureType getStructureType<VkSemaphoreGetFdInfoKHR> (void)
 {
-       return VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR;
+       return VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR;
 }
 
-template<> VkStructureType getStructureType<VkPhysicalDeviceVulkanMemoryModelFeaturesKHR> (void)
+template<> VkStructureType getStructureType<VkPhysicalDevicePushDescriptorPropertiesKHR> (void)
 {
-       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR;
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR;
 }
 
-template<> VkStructureType getStructureType<VkSurfaceProtectedCapabilitiesKHR> (void)
+template<> VkStructureType getStructureType<VkPresentRegionsKHR> (void)
 {
-       return VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR;
+       return VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR;
 }
 
-template<> VkStructureType getStructureType<VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR> (void)
+template<> VkStructureType getStructureType<VkSharedPresentSurfaceCapabilitiesKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR;
+}
+
+template<> VkStructureType getStructureType<VkImportFenceFdInfoKHR> (void)
 {
-       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR;
+       return VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR;
 }
 
-template<> VkStructureType getStructureType<VkAttachmentReferenceStencilLayoutKHR> (void)
+template<> VkStructureType getStructureType<VkFenceGetFdInfoKHR> (void)
 {
-       return VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR;
+       return VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR;
 }
 
-template<> VkStructureType getStructureType<VkAttachmentDescriptionStencilLayoutKHR> (void)
+template<> VkStructureType getStructureType<VkPhysicalDevicePerformanceQueryFeaturesKHR> (void)
 {
-       return VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR;
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR;
 }
 
-template<> VkStructureType getStructureType<VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR> (void)
+template<> VkStructureType getStructureType<VkPhysicalDevicePerformanceQueryPropertiesKHR> (void)
 {
-       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR;
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR;
+}
+
+template<> VkStructureType getStructureType<VkPerformanceCounterKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR;
+}
+
+template<> VkStructureType getStructureType<VkPerformanceCounterDescriptionKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR;
+}
+
+template<> VkStructureType getStructureType<VkQueryPoolPerformanceCreateInfoKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR;
+}
+
+template<> VkStructureType getStructureType<VkAcquireProfilingLockInfoKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR;
+}
+
+template<> VkStructureType getStructureType<VkPerformanceQuerySubmitInfoKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceSurfaceInfo2KHR> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR;
+}
+
+template<> VkStructureType getStructureType<VkSurfaceCapabilities2KHR> (void)
+{
+       return VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR;
+}
+
+template<> VkStructureType getStructureType<VkSurfaceFormat2KHR> (void)
+{
+       return VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR;
+}
+
+template<> VkStructureType getStructureType<VkDisplayProperties2KHR> (void)
+{
+       return VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR;
+}
+
+template<> VkStructureType getStructureType<VkDisplayPlaneProperties2KHR> (void)
+{
+       return VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR;
+}
+
+template<> VkStructureType getStructureType<VkDisplayModeProperties2KHR> (void)
+{
+       return VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR;
+}
+
+template<> VkStructureType getStructureType<VkDisplayPlaneInfo2KHR> (void)
+{
+       return VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR;
+}
+
+template<> VkStructureType getStructureType<VkDisplayPlaneCapabilities2KHR> (void)
+{
+       return VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDeviceShaderClockFeaturesKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR;
+}
+
+template<> VkStructureType getStructureType<VkSurfaceProtectedCapabilitiesKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR;
 }
 
 template<> VkStructureType getStructureType<VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR> (void)
@@ -1186,16 +1281,6 @@ template<> VkStructureType getStructureType<VkDebugUtilsMessengerCreateInfoEXT>
        return VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT;
 }
 
-template<> VkStructureType getStructureType<VkSamplerReductionModeCreateInfoEXT> (void)
-{
-       return VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT;
-}
-
-template<> VkStructureType getStructureType<VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT> (void)
-{
-       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT;
-}
-
 template<> VkStructureType getStructureType<VkPhysicalDeviceInlineUniformBlockFeaturesEXT> (void)
 {
        return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT;
@@ -1311,31 +1396,6 @@ template<> VkStructureType getStructureType<VkShaderModuleValidationCacheCreateI
        return VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT;
 }
 
-template<> VkStructureType getStructureType<VkDescriptorSetLayoutBindingFlagsCreateInfoEXT> (void)
-{
-       return VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT;
-}
-
-template<> VkStructureType getStructureType<VkPhysicalDeviceDescriptorIndexingFeaturesEXT> (void)
-{
-       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT;
-}
-
-template<> VkStructureType getStructureType<VkPhysicalDeviceDescriptorIndexingPropertiesEXT> (void)
-{
-       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT;
-}
-
-template<> VkStructureType getStructureType<VkDescriptorSetVariableDescriptorCountAllocateInfoEXT> (void)
-{
-       return VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT;
-}
-
-template<> VkStructureType getStructureType<VkDescriptorSetVariableDescriptorCountLayoutSupportEXT> (void)
-{
-       return VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT;
-}
-
 template<> VkStructureType getStructureType<VkPipelineViewportShadingRateImageStateCreateInfoNV> (void)
 {
        return VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV;
@@ -1601,11 +1661,6 @@ template<> VkStructureType getStructureType<VkRenderPassFragmentDensityMapCreate
        return VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT;
 }
 
-template<> VkStructureType getStructureType<VkPhysicalDeviceScalarBlockLayoutFeaturesEXT> (void)
-{
-       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT;
-}
-
 template<> VkStructureType getStructureType<VkPhysicalDeviceSubgroupSizeControlFeaturesEXT> (void)
 {
        return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT;
@@ -1656,21 +1711,11 @@ template<> VkStructureType getStructureType<VkPhysicalDeviceBufferDeviceAddressF
        return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT;
 }
 
-template<> VkStructureType getStructureType<VkBufferDeviceAddressInfoEXT> (void)
-{
-       return VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT;
-}
-
 template<> VkStructureType getStructureType<VkBufferDeviceAddressCreateInfoEXT> (void)
 {
        return VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT;
 }
 
-template<> VkStructureType getStructureType<VkImageStencilUsageCreateInfoEXT> (void)
-{
-       return VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT;
-}
-
 template<> VkStructureType getStructureType<VkValidationFeaturesEXT> (void)
 {
        return VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT;
@@ -1736,11 +1781,6 @@ template<> VkStructureType getStructureType<VkPipelineRasterizationLineStateCrea
        return VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT;
 }
 
-template<> VkStructureType getStructureType<VkPhysicalDeviceHostQueryResetFeaturesEXT> (void)
-{
-       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT;
-}
-
 template<> VkStructureType getStructureType<VkPhysicalDeviceIndexTypeUint8FeaturesEXT> (void)
 {
        return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT;
index 8b21daf..38f2a5c 100644 (file)
@@ -3540,9 +3540,9 @@ tcu::Sampler mapVkSampler (const VkSamplerCreateInfo& samplerCreateInfo)
                {
                        case VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT:
                        {
-                               const VkSamplerReductionModeCreateInfoEXT reductionModeCreateInfo = *reinterpret_cast<const VkSamplerReductionModeCreateInfoEXT*>(pNext);
+                               const VkSamplerReductionModeCreateInfo reductionModeCreateInfo = *reinterpret_cast<const VkSamplerReductionModeCreateInfo*>(pNext);
                                reductionMode = mapVkSamplerReductionMode(reductionModeCreateInfo.reductionMode);
-                               pNext = reinterpret_cast<const VkSamplerReductionModeCreateInfoEXT*>(pNext)->pNext;
+                               pNext = reinterpret_cast<const VkSamplerReductionModeCreateInfo*>(pNext)->pNext;
                                break;
                        }
                        case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO:
@@ -3639,13 +3639,13 @@ tcu::Sampler::WrapMode mapVkSamplerAddressMode (VkSamplerAddressMode addressMode
        return tcu::Sampler::WRAPMODE_LAST;
 }
 
-tcu::Sampler::ReductionMode mapVkSamplerReductionMode (VkSamplerReductionModeEXT reductionMode)
+tcu::Sampler::ReductionMode mapVkSamplerReductionMode (VkSamplerReductionMode reductionMode)
 {
        switch (reductionMode)
        {
-               case VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT:    return tcu::Sampler::WEIGHTED_AVERAGE;
-               case VK_SAMPLER_REDUCTION_MODE_MIN_EXT:                                 return tcu::Sampler::MIN;
-               case VK_SAMPLER_REDUCTION_MODE_MAX_EXT:                                 return tcu::Sampler::MAX;
+               case VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE:        return tcu::Sampler::WEIGHTED_AVERAGE;
+               case VK_SAMPLER_REDUCTION_MODE_MIN:                                     return tcu::Sampler::MIN;
+               case VK_SAMPLER_REDUCTION_MODE_MAX:                                     return tcu::Sampler::MAX;
                default:
                        break;
        }
index 282378e..509c7c3 100644 (file)
@@ -56,7 +56,7 @@ tcu::TextureFormat                    getStencilCopyFormat            (VkFormat combinedFormat);
 tcu::Sampler                           mapVkSampler                            (const VkSamplerCreateInfo& samplerCreateInfo);
 tcu::Sampler::CompareMode      mapVkSamplerCompareOp           (VkCompareOp compareOp);
 tcu::Sampler::WrapMode         mapVkSamplerAddressMode         (VkSamplerAddressMode addressMode);
-tcu::Sampler::ReductionMode mapVkSamplerReductionMode  (VkSamplerReductionModeEXT reductionMode);
+tcu::Sampler::ReductionMode mapVkSamplerReductionMode  (VkSamplerReductionMode reductionMode);
 tcu::Sampler::FilterMode       mapVkMinTexFilter                       (VkFilter filter, VkSamplerMipmapMode mipMode);
 tcu::Sampler::FilterMode       mapVkMagTexFilter                       (VkFilter filter);
 
index 2060930..cf1c172 100644 (file)
@@ -168,6 +168,45 @@ if (!m_vk.updateDescriptorSetWithTemplate)
 m_vk.getDescriptorSetLayoutSupport                                             = (GetDescriptorSetLayoutSupportFunc)                                   GET_PROC_ADDR("vkGetDescriptorSetLayoutSupport");
 if (!m_vk.getDescriptorSetLayoutSupport)
        m_vk.getDescriptorSetLayoutSupport                                      = (GetDescriptorSetLayoutSupportFunc)                                   GET_PROC_ADDR("vkGetDescriptorSetLayoutSupportKHR");
+m_vk.cmdDrawIndirectCount                                                              = (CmdDrawIndirectCountFunc)                                                    GET_PROC_ADDR("vkCmdDrawIndirectCount");
+if (!m_vk.cmdDrawIndirectCount)
+       m_vk.cmdDrawIndirectCount                                                       = (CmdDrawIndirectCountFunc)                                                    GET_PROC_ADDR("vkCmdDrawIndirectCountKHR");
+m_vk.cmdDrawIndexedIndirectCount                                               = (CmdDrawIndexedIndirectCountFunc)                                             GET_PROC_ADDR("vkCmdDrawIndexedIndirectCount");
+if (!m_vk.cmdDrawIndexedIndirectCount)
+       m_vk.cmdDrawIndexedIndirectCount                                        = (CmdDrawIndexedIndirectCountFunc)                                             GET_PROC_ADDR("vkCmdDrawIndexedIndirectCountKHR");
+m_vk.createRenderPass2                                                                 = (CreateRenderPass2Func)                                                               GET_PROC_ADDR("vkCreateRenderPass2");
+if (!m_vk.createRenderPass2)
+       m_vk.createRenderPass2                                                          = (CreateRenderPass2Func)                                                               GET_PROC_ADDR("vkCreateRenderPass2KHR");
+m_vk.cmdBeginRenderPass2                                                               = (CmdBeginRenderPass2Func)                                                             GET_PROC_ADDR("vkCmdBeginRenderPass2");
+if (!m_vk.cmdBeginRenderPass2)
+       m_vk.cmdBeginRenderPass2                                                        = (CmdBeginRenderPass2Func)                                                             GET_PROC_ADDR("vkCmdBeginRenderPass2KHR");
+m_vk.cmdNextSubpass2                                                                   = (CmdNextSubpass2Func)                                                                 GET_PROC_ADDR("vkCmdNextSubpass2");
+if (!m_vk.cmdNextSubpass2)
+       m_vk.cmdNextSubpass2                                                            = (CmdNextSubpass2Func)                                                                 GET_PROC_ADDR("vkCmdNextSubpass2KHR");
+m_vk.cmdEndRenderPass2                                                                 = (CmdEndRenderPass2Func)                                                               GET_PROC_ADDR("vkCmdEndRenderPass2");
+if (!m_vk.cmdEndRenderPass2)
+       m_vk.cmdEndRenderPass2                                                          = (CmdEndRenderPass2Func)                                                               GET_PROC_ADDR("vkCmdEndRenderPass2KHR");
+m_vk.resetQueryPool                                                                            = (ResetQueryPoolFunc)                                                                  GET_PROC_ADDR("vkResetQueryPool");
+if (!m_vk.resetQueryPool)
+       m_vk.resetQueryPool                                                                     = (ResetQueryPoolFunc)                                                                  GET_PROC_ADDR("vkResetQueryPoolEXT");
+m_vk.getSemaphoreCounterValue                                                  = (GetSemaphoreCounterValueFunc)                                                GET_PROC_ADDR("vkGetSemaphoreCounterValue");
+if (!m_vk.getSemaphoreCounterValue)
+       m_vk.getSemaphoreCounterValue                                           = (GetSemaphoreCounterValueFunc)                                                GET_PROC_ADDR("vkGetSemaphoreCounterValueKHR");
+m_vk.waitSemaphores                                                                            = (WaitSemaphoresFunc)                                                                  GET_PROC_ADDR("vkWaitSemaphores");
+if (!m_vk.waitSemaphores)
+       m_vk.waitSemaphores                                                                     = (WaitSemaphoresFunc)                                                                  GET_PROC_ADDR("vkWaitSemaphoresKHR");
+m_vk.signalSemaphore                                                                   = (SignalSemaphoreFunc)                                                                 GET_PROC_ADDR("vkSignalSemaphore");
+if (!m_vk.signalSemaphore)
+       m_vk.signalSemaphore                                                            = (SignalSemaphoreFunc)                                                                 GET_PROC_ADDR("vkSignalSemaphoreKHR");
+m_vk.getBufferDeviceAddress                                                            = (GetBufferDeviceAddressFunc)                                                  GET_PROC_ADDR("vkGetBufferDeviceAddress");
+if (!m_vk.getBufferDeviceAddress)
+       m_vk.getBufferDeviceAddress                                                     = (GetBufferDeviceAddressFunc)                                                  GET_PROC_ADDR("vkGetBufferDeviceAddressKHR");
+m_vk.getBufferOpaqueCaptureAddress                                             = (GetBufferOpaqueCaptureAddressFunc)                                   GET_PROC_ADDR("vkGetBufferOpaqueCaptureAddress");
+if (!m_vk.getBufferOpaqueCaptureAddress)
+       m_vk.getBufferOpaqueCaptureAddress                                      = (GetBufferOpaqueCaptureAddressFunc)                                   GET_PROC_ADDR("vkGetBufferOpaqueCaptureAddressKHR");
+m_vk.getDeviceMemoryOpaqueCaptureAddress                               = (GetDeviceMemoryOpaqueCaptureAddressFunc)                             GET_PROC_ADDR("vkGetDeviceMemoryOpaqueCaptureAddress");
+if (!m_vk.getDeviceMemoryOpaqueCaptureAddress)
+       m_vk.getDeviceMemoryOpaqueCaptureAddress                        = (GetDeviceMemoryOpaqueCaptureAddressFunc)                             GET_PROC_ADDR("vkGetDeviceMemoryOpaqueCaptureAddressKHR");
 m_vk.createSwapchainKHR                                                                        = (CreateSwapchainKHRFunc)                                                              GET_PROC_ADDR("vkCreateSwapchainKHR");
 m_vk.destroySwapchainKHR                                                               = (DestroySwapchainKHRFunc)                                                             GET_PROC_ADDR("vkDestroySwapchainKHR");
 m_vk.getSwapchainImagesKHR                                                             = (GetSwapchainImagesKHRFunc)                                                   GET_PROC_ADDR("vkGetSwapchainImagesKHR");
@@ -183,20 +222,11 @@ m_vk.importSemaphoreFdKHR                                                         = (ImportSemaphoreFdKHRFunc)                                                    GET_PROC_ADD
 m_vk.getSemaphoreFdKHR                                                                 = (GetSemaphoreFdKHRFunc)                                                               GET_PROC_ADDR("vkGetSemaphoreFdKHR");
 m_vk.cmdPushDescriptorSetKHR                                                   = (CmdPushDescriptorSetKHRFunc)                                                 GET_PROC_ADDR("vkCmdPushDescriptorSetKHR");
 m_vk.cmdPushDescriptorSetWithTemplateKHR                               = (CmdPushDescriptorSetWithTemplateKHRFunc)                             GET_PROC_ADDR("vkCmdPushDescriptorSetWithTemplateKHR");
-m_vk.createRenderPass2KHR                                                              = (CreateRenderPass2KHRFunc)                                                    GET_PROC_ADDR("vkCreateRenderPass2KHR");
-m_vk.cmdBeginRenderPass2KHR                                                            = (CmdBeginRenderPass2KHRFunc)                                                  GET_PROC_ADDR("vkCmdBeginRenderPass2KHR");
-m_vk.cmdNextSubpass2KHR                                                                        = (CmdNextSubpass2KHRFunc)                                                              GET_PROC_ADDR("vkCmdNextSubpass2KHR");
-m_vk.cmdEndRenderPass2KHR                                                              = (CmdEndRenderPass2KHRFunc)                                                    GET_PROC_ADDR("vkCmdEndRenderPass2KHR");
 m_vk.getSwapchainStatusKHR                                                             = (GetSwapchainStatusKHRFunc)                                                   GET_PROC_ADDR("vkGetSwapchainStatusKHR");
 m_vk.importFenceFdKHR                                                                  = (ImportFenceFdKHRFunc)                                                                GET_PROC_ADDR("vkImportFenceFdKHR");
 m_vk.getFenceFdKHR                                                                             = (GetFenceFdKHRFunc)                                                                   GET_PROC_ADDR("vkGetFenceFdKHR");
 m_vk.acquireProfilingLockKHR                                                   = (AcquireProfilingLockKHRFunc)                                                 GET_PROC_ADDR("vkAcquireProfilingLockKHR");
 m_vk.releaseProfilingLockKHR                                                   = (ReleaseProfilingLockKHRFunc)                                                 GET_PROC_ADDR("vkReleaseProfilingLockKHR");
-m_vk.cmdDrawIndirectCountKHR                                                   = (CmdDrawIndirectCountKHRFunc)                                                 GET_PROC_ADDR("vkCmdDrawIndirectCountKHR");
-m_vk.cmdDrawIndexedIndirectCountKHR                                            = (CmdDrawIndexedIndirectCountKHRFunc)                                  GET_PROC_ADDR("vkCmdDrawIndexedIndirectCountKHR");
-m_vk.getSemaphoreCounterValueKHR                                               = (GetSemaphoreCounterValueKHRFunc)                                             GET_PROC_ADDR("vkGetSemaphoreCounterValueKHR");
-m_vk.waitSemaphoresKHR                                                                 = (WaitSemaphoresKHRFunc)                                                               GET_PROC_ADDR("vkWaitSemaphoresKHR");
-m_vk.signalSemaphoreKHR                                                                        = (SignalSemaphoreKHRFunc)                                                              GET_PROC_ADDR("vkSignalSemaphoreKHR");
 m_vk.getPipelineExecutablePropertiesKHR                                        = (GetPipelineExecutablePropertiesKHRFunc)                              GET_PROC_ADDR("vkGetPipelineExecutablePropertiesKHR");
 m_vk.getPipelineExecutableStatisticsKHR                                        = (GetPipelineExecutableStatisticsKHRFunc)                              GET_PROC_ADDR("vkGetPipelineExecutableStatisticsKHR");
 m_vk.getPipelineExecutableInternalRepresentationsKHR   = (GetPipelineExecutableInternalRepresentationsKHRFunc) GET_PROC_ADDR("vkGetPipelineExecutableInternalRepresentationsKHR");
@@ -284,7 +314,6 @@ m_vk.getPerformanceParameterINTEL                                           = (GetPerformanceParameterINTELFunc)
 m_vk.setLocalDimmingAMD                                                                        = (SetLocalDimmingAMDFunc)                                                              GET_PROC_ADDR("vkSetLocalDimmingAMD");
 m_vk.getBufferDeviceAddressEXT                                                 = (GetBufferDeviceAddressEXTFunc)                                               GET_PROC_ADDR("vkGetBufferDeviceAddressEXT");
 m_vk.cmdSetLineStippleEXT                                                              = (CmdSetLineStippleEXTFunc)                                                    GET_PROC_ADDR("vkCmdSetLineStippleEXT");
-m_vk.resetQueryPoolEXT                                                                 = (ResetQueryPoolEXTFunc)                                                               GET_PROC_ADDR("vkResetQueryPoolEXT");
 m_vk.getAndroidHardwareBufferPropertiesANDROID                 = (GetAndroidHardwareBufferPropertiesANDROIDFunc)               GET_PROC_ADDR("vkGetAndroidHardwareBufferPropertiesANDROID");
 m_vk.getMemoryAndroidHardwareBufferANDROID                             = (GetMemoryAndroidHardwareBufferANDROIDFunc)                   GET_PROC_ADDR("vkGetMemoryAndroidHardwareBufferANDROID");
 m_vk.getMemoryWin32HandleKHR                                                   = (GetMemoryWin32HandleKHRFunc)                                                 GET_PROC_ADDR("vkGetMemoryWin32HandleKHR");
index 1f84a2b..b2ac3f2 100644 (file)
@@ -3,7 +3,7 @@
  */
 bool checkMandatoryFeatures(const vkt::Context& context)
 {
-       if ( !context.isInstanceFunctionalitySupported("VK_KHR_get_physical_device_properties2") )
+       if (!context.isInstanceFunctionalitySupported("VK_KHR_get_physical_device_properties2"))
                TCU_THROW(NotSupportedError, "Extension VK_KHR_get_physical_device_properties2 is not present");
 
        VkPhysicalDevice                                        physicalDevice          = context.getPhysicalDevice();
@@ -76,6 +76,16 @@ bool checkMandatoryFeatures(const vkt::Context& context)
                nextPtr  = &physicalDeviceScalarBlockLayoutFeaturesEXT.pNext;
        }
 
+       vk::VkPhysicalDeviceSubgroupSizeControlFeaturesEXT physicalDeviceSubgroupSizeControlFeaturesEXT;
+       deMemset(&physicalDeviceSubgroupSizeControlFeaturesEXT, 0, sizeof(physicalDeviceSubgroupSizeControlFeaturesEXT));
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_subgroup_size_control")) )
+       {
+               physicalDeviceSubgroupSizeControlFeaturesEXT.sType = getStructureType<VkPhysicalDeviceSubgroupSizeControlFeaturesEXT>();
+               *nextPtr = &physicalDeviceSubgroupSizeControlFeaturesEXT;
+               nextPtr  = &physicalDeviceSubgroupSizeControlFeaturesEXT.pNext;
+       }
+
        vk::VkPhysicalDeviceTimelineSemaphoreFeaturesKHR physicalDeviceTimelineSemaphoreFeaturesKHR;
        deMemset(&physicalDeviceTimelineSemaphoreFeaturesKHR, 0, sizeof(physicalDeviceTimelineSemaphoreFeaturesKHR));
 
@@ -106,6 +116,26 @@ bool checkMandatoryFeatures(const vkt::Context& context)
                nextPtr  = &physicalDeviceVariablePointersFeatures.pNext;
        }
 
+       vk::VkPhysicalDeviceVulkan11Features physicalDeviceVulkan11Features;
+       deMemset(&physicalDeviceVulkan11Features, 0, sizeof(physicalDeviceVulkan11Features));
+
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) )
+       {
+               physicalDeviceVulkan11Features.sType = getStructureType<VkPhysicalDeviceVulkan11Features>();
+               *nextPtr = &physicalDeviceVulkan11Features;
+               nextPtr  = &physicalDeviceVulkan11Features.pNext;
+       }
+
+       vk::VkPhysicalDeviceVulkan12Features physicalDeviceVulkan12Features;
+       deMemset(&physicalDeviceVulkan12Features, 0, sizeof(physicalDeviceVulkan12Features));
+
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) )
+       {
+               physicalDeviceVulkan12Features.sType = getStructureType<VkPhysicalDeviceVulkan12Features>();
+               *nextPtr = &physicalDeviceVulkan12Features;
+               nextPtr  = &physicalDeviceVulkan12Features.pNext;
+       }
+
        context.getInstanceInterface().getPhysicalDeviceFeatures2(context.getPhysicalDevice(), &coreFeatures);
        bool result = true;
 
@@ -144,6 +174,15 @@ bool checkMandatoryFeatures(const vkt::Context& context)
                }
        }
 
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) )
+       {
+               if ( physicalDeviceVulkan11Features.multiview == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature multiview not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
        if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) )
        {
                if ( physicalDeviceMultiviewFeatures.multiview == VK_FALSE )
@@ -333,6 +372,69 @@ bool checkMandatoryFeatures(const vkt::Context& context)
                }
        }
 
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_subgroup_size_control")) )
+       {
+               if ( physicalDeviceSubgroupSizeControlFeaturesEXT.subgroupSizeControl == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature subgroupSizeControl not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_subgroup_size_control")) )
+       {
+               if ( physicalDeviceSubgroupSizeControlFeaturesEXT.computeFullSubgroups == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature computeFullSubgroups not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) )
+       {
+               if ( physicalDeviceVulkan12Features.subgroupBroadcastDynamicId == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature subgroupBroadcastDynamicId not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) )
+       {
+               if ( physicalDeviceVulkan12Features.imagelessFramebuffer == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature imagelessFramebuffer not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) )
+       {
+               if ( physicalDeviceVulkan12Features.uniformBufferStandardLayout == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature uniformBufferStandardLayout not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) )
+       {
+               if ( physicalDeviceVulkan12Features.separateDepthStencilLayouts == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature separateDepthStencilLayouts not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) )
+       {
+               if ( physicalDeviceVulkan12Features.hostQueryReset == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature hostQueryReset not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
        if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_timeline_semaphore")) )
        {
                if ( physicalDeviceTimelineSemaphoreFeaturesKHR.timelineSemaphore == VK_FALSE )
@@ -342,6 +444,132 @@ bool checkMandatoryFeatures(const vkt::Context& context)
                }
        }
 
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) )
+       {
+               if ( physicalDeviceVulkan12Features.timelineSemaphore == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature timelineSemaphore not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
+       {
+               if ( physicalDeviceVulkan12Features.shaderUniformTexelBufferArrayDynamicIndexing == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature shaderUniformTexelBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
+       {
+               if ( physicalDeviceVulkan12Features.shaderStorageTexelBufferArrayDynamicIndexing == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature shaderStorageTexelBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
+       {
+               if ( physicalDeviceVulkan12Features.shaderSampledImageArrayNonUniformIndexing == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature shaderSampledImageArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
+       {
+               if ( physicalDeviceVulkan12Features.shaderStorageBufferArrayNonUniformIndexing == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature shaderStorageBufferArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
+       {
+               if ( physicalDeviceVulkan12Features.shaderUniformTexelBufferArrayNonUniformIndexing == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature shaderUniformTexelBufferArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
+       {
+               if ( physicalDeviceVulkan12Features.descriptorBindingSampledImageUpdateAfterBind == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature descriptorBindingSampledImageUpdateAfterBind not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
+       {
+               if ( physicalDeviceVulkan12Features.descriptorBindingStorageImageUpdateAfterBind == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageImageUpdateAfterBind not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
+       {
+               if ( physicalDeviceVulkan12Features.descriptorBindingStorageBufferUpdateAfterBind == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
+       {
+               if ( physicalDeviceVulkan12Features.descriptorBindingUniformTexelBufferUpdateAfterBind == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature descriptorBindingUniformTexelBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
+       {
+               if ( physicalDeviceVulkan12Features.descriptorBindingStorageTexelBufferUpdateAfterBind == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageTexelBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
+       {
+               if ( physicalDeviceVulkan12Features.descriptorBindingUpdateUnusedWhilePending == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature descriptorBindingUpdateUnusedWhilePending not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
+       {
+               if ( physicalDeviceVulkan12Features.descriptorBindingPartiallyBound == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature descriptorBindingPartiallyBound not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
+       if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
+       {
+               if ( physicalDeviceVulkan12Features.runtimeDescriptorArray == VK_FALSE )
+               {
+                       log << tcu::TestLog::Message << "Mandatory feature runtimeDescriptorArray not supported" << tcu::TestLog::EndMessage;
+                       result = false;
+               }
+       }
+
        return result;
 }
 
index 328f5e6..0642cd0 100644 (file)
@@ -124,6 +124,7 @@ const MemoryRequirement MemoryRequirement::Protected                = MemoryRequirement(Memory
 const MemoryRequirement MemoryRequirement::Local                       = MemoryRequirement(MemoryRequirement::FLAG_LOCAL);
 const MemoryRequirement MemoryRequirement::Cached                      = MemoryRequirement(MemoryRequirement::FLAG_CACHED);
 const MemoryRequirement MemoryRequirement::NonLocal                    = MemoryRequirement(MemoryRequirement::FLAG_NON_LOCAL);
+const MemoryRequirement MemoryRequirement::DeviceAddress       = MemoryRequirement(MemoryRequirement::FLAG_DEVICE_ADDRESS);
 
 bool MemoryRequirement::matchesHeap (VkMemoryPropertyFlags heapFlags) const
 {
@@ -218,7 +219,7 @@ MovePtr<Allocation> SimpleAllocator::allocate (const VkMemoryAllocateInfo& alloc
 MovePtr<Allocation> SimpleAllocator::allocate (const VkMemoryRequirements& memReqs, MemoryRequirement requirement)
 {
        const deUint32                          memoryTypeNdx   = selectMatchingMemoryType(m_memProps, memReqs.memoryTypeBits, requirement);
-       const VkMemoryAllocateInfo      allocInfo               =
+       VkMemoryAllocateInfo            allocInfo               =
        {
                VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO, //      VkStructureType                 sType;
                DE_NULL,                                                                //      const void*                             pNext;
@@ -226,6 +227,20 @@ MovePtr<Allocation> SimpleAllocator::allocate (const VkMemoryRequirements& memRe
                memoryTypeNdx,                                                  //      deUint32                                memoryTypeIndex;
        };
 
+       VkMemoryAllocateFlagsInfo       allocFlagsInfo =
+       {
+               VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO,   //      VkStructureType sType
+               DE_NULL,                                                                                //      const void*             pNext
+               0,                                                                                              //      VkMemoryAllocateFlags    flags
+               0,                                                                                              //      uint32_t                 deviceMask
+       };
+
+       if (requirement & MemoryRequirement::DeviceAddress)
+       {
+               allocFlagsInfo.flags |= VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR;
+               allocInfo.pNext = &allocFlagsInfo;
+       }
+
        Move<VkDeviceMemory>            mem                             = allocateMemory(m_vk, m_device, &allocInfo);
        MovePtr<HostPtr>                        hostPtr;
 
@@ -238,13 +253,13 @@ MovePtr<Allocation> SimpleAllocator::allocate (const VkMemoryRequirements& memRe
        return MovePtr<Allocation>(new SimpleAllocation(mem, hostPtr));
 }
 
-static MovePtr<Allocation> allocateDedicated (const InstanceInterface&         vki,
-                                                                                         const DeviceInterface&                vkd,
-                                                                                         const VkPhysicalDevice&               physDevice,
-                                                                                         const VkDevice                                device,
-                                                                                         const VkMemoryRequirements&   memReqs,
-                                                                                         const MemoryRequirement               requirement,
-                                                                                         const void*                                   pNext)
+MovePtr<Allocation> allocateExtended (const InstanceInterface&         vki,
+                                                                         const DeviceInterface&                vkd,
+                                                                         const VkPhysicalDevice&               physDevice,
+                                                                         const VkDevice                                device,
+                                                                         const VkMemoryRequirements&   memReqs,
+                                                                         const MemoryRequirement               requirement,
+                                                                         const void*                                   pNext)
 {
        const VkPhysicalDeviceMemoryProperties  memoryProperties        = getPhysicalDeviceMemoryProperties(vki, physDevice);
        const deUint32                                                  memoryTypeNdx           = selectMatchingMemoryType(memoryProperties, memReqs.memoryTypeBits, requirement);
@@ -283,7 +298,7 @@ de::MovePtr<Allocation> allocateDedicated (const InstanceInterface& vki,
                buffer                                                                                                                          // VkBuffer                             buffer
        };
 
-       return allocateDedicated(vki, vkd, physDevice, device, memoryRequirements, requirement, &dedicatedAllocationInfo);
+       return allocateExtended(vki, vkd, physDevice, device, memoryRequirements, requirement, &dedicatedAllocationInfo);
 }
 
 de::MovePtr<Allocation> allocateDedicated (const InstanceInterface&    vki,
@@ -302,7 +317,7 @@ de::MovePtr<Allocation> allocateDedicated (const InstanceInterface& vki,
                DE_NULL                                                                                                                 // VkBuffer                             buffer
        };
 
-       return allocateDedicated(vki, vkd, physDevice, device, memoryRequirements, requirement, &dedicatedAllocationInfo);
+       return allocateExtended(vki, vkd, physDevice, device, memoryRequirements, requirement, &dedicatedAllocationInfo);
 }
 
 void* mapMemory (const DeviceInterface& vkd, VkDevice device, VkDeviceMemory mem, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags)
index 34083ce..30ae4db 100644 (file)
@@ -89,6 +89,7 @@ public:
        static const MemoryRequirement  Local;
        static const MemoryRequirement  Cached;
        static const MemoryRequirement  NonLocal;
+       static const MemoryRequirement  DeviceAddress;
 
        inline MemoryRequirement                operator|                       (MemoryRequirement requirement) const
        {
@@ -118,6 +119,7 @@ private:
                FLAG_LOCAL                              = 1u << 4u,
                FLAG_CACHED                             = 1u << 5u,
                FLAG_NON_LOCAL                  = 1u << 6u,
+               FLAG_DEVICE_ADDRESS             = 1u << 7u,
        };
 };
 
@@ -147,6 +149,7 @@ private:
        const VkPhysicalDeviceMemoryProperties  m_memProps;
 };
 
+de::MovePtr<Allocation>        allocateExtended                        (const InstanceInterface& vki, const DeviceInterface& vkd, const VkPhysicalDevice& physDevice, const VkDevice device, const VkMemoryRequirements& memReqs, const MemoryRequirement requirement, const void* pNext);
 de::MovePtr<Allocation>        allocateDedicated                       (const InstanceInterface& vki, const DeviceInterface& vkd, const VkPhysicalDevice& physDevice, const VkDevice device, const VkBuffer buffer, MemoryRequirement requirement);
 de::MovePtr<Allocation>        allocateDedicated                       (const InstanceInterface& vki, const DeviceInterface& vkd, const VkPhysicalDevice& physDevice, const VkDevice device, const VkImage image, MemoryRequirement requirement);
 
index 73fd5b5..8b6f6ee 100644 (file)
@@ -250,7 +250,7 @@ class RenderPass
 {
 public:
        RenderPass (VkDevice, const VkRenderPassCreateInfo*)            {}
-       RenderPass (VkDevice, const VkRenderPassCreateInfo2KHR*)        {}
+       RenderPass (VkDevice, const VkRenderPassCreateInfo2*)           {}
 };
 
 class SwapchainKHR
index a0dff63..15078dd 100644 (file)
@@ -127,22 +127,22 @@ VKAPI_ATTR VkResult VKAPI_CALL createDescriptorUpdateTemplate (VkDevice device,
        VK_NULL_RETURN((*pDescriptorUpdateTemplate = allocateNonDispHandle<DescriptorUpdateTemplate, VkDescriptorUpdateTemplate>(device, pCreateInfo, pAllocator)));
 }
 
-VKAPI_ATTR VkResult VKAPI_CALL createSwapchainKHR (VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain)
+VKAPI_ATTR VkResult VKAPI_CALL createRenderPass2 (VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass)
 {
        DE_UNREF(pAllocator);
-       VK_NULL_RETURN((*pSwapchain = allocateNonDispHandle<SwapchainKHR, VkSwapchainKHR>(device, pCreateInfo, pAllocator)));
+       VK_NULL_RETURN((*pRenderPass = allocateNonDispHandle<RenderPass, VkRenderPass>(device, pCreateInfo, pAllocator)));
 }
 
-VKAPI_ATTR VkResult VKAPI_CALL createDisplayPlaneSurfaceKHR (VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface)
+VKAPI_ATTR VkResult VKAPI_CALL createSwapchainKHR (VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain)
 {
        DE_UNREF(pAllocator);
-       VK_NULL_RETURN((*pSurface = allocateNonDispHandle<SurfaceKHR, VkSurfaceKHR>(instance, pCreateInfo, pAllocator)));
+       VK_NULL_RETURN((*pSwapchain = allocateNonDispHandle<SwapchainKHR, VkSwapchainKHR>(device, pCreateInfo, pAllocator)));
 }
 
-VKAPI_ATTR VkResult VKAPI_CALL createRenderPass2KHR (VkDevice device, const VkRenderPassCreateInfo2KHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass)
+VKAPI_ATTR VkResult VKAPI_CALL createDisplayPlaneSurfaceKHR (VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface)
 {
        DE_UNREF(pAllocator);
-       VK_NULL_RETURN((*pRenderPass = allocateNonDispHandle<RenderPass, VkRenderPass>(device, pCreateInfo, pAllocator)));
+       VK_NULL_RETURN((*pSurface = allocateNonDispHandle<SurfaceKHR, VkSurfaceKHR>(instance, pCreateInfo, pAllocator)));
 }
 
 VKAPI_ATTR VkResult VKAPI_CALL createDebugReportCallbackEXT (VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugReportCallbackEXT* pCallback)
@@ -1231,6 +1231,100 @@ VKAPI_ATTR void VKAPI_CALL getDescriptorSetLayoutSupport (VkDevice device, const
        DE_UNREF(pSupport);
 }
 
+VKAPI_ATTR void VKAPI_CALL cmdDrawIndirectCount (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride)
+{
+       DE_UNREF(commandBuffer);
+       DE_UNREF(buffer);
+       DE_UNREF(offset);
+       DE_UNREF(countBuffer);
+       DE_UNREF(countBufferOffset);
+       DE_UNREF(maxDrawCount);
+       DE_UNREF(stride);
+}
+
+VKAPI_ATTR void VKAPI_CALL cmdDrawIndexedIndirectCount (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride)
+{
+       DE_UNREF(commandBuffer);
+       DE_UNREF(buffer);
+       DE_UNREF(offset);
+       DE_UNREF(countBuffer);
+       DE_UNREF(countBufferOffset);
+       DE_UNREF(maxDrawCount);
+       DE_UNREF(stride);
+}
+
+VKAPI_ATTR void VKAPI_CALL cmdBeginRenderPass2 (VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfo* pSubpassBeginInfo)
+{
+       DE_UNREF(commandBuffer);
+       DE_UNREF(pRenderPassBegin);
+       DE_UNREF(pSubpassBeginInfo);
+}
+
+VKAPI_ATTR void VKAPI_CALL cmdNextSubpass2 (VkCommandBuffer commandBuffer, const VkSubpassBeginInfo* pSubpassBeginInfo, const VkSubpassEndInfo* pSubpassEndInfo)
+{
+       DE_UNREF(commandBuffer);
+       DE_UNREF(pSubpassBeginInfo);
+       DE_UNREF(pSubpassEndInfo);
+}
+
+VKAPI_ATTR void VKAPI_CALL cmdEndRenderPass2 (VkCommandBuffer commandBuffer, const VkSubpassEndInfo* pSubpassEndInfo)
+{
+       DE_UNREF(commandBuffer);
+       DE_UNREF(pSubpassEndInfo);
+}
+
+VKAPI_ATTR void VKAPI_CALL resetQueryPool (VkDevice device, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount)
+{
+       DE_UNREF(device);
+       DE_UNREF(queryPool);
+       DE_UNREF(firstQuery);
+       DE_UNREF(queryCount);
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL getSemaphoreCounterValue (VkDevice device, VkSemaphore semaphore, deUint64* pValue)
+{
+       DE_UNREF(device);
+       DE_UNREF(semaphore);
+       DE_UNREF(pValue);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL waitSemaphores (VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, deUint64 timeout)
+{
+       DE_UNREF(device);
+       DE_UNREF(pWaitInfo);
+       DE_UNREF(timeout);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL signalSemaphore (VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo)
+{
+       DE_UNREF(device);
+       DE_UNREF(pSignalInfo);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR VkDeviceAddress VKAPI_CALL getBufferDeviceAddress (VkDevice device, const VkBufferDeviceAddressInfo* pInfo)
+{
+       DE_UNREF(device);
+       DE_UNREF(pInfo);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR uint64_t VKAPI_CALL getBufferOpaqueCaptureAddress (VkDevice device, const VkBufferDeviceAddressInfo* pInfo)
+{
+       DE_UNREF(device);
+       DE_UNREF(pInfo);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR uint64_t VKAPI_CALL getDeviceMemoryOpaqueCaptureAddress (VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo)
+{
+       DE_UNREF(device);
+       DE_UNREF(pInfo);
+       return VK_SUCCESS;
+}
+
 VKAPI_ATTR VkResult VKAPI_CALL getPhysicalDeviceSurfaceSupportKHR (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported)
 {
        DE_UNREF(physicalDevice);
@@ -1419,26 +1513,6 @@ VKAPI_ATTR void VKAPI_CALL cmdPushDescriptorSetWithTemplateKHR (VkCommandBuffer
        DE_UNREF(pData);
 }
 
-VKAPI_ATTR void VKAPI_CALL cmdBeginRenderPass2KHR (VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfoKHR* pSubpassBeginInfo)
-{
-       DE_UNREF(commandBuffer);
-       DE_UNREF(pRenderPassBegin);
-       DE_UNREF(pSubpassBeginInfo);
-}
-
-VKAPI_ATTR void VKAPI_CALL cmdNextSubpass2KHR (VkCommandBuffer commandBuffer, const VkSubpassBeginInfoKHR* pSubpassBeginInfo, const VkSubpassEndInfoKHR* pSubpassEndInfo)
-{
-       DE_UNREF(commandBuffer);
-       DE_UNREF(pSubpassBeginInfo);
-       DE_UNREF(pSubpassEndInfo);
-}
-
-VKAPI_ATTR void VKAPI_CALL cmdEndRenderPass2KHR (VkCommandBuffer commandBuffer, const VkSubpassEndInfoKHR* pSubpassEndInfo)
-{
-       DE_UNREF(commandBuffer);
-       DE_UNREF(pSubpassEndInfo);
-}
-
 VKAPI_ATTR VkResult VKAPI_CALL getSwapchainStatusKHR (VkDevice device, VkSwapchainKHR swapchain)
 {
        DE_UNREF(device);
@@ -1540,51 +1614,6 @@ VKAPI_ATTR VkResult VKAPI_CALL getDisplayPlaneCapabilities2KHR (VkPhysicalDevice
        return VK_SUCCESS;
 }
 
-VKAPI_ATTR void VKAPI_CALL cmdDrawIndirectCountKHR (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride)
-{
-       DE_UNREF(commandBuffer);
-       DE_UNREF(buffer);
-       DE_UNREF(offset);
-       DE_UNREF(countBuffer);
-       DE_UNREF(countBufferOffset);
-       DE_UNREF(maxDrawCount);
-       DE_UNREF(stride);
-}
-
-VKAPI_ATTR void VKAPI_CALL cmdDrawIndexedIndirectCountKHR (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride)
-{
-       DE_UNREF(commandBuffer);
-       DE_UNREF(buffer);
-       DE_UNREF(offset);
-       DE_UNREF(countBuffer);
-       DE_UNREF(countBufferOffset);
-       DE_UNREF(maxDrawCount);
-       DE_UNREF(stride);
-}
-
-VKAPI_ATTR VkResult VKAPI_CALL getSemaphoreCounterValueKHR (VkDevice device, VkSemaphore semaphore, deUint64* pValue)
-{
-       DE_UNREF(device);
-       DE_UNREF(semaphore);
-       DE_UNREF(pValue);
-       return VK_SUCCESS;
-}
-
-VKAPI_ATTR VkResult VKAPI_CALL waitSemaphoresKHR (VkDevice device, const VkSemaphoreWaitInfoKHR* pWaitInfo, deUint64 timeout)
-{
-       DE_UNREF(device);
-       DE_UNREF(pWaitInfo);
-       DE_UNREF(timeout);
-       return VK_SUCCESS;
-}
-
-VKAPI_ATTR VkResult VKAPI_CALL signalSemaphoreKHR (VkDevice device, const VkSemaphoreSignalInfoKHR* pSignalInfo)
-{
-       DE_UNREF(device);
-       DE_UNREF(pSignalInfo);
-       return VK_SUCCESS;
-}
-
 VKAPI_ATTR VkResult VKAPI_CALL getPipelineExecutablePropertiesKHR (VkDevice device, const VkPipelineInfoKHR* pPipelineInfo, deUint32* pExecutableCount, VkPipelineExecutablePropertiesKHR* pProperties)
 {
        DE_UNREF(device);
@@ -2271,7 +2300,7 @@ VKAPI_ATTR void VKAPI_CALL setLocalDimmingAMD (VkDevice device, VkSwapchainKHR s
        DE_UNREF(localDimmingEnable);
 }
 
-VKAPI_ATTR VkDeviceAddress VKAPI_CALL getBufferDeviceAddressEXT (VkDevice device, const VkBufferDeviceAddressInfoEXT* pInfo)
+VKAPI_ATTR VkDeviceAddress VKAPI_CALL getBufferDeviceAddressEXT (VkDevice device, const VkBufferDeviceAddressInfo* pInfo)
 {
        DE_UNREF(device);
        DE_UNREF(pInfo);
@@ -2301,14 +2330,6 @@ VKAPI_ATTR void VKAPI_CALL cmdSetLineStippleEXT (VkCommandBuffer commandBuffer,
        DE_UNREF(lineStipplePattern);
 }
 
-VKAPI_ATTR void VKAPI_CALL resetQueryPoolEXT (VkDevice device, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount)
-{
-       DE_UNREF(device);
-       DE_UNREF(queryPool);
-       DE_UNREF(firstQuery);
-       DE_UNREF(queryCount);
-}
-
 VKAPI_ATTR VkResult VKAPI_CALL getAndroidHardwareBufferPropertiesANDROID (VkDevice device, const struct pt::AndroidHardwareBufferPtr buffer, VkAndroidHardwareBufferPropertiesANDROID* pProperties)
 {
        DE_UNREF(device);
@@ -2694,6 +2715,19 @@ static const tcu::StaticFunctionLibrary::Entry s_deviceFunctions[] =
        VK_NULL_FUNC_ENTRY(vkDestroyDescriptorUpdateTemplate,                                   destroyDescriptorUpdateTemplate),
        VK_NULL_FUNC_ENTRY(vkUpdateDescriptorSetWithTemplate,                                   updateDescriptorSetWithTemplate),
        VK_NULL_FUNC_ENTRY(vkGetDescriptorSetLayoutSupport,                                             getDescriptorSetLayoutSupport),
+       VK_NULL_FUNC_ENTRY(vkCmdDrawIndirectCount,                                                              cmdDrawIndirectCount),
+       VK_NULL_FUNC_ENTRY(vkCmdDrawIndexedIndirectCount,                                               cmdDrawIndexedIndirectCount),
+       VK_NULL_FUNC_ENTRY(vkCreateRenderPass2,                                                                 createRenderPass2),
+       VK_NULL_FUNC_ENTRY(vkCmdBeginRenderPass2,                                                               cmdBeginRenderPass2),
+       VK_NULL_FUNC_ENTRY(vkCmdNextSubpass2,                                                                   cmdNextSubpass2),
+       VK_NULL_FUNC_ENTRY(vkCmdEndRenderPass2,                                                                 cmdEndRenderPass2),
+       VK_NULL_FUNC_ENTRY(vkResetQueryPool,                                                                    resetQueryPool),
+       VK_NULL_FUNC_ENTRY(vkGetSemaphoreCounterValue,                                                  getSemaphoreCounterValue),
+       VK_NULL_FUNC_ENTRY(vkWaitSemaphores,                                                                    waitSemaphores),
+       VK_NULL_FUNC_ENTRY(vkSignalSemaphore,                                                                   signalSemaphore),
+       VK_NULL_FUNC_ENTRY(vkGetBufferDeviceAddress,                                                    getBufferDeviceAddress),
+       VK_NULL_FUNC_ENTRY(vkGetBufferOpaqueCaptureAddress,                                             getBufferOpaqueCaptureAddress),
+       VK_NULL_FUNC_ENTRY(vkGetDeviceMemoryOpaqueCaptureAddress,                               getDeviceMemoryOpaqueCaptureAddress),
        VK_NULL_FUNC_ENTRY(vkCreateSwapchainKHR,                                                                createSwapchainKHR),
        VK_NULL_FUNC_ENTRY(vkDestroySwapchainKHR,                                                               destroySwapchainKHR),
        VK_NULL_FUNC_ENTRY(vkGetSwapchainImagesKHR,                                                             getSwapchainImagesKHR),
@@ -2716,10 +2750,10 @@ static const tcu::StaticFunctionLibrary::Entry s_deviceFunctions[] =
        VK_NULL_FUNC_ENTRY(vkCreateDescriptorUpdateTemplateKHR,                                 createDescriptorUpdateTemplate),
        VK_NULL_FUNC_ENTRY(vkDestroyDescriptorUpdateTemplateKHR,                                destroyDescriptorUpdateTemplate),
        VK_NULL_FUNC_ENTRY(vkUpdateDescriptorSetWithTemplateKHR,                                updateDescriptorSetWithTemplate),
-       VK_NULL_FUNC_ENTRY(vkCreateRenderPass2KHR,                                                              createRenderPass2KHR),
-       VK_NULL_FUNC_ENTRY(vkCmdBeginRenderPass2KHR,                                                    cmdBeginRenderPass2KHR),
-       VK_NULL_FUNC_ENTRY(vkCmdNextSubpass2KHR,                                                                cmdNextSubpass2KHR),
-       VK_NULL_FUNC_ENTRY(vkCmdEndRenderPass2KHR,                                                              cmdEndRenderPass2KHR),
+       VK_NULL_FUNC_ENTRY(vkCreateRenderPass2KHR,                                                              createRenderPass2),
+       VK_NULL_FUNC_ENTRY(vkCmdBeginRenderPass2KHR,                                                    cmdBeginRenderPass2),
+       VK_NULL_FUNC_ENTRY(vkCmdNextSubpass2KHR,                                                                cmdNextSubpass2),
+       VK_NULL_FUNC_ENTRY(vkCmdEndRenderPass2KHR,                                                              cmdEndRenderPass2),
        VK_NULL_FUNC_ENTRY(vkGetSwapchainStatusKHR,                                                             getSwapchainStatusKHR),
        VK_NULL_FUNC_ENTRY(vkImportFenceFdKHR,                                                                  importFenceFdKHR),
        VK_NULL_FUNC_ENTRY(vkGetFenceFdKHR,                                                                             getFenceFdKHR),
@@ -2733,11 +2767,14 @@ static const tcu::StaticFunctionLibrary::Entry s_deviceFunctions[] =
        VK_NULL_FUNC_ENTRY(vkBindBufferMemory2KHR,                                                              bindBufferMemory2),
        VK_NULL_FUNC_ENTRY(vkBindImageMemory2KHR,                                                               bindImageMemory2),
        VK_NULL_FUNC_ENTRY(vkGetDescriptorSetLayoutSupportKHR,                                  getDescriptorSetLayoutSupport),
-       VK_NULL_FUNC_ENTRY(vkCmdDrawIndirectCountKHR,                                                   cmdDrawIndirectCountKHR),
-       VK_NULL_FUNC_ENTRY(vkCmdDrawIndexedIndirectCountKHR,                                    cmdDrawIndexedIndirectCountKHR),
-       VK_NULL_FUNC_ENTRY(vkGetSemaphoreCounterValueKHR,                                               getSemaphoreCounterValueKHR),
-       VK_NULL_FUNC_ENTRY(vkWaitSemaphoresKHR,                                                                 waitSemaphoresKHR),
-       VK_NULL_FUNC_ENTRY(vkSignalSemaphoreKHR,                                                                signalSemaphoreKHR),
+       VK_NULL_FUNC_ENTRY(vkCmdDrawIndirectCountKHR,                                                   cmdDrawIndirectCount),
+       VK_NULL_FUNC_ENTRY(vkCmdDrawIndexedIndirectCountKHR,                                    cmdDrawIndexedIndirectCount),
+       VK_NULL_FUNC_ENTRY(vkGetSemaphoreCounterValueKHR,                                               getSemaphoreCounterValue),
+       VK_NULL_FUNC_ENTRY(vkWaitSemaphoresKHR,                                                                 waitSemaphores),
+       VK_NULL_FUNC_ENTRY(vkSignalSemaphoreKHR,                                                                signalSemaphore),
+       VK_NULL_FUNC_ENTRY(vkGetBufferDeviceAddressKHR,                                                 getBufferDeviceAddress),
+       VK_NULL_FUNC_ENTRY(vkGetBufferOpaqueCaptureAddressKHR,                                  getBufferOpaqueCaptureAddress),
+       VK_NULL_FUNC_ENTRY(vkGetDeviceMemoryOpaqueCaptureAddressKHR,                    getDeviceMemoryOpaqueCaptureAddress),
        VK_NULL_FUNC_ENTRY(vkGetPipelineExecutablePropertiesKHR,                                getPipelineExecutablePropertiesKHR),
        VK_NULL_FUNC_ENTRY(vkGetPipelineExecutableStatisticsKHR,                                getPipelineExecutableStatisticsKHR),
        VK_NULL_FUNC_ENTRY(vkGetPipelineExecutableInternalRepresentationsKHR,   getPipelineExecutableInternalRepresentationsKHR),
@@ -2825,7 +2862,7 @@ static const tcu::StaticFunctionLibrary::Entry s_deviceFunctions[] =
        VK_NULL_FUNC_ENTRY(vkSetLocalDimmingAMD,                                                                setLocalDimmingAMD),
        VK_NULL_FUNC_ENTRY(vkGetBufferDeviceAddressEXT,                                                 getBufferDeviceAddressEXT),
        VK_NULL_FUNC_ENTRY(vkCmdSetLineStippleEXT,                                                              cmdSetLineStippleEXT),
-       VK_NULL_FUNC_ENTRY(vkResetQueryPoolEXT,                                                                 resetQueryPoolEXT),
+       VK_NULL_FUNC_ENTRY(vkResetQueryPoolEXT,                                                                 resetQueryPool),
        VK_NULL_FUNC_ENTRY(vkGetAndroidHardwareBufferPropertiesANDROID,                 getAndroidHardwareBufferPropertiesANDROID),
        VK_NULL_FUNC_ENTRY(vkGetMemoryAndroidHardwareBufferANDROID,                             getMemoryAndroidHardwareBufferANDROID),
        VK_NULL_FUNC_ENTRY(vkGetMemoryWin32HandleKHR,                                                   getMemoryWin32HandleKHR),
index 242cacb..6444570 100644 (file)
@@ -110,6 +110,7 @@ void optimizeCompiledBinary (vector<deUint32>& binary, int optimizationRecipe, c
                case SPIRV_VERSION_1_2:
                case SPIRV_VERSION_1_3: targetEnv = SPV_ENV_VULKAN_1_1; break;
                case SPIRV_VERSION_1_4: targetEnv = SPV_ENV_VULKAN_1_1_SPIRV_1_4;       break;
+               case SPIRV_VERSION_1_5: targetEnv = SPV_ENV_VULKAN_1_2; break;
                default:
                        TCU_THROW(InternalError, "Unexpected SPIR-V version requested");
        }
@@ -753,8 +754,10 @@ vk::SpirvVersion getMaxSpirvVersionForVulkan (const deUint32 vulkanVersion)
        deUint32 vulkanVersionMajorMinor = VK_MAKE_VERSION(VK_VERSION_MAJOR(vulkanVersion), VK_VERSION_MINOR(vulkanVersion), 0);
        if (vulkanVersionMajorMinor == VK_API_VERSION_1_0)
                result = vk::SPIRV_VERSION_1_0;
-       else if (vulkanVersionMajorMinor >= VK_API_VERSION_1_1)
+       else if (vulkanVersionMajorMinor == VK_API_VERSION_1_1)
                result = vk::SPIRV_VERSION_1_3;
+       else if (vulkanVersionMajorMinor >= VK_API_VERSION_1_2)
+               result = vk::SPIRV_VERSION_1_5;
 
        DE_ASSERT(result < vk::SPIRV_VERSION_LAST);
 
@@ -773,7 +776,7 @@ vk::SpirvVersion getMaxSpirvVersionForGlsl (const deUint32 vulkanVersion)
 
 SpirvVersion extractSpirvVersion (const ProgramBinary& binary)
 {
-       DE_STATIC_ASSERT(SPIRV_VERSION_1_4 + 1 == SPIRV_VERSION_LAST);
+       DE_STATIC_ASSERT(SPIRV_VERSION_1_5 + 1 == SPIRV_VERSION_LAST);
 
        if (binary.getFormat() != PROGRAM_FORMAT_SPIRV)
                TCU_THROW(InternalError, "Binary is not in SPIR-V format");
@@ -786,6 +789,7 @@ SpirvVersion extractSpirvVersion (const ProgramBinary& binary)
        const deUint32                          spirvBinaryVersion12    = 0x00010200;
        const deUint32                          spirvBinaryVersion13    = 0x00010300;
        const deUint32                          spirvBinaryVersion14    = 0x00010400;
+       const deUint32                          spirvBinaryVersion15    = 0x00010500;
        const SpirvBinaryHeader*        header                                  = reinterpret_cast<const SpirvBinaryHeader*>(binary.getBinary());
        const deUint32                          spirvVersion                    = isNativeSpirVBinaryEndianness()
                                                                                                                ? header->version
@@ -799,6 +803,7 @@ SpirvVersion extractSpirvVersion (const ProgramBinary& binary)
                case spirvBinaryVersion12:      result = SPIRV_VERSION_1_2; break; //!< SPIR-V 1.2
                case spirvBinaryVersion13:      result = SPIRV_VERSION_1_3; break; //!< SPIR-V 1.3
                case spirvBinaryVersion14:      result = SPIRV_VERSION_1_4; break; //!< SPIR-V 1.4
+               case spirvBinaryVersion15:      result = SPIRV_VERSION_1_5; break; //!< SPIR-V 1.5
                default:                                        TCU_THROW(InternalError, "Unknown SPIR-V version detected in binary");
        }
 
@@ -807,7 +812,7 @@ SpirvVersion extractSpirvVersion (const ProgramBinary& binary)
 
 std::string getSpirvVersionName (const SpirvVersion spirvVersion)
 {
-       DE_STATIC_ASSERT(SPIRV_VERSION_1_4 + 1 == SPIRV_VERSION_LAST);
+       DE_STATIC_ASSERT(SPIRV_VERSION_1_5 + 1 == SPIRV_VERSION_LAST);
        DE_ASSERT(spirvVersion < SPIRV_VERSION_LAST);
 
        std::string result;
@@ -819,6 +824,7 @@ std::string getSpirvVersionName (const SpirvVersion spirvVersion)
                case SPIRV_VERSION_1_2: result = "1.2"; break; //!< SPIR-V 1.2
                case SPIRV_VERSION_1_3: result = "1.3"; break; //!< SPIR-V 1.3
                case SPIRV_VERSION_1_4: result = "1.4"; break; //!< SPIR-V 1.4
+               case SPIRV_VERSION_1_5: result = "1.5"; break; //!< SPIR-V 1.5
                default:                                result = "Unknown";
        }
 
index 8f7be39..de83fab 100644 (file)
@@ -155,6 +155,43 @@ VkPhysicalDeviceFeatures2 getPhysicalDeviceFeatures2 (const InstanceInterface& v
        return features;
 }
 
+VkPhysicalDeviceVulkan12Features getPhysicalDeviceVulkan12Features (const InstanceInterface& vk, VkPhysicalDevice physicalDevice)
+{
+       VkPhysicalDeviceFeatures2                       features;
+       VkPhysicalDeviceVulkan12Features        vulkan_12_features;
+
+       deMemset(&features, 0, sizeof(features));
+       features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2;
+
+       deMemset(&vulkan_12_features, 0, sizeof(vulkan_12_features));
+       vulkan_12_features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES;
+
+       features.pNext = &vulkan_12_features;
+
+       vk.getPhysicalDeviceFeatures2(physicalDevice, &features);
+       return vulkan_12_features;
+}
+
+VkPhysicalDeviceVulkan11Properties getPhysicalDeviceVulkan11Properties (const InstanceInterface& vk, VkPhysicalDevice physicalDevice)
+{
+       VkPhysicalDeviceVulkan11Properties      vulkan11properties      = initVulkanStructure();
+       VkPhysicalDeviceProperties2                     properties                      = initVulkanStructure(&vulkan11properties);
+
+       vk.getPhysicalDeviceProperties2(physicalDevice, &properties);
+
+       return vulkan11properties;
+}
+
+VkPhysicalDeviceVulkan12Properties getPhysicalDeviceVulkan12Properties (const InstanceInterface& vk, VkPhysicalDevice physicalDevice)
+{
+       VkPhysicalDeviceVulkan12Properties      vulkan12properties      = initVulkanStructure();
+       VkPhysicalDeviceProperties2                     properties                      = initVulkanStructure(&vulkan12properties);
+
+       vk.getPhysicalDeviceProperties2(physicalDevice, &properties);
+
+       return vulkan12properties;
+}
+
 VkPhysicalDeviceProperties getPhysicalDeviceProperties (const InstanceInterface& vk, VkPhysicalDevice physicalDevice)
 {
        VkPhysicalDeviceProperties      properties;
index 27a22d5..c4843cd 100644 (file)
@@ -47,6 +47,9 @@ std::vector<VkPhysicalDeviceGroupProperties>  enumeratePhysicalDeviceGroups                                   (
 std::vector<VkQueueFamilyProperties>                   getPhysicalDeviceQueueFamilyProperties                  (const InstanceInterface& vk, VkPhysicalDevice physicalDevice);
 VkPhysicalDeviceFeatures                                               getPhysicalDeviceFeatures                                               (const InstanceInterface& vk, VkPhysicalDevice physicalDevice);
 VkPhysicalDeviceFeatures2                                              getPhysicalDeviceFeatures2                                              (const InstanceInterface& vk, VkPhysicalDevice physicalDevice);
+VkPhysicalDeviceVulkan12Features                               getPhysicalDeviceVulkan12Features                               (const InstanceInterface& vk, VkPhysicalDevice physicalDevice);
+VkPhysicalDeviceVulkan11Properties                             getPhysicalDeviceVulkan11Properties                             (const InstanceInterface& vk, VkPhysicalDevice physicalDevice);
+VkPhysicalDeviceVulkan12Properties                             getPhysicalDeviceVulkan12Properties                             (const InstanceInterface& vk, VkPhysicalDevice physicalDevice);
 VkPhysicalDeviceProperties                                             getPhysicalDeviceProperties                                             (const InstanceInterface& vk, VkPhysicalDevice physicalDevice);
 VkPhysicalDeviceMemoryProperties                               getPhysicalDeviceMemoryProperties                               (const InstanceInterface& vk, VkPhysicalDevice physicalDevice);
 VkFormatProperties                                                             getPhysicalDeviceFormatProperties                               (const InstanceInterface& vk, VkPhysicalDevice physicalDevice, VkFormat format);
@@ -137,6 +140,58 @@ StructType*                                                                        findStructure                                                   (void* first)
        return reinterpret_cast<StructType*>(findStructureInChain(first, getStructureType<StructType>()));
 }
 
+struct initVulkanStructure
+{
+       initVulkanStructure     (void*  pNext = DE_NULL)        : m_next(pNext) {};
+
+       template<class StructType>
+       operator StructType()
+       {
+               StructType result;
+
+               deMemset(&result, 0x00, sizeof(StructType));
+
+               result.sType    = getStructureType<StructType>();
+               result.pNext    = m_next;
+
+               return result;
+       }
+
+private:
+       void*   m_next;
+};
+
+template<class StructType>
+void addToChainVulkanStructure (void***        chainPNextPtr, StructType&      structType)
+{
+       DE_ASSERT(chainPNextPtr != DE_NULL);
+
+       (**chainPNextPtr) = &structType;
+
+       (*chainPNextPtr) = &structType.pNext;
+}
+
+struct initVulkanStructureConst
+{
+       initVulkanStructureConst        (const void*    pNext = DE_NULL)        : m_next(pNext) {};
+
+       template<class StructType>
+       operator const StructType()
+       {
+               StructType result;
+
+               deMemset(&result, 0x00, sizeof(StructType));
+
+               result.sType    = getStructureType<StructType>();
+               result.pNext    = const_cast<void*>(m_next);
+
+               return result;
+       }
+
+private:
+       const void*     m_next;
+};
+
 namespace ValidateQueryBits
 {
 
@@ -167,6 +222,30 @@ bool validateInitComplete(Context context, void (Interface::*Function)(Context,
        return true;
 }
 
+template <typename Type>
+//!< Return variable initialization validation
+bool validateStructsWithGuard (const QueryMemberTableEntry* queryMemberTableEntry, Type* vec[2], const deUint8 guardValue, const deUint32 guardSize)
+{
+       const QueryMemberTableEntry     *iterator;
+
+       for (iterator = queryMemberTableEntry; iterator->size != 0; iterator++)
+       {
+               if (deMemCmp(((deUint8*)(vec[0]))+iterator->offset, ((deUint8*)(vec[1]))+iterator->offset, iterator->size) != 0)
+                       return false;
+       }
+
+       for (deUint32 vecNdx = 0; vecNdx < 2; ++vecNdx)
+       {
+               for (deUint32 ndx = 0; ndx < guardSize; ndx++)
+               {
+                       if (((deUint8*)(vec[vecNdx]))[ndx + sizeof(Type)] != guardValue)
+                               return false;
+               }
+       }
+
+       return true;
+}
+
 template<typename IterT>
 //! Overwrite a range of objects with an 8-bit pattern.
 inline void fillBits (IterT beg, const IterT end, const deUint8 pattern = 0xdeu)
index 2a508cd..dbe70d5 100644 (file)
@@ -95,14 +95,14 @@ Move<VkSemaphore> createSemaphore (const DeviceInterface&           vk,
 
 Move<VkSemaphore> createSemaphoreType (const DeviceInterface&          vk,
                                                                           VkDevice                                             device,
-                                                                          VkSemaphoreTypeKHR                   type,
+                                                                          VkSemaphoreType                              type,
                                                                           VkSemaphoreCreateFlags               flags,
                                                                           const deUint64                               initialValue,
                                                                           const VkAllocationCallbacks* pAllocator)
 {
-       const VkSemaphoreTypeCreateInfoKHR      createTypeInfo =
+       const VkSemaphoreTypeCreateInfo createTypeInfo =
        {
-               VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR,
+               VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO,
                DE_NULL,
 
                type,
index 8b437c6..a966b20 100644 (file)
@@ -56,7 +56,7 @@ Move<VkSemaphore>             createSemaphore                 (const DeviceInterface&                 vk,
 
 Move<VkSemaphore>              createSemaphoreType             (const DeviceInterface&                 vk,
                                                                                                 VkDevice                                               device,
-                                                                                                VkSemaphoreTypeKHR                             type,
+                                                                                                VkSemaphoreType                                type,
                                                                                                 VkSemaphoreCreateFlags                 flags                   = (VkSemaphoreCreateFlags)0,
                                                                                                 const deUint64                                 initialValue    = 0,
                                                                                                 const VkAllocationCallbacks*   pAllocator              = DE_NULL);
index 78953f5..921adc7 100644 (file)
@@ -23,10 +23,10 @@ Move<VkRenderPass>                                  createRenderPass                                        (const DeviceInterface& vk, VkDevice
 Move<VkCommandPool>                                    createCommandPool                                       (const DeviceInterface& vk, VkDevice device, const VkCommandPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
 Move<VkSamplerYcbcrConversion>         createSamplerYcbcrConversion            (const DeviceInterface& vk, VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
 Move<VkDescriptorUpdateTemplate>       createDescriptorUpdateTemplate          (const DeviceInterface& vk, VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
+Move<VkRenderPass>                                     createRenderPass2                                       (const DeviceInterface& vk, VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
 Move<VkSwapchainKHR>                           createSwapchainKHR                                      (const DeviceInterface& vk, VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
 Move<VkSurfaceKHR>                                     createDisplayPlaneSurfaceKHR            (const InstanceInterface& vk, VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
 Move<VkSwapchainKHR>                           createSharedSwapchainsKHR                       (const DeviceInterface& vk, VkDevice device, deUint32 swapchainCount, const VkSwapchainCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator = DE_NULL);
-Move<VkRenderPass>                                     createRenderPass2KHR                            (const DeviceInterface& vk, VkDevice device, const VkRenderPassCreateInfo2KHR* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
 Move<VkDebugReportCallbackEXT>         createDebugReportCallbackEXT            (const InstanceInterface& vk, VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
 Move<VkIndirectCommandsLayoutNVX>      createIndirectCommandsLayoutNVX         (const DeviceInterface& vk, VkDevice device, const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
 Move<VkObjectTableNVX>                         createObjectTableNVX                            (const DeviceInterface& vk, VkDevice device, const VkObjectTableCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
index dd75368..6eb0c48 100644 (file)
@@ -316,6 +316,13 @@ Move<VkDescriptorUpdateTemplate> createDescriptorUpdateTemplate (const DeviceInt
        return Move<VkDescriptorUpdateTemplate>(check<VkDescriptorUpdateTemplate>(object), Deleter<VkDescriptorUpdateTemplate>(vk, device, pAllocator));
 }
 
+Move<VkRenderPass> createRenderPass2 (const DeviceInterface& vk, VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator)
+{
+       VkRenderPass object = 0;
+       VK_CHECK(vk.createRenderPass2(device, pCreateInfo, pAllocator, &object));
+       return Move<VkRenderPass>(check<VkRenderPass>(object), Deleter<VkRenderPass>(vk, device, pAllocator));
+}
+
 Move<VkSwapchainKHR> createSwapchainKHR (const DeviceInterface& vk, VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator)
 {
        VkSwapchainKHR object = 0;
@@ -337,13 +344,6 @@ Move<VkSwapchainKHR> createSharedSwapchainsKHR (const DeviceInterface& vk, VkDev
        return Move<VkSwapchainKHR>(check<VkSwapchainKHR>(object), Deleter<VkSwapchainKHR>(vk, device, pAllocator));
 }
 
-Move<VkRenderPass> createRenderPass2KHR (const DeviceInterface& vk, VkDevice device, const VkRenderPassCreateInfo2KHR* pCreateInfo, const VkAllocationCallbacks* pAllocator)
-{
-       VkRenderPass object = 0;
-       VK_CHECK(vk.createRenderPass2KHR(device, pCreateInfo, pAllocator, &object));
-       return Move<VkRenderPass>(check<VkRenderPass>(object), Deleter<VkRenderPass>(vk, device, pAllocator));
-}
-
 Move<VkDebugReportCallbackEXT> createDebugReportCallbackEXT (const InstanceInterface& vk, VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator)
 {
        VkDebugReportCallbackEXT object = 0;
index 1fe287a..9916c59 100644 (file)
@@ -296,6 +296,9 @@ bool compileShaderToSpirV (const std::vector<std::string>* sources, const Shader
                        case SPIRV_VERSION_1_4:
                                shader.setEnvTarget(glslang::EshTargetSpv, (glslang::EShTargetLanguageVersion)0x10400);
                                break;
+                       case SPIRV_VERSION_1_5:
+                               shader.setEnvTarget(glslang::EshTargetSpv, (glslang::EShTargetLanguageVersion)0x10500);
+                               break;
                        default:
                                TCU_THROW(InternalError, "Unsupported SPIR-V target version");
                        }
index 4f8d2bb..bdcdc67 100644 (file)
@@ -45,6 +45,7 @@ static spv_target_env getSpirvToolsEnvForValidatorOptions(SpirvValidatorOptions
        {
                case VK_MAKE_VERSION(1, 0, 0): return SPV_ENV_VULKAN_1_0;
                case VK_MAKE_VERSION(1, 1, 0): return allow_1_4 ? SPV_ENV_VULKAN_1_1_SPIRV_1_4 : SPV_ENV_VULKAN_1_1;
+               case VK_MAKE_VERSION(1, 2, 0): return SPV_ENV_VULKAN_1_2;
                default:
                        break;
        }
@@ -63,6 +64,7 @@ static spv_target_env mapTargetSpvEnvironment(SpirvVersion spirvVersion)
                case SPIRV_VERSION_1_2: result = SPV_ENV_UNIVERSAL_1_2; break;  //!< SPIR-V 1.2
                case SPIRV_VERSION_1_3: result = SPV_ENV_UNIVERSAL_1_3; break;  //!< SPIR-V 1.3
                case SPIRV_VERSION_1_4: result = SPV_ENV_UNIVERSAL_1_4; break;  //!< SPIR-V 1.4
+               case SPIRV_VERSION_1_5: result = SPV_ENV_UNIVERSAL_1_5; break;  //!< SPIR-V 1.5
                default:                                TCU_THROW(InternalError, "Unknown SPIR-V version");
        }
 
index 6a9d408..388b90a 100644 (file)
@@ -44,14 +44,15 @@ const char* getSamplerYcbcrModelConversionName                                              (VkSamplerYcbcrModelConversi
 const char*    getSamplerYcbcrRangeName                                                                (VkSamplerYcbcrRange value);
 const char*    getChromaLocationName                                                                   (VkChromaLocation value);
 const char*    getDescriptorUpdateTemplateTypeName                                             (VkDescriptorUpdateTemplateType value);
+const char*    getDriverIdName                                                                                 (VkDriverId value);
+const char*    getShaderFloatControlsIndependenceName                                  (VkShaderFloatControlsIndependence value);
+const char*    getSamplerReductionModeName                                                             (VkSamplerReductionMode value);
+const char*    getSemaphoreTypeName                                                                    (VkSemaphoreType value);
 const char*    getColorSpaceKHRName                                                                    (VkColorSpaceKHR value);
 const char*    getPresentModeKHRName                                                                   (VkPresentModeKHR value);
 const char*    getPerformanceCounterUnitKHRName                                                (VkPerformanceCounterUnitKHR value);
 const char*    getPerformanceCounterScopeKHRName                                               (VkPerformanceCounterScopeKHR value);
 const char*    getPerformanceCounterStorageKHRName                                             (VkPerformanceCounterStorageKHR value);
-const char*    getDriverIdKHRName                                                                              (VkDriverIdKHR value);
-const char*    getShaderFloatControlsIndependenceKHRName                               (VkShaderFloatControlsIndependenceKHR value);
-const char*    getSemaphoreTypeKHRName                                                                 (VkSemaphoreTypeKHR value);
 const char*    getPipelineExecutableStatisticFormatKHRName                             (VkPipelineExecutableStatisticFormatKHR value);
 const char*    getDebugReportObjectTypeEXTName                                                 (VkDebugReportObjectTypeEXT value);
 const char*    getRasterizationOrderAMDName                                                    (VkRasterizationOrderAMD value);
@@ -65,7 +66,6 @@ const char*   getDisplayEventTypeEXTName                                                              (VkDisplayEventTypeEXT value);
 const char*    getViewportCoordinateSwizzleNVName                                              (VkViewportCoordinateSwizzleNV value);
 const char*    getDiscardRectangleModeEXTName                                                  (VkDiscardRectangleModeEXT value);
 const char*    getConservativeRasterizationModeEXTName                                 (VkConservativeRasterizationModeEXT value);
-const char*    getSamplerReductionModeEXTName                                                  (VkSamplerReductionModeEXT value);
 const char*    getBlendOverlapEXTName                                                                  (VkBlendOverlapEXT value);
 const char*    getCoverageModulationModeNVName                                                 (VkCoverageModulationModeNV value);
 const char*    getValidationCacheHeaderVersionEXTName                                  (VkValidationCacheHeaderVersionEXT value);
@@ -135,14 +135,15 @@ inline tcu::Format::Enum<VkSamplerYcbcrModelConversion>                                           getSamplerYcbcrMode
 inline tcu::Format::Enum<VkSamplerYcbcrRange>                                                          getSamplerYcbcrRangeStr                                                         (VkSamplerYcbcrRange value)                                                             { return tcu::Format::Enum<VkSamplerYcbcrRange>(getSamplerYcbcrRangeName, value);                                                                                                                       }
 inline tcu::Format::Enum<VkChromaLocation>                                                                     getChromaLocationStr                                                            (VkChromaLocation value)                                                                { return tcu::Format::Enum<VkChromaLocation>(getChromaLocationName, value);                                                                                                                                     }
 inline tcu::Format::Enum<VkDescriptorUpdateTemplateType>                                       getDescriptorUpdateTemplateTypeStr                                      (VkDescriptorUpdateTemplateType value)                                  { return tcu::Format::Enum<VkDescriptorUpdateTemplateType>(getDescriptorUpdateTemplateTypeName, value);                                                                         }
+inline tcu::Format::Enum<VkDriverId>                                                                           getDriverIdStr                                                                          (VkDriverId value)                                                                              { return tcu::Format::Enum<VkDriverId>(getDriverIdName, value);                                                                                                                                                         }
+inline tcu::Format::Enum<VkShaderFloatControlsIndependence>                                    getShaderFloatControlsIndependenceStr                           (VkShaderFloatControlsIndependence value)                               { return tcu::Format::Enum<VkShaderFloatControlsIndependence>(getShaderFloatControlsIndependenceName, value);                                                           }
+inline tcu::Format::Enum<VkSamplerReductionMode>                                                       getSamplerReductionModeStr                                                      (VkSamplerReductionMode value)                                                  { return tcu::Format::Enum<VkSamplerReductionMode>(getSamplerReductionModeName, value);                                                                                                         }
+inline tcu::Format::Enum<VkSemaphoreType>                                                                      getSemaphoreTypeStr                                                                     (VkSemaphoreType value)                                                                 { return tcu::Format::Enum<VkSemaphoreType>(getSemaphoreTypeName, value);                                                                                                                                       }
 inline tcu::Format::Enum<VkColorSpaceKHR>                                                                      getColorSpaceKHRStr                                                                     (VkColorSpaceKHR value)                                                                 { return tcu::Format::Enum<VkColorSpaceKHR>(getColorSpaceKHRName, value);                                                                                                                                       }
 inline tcu::Format::Enum<VkPresentModeKHR>                                                                     getPresentModeKHRStr                                                            (VkPresentModeKHR value)                                                                { return tcu::Format::Enum<VkPresentModeKHR>(getPresentModeKHRName, value);                                                                                                                                     }
 inline tcu::Format::Enum<VkPerformanceCounterUnitKHR>                                          getPerformanceCounterUnitKHRStr                                         (VkPerformanceCounterUnitKHR value)                                             { return tcu::Format::Enum<VkPerformanceCounterUnitKHR>(getPerformanceCounterUnitKHRName, value);                                                                                       }
 inline tcu::Format::Enum<VkPerformanceCounterScopeKHR>                                         getPerformanceCounterScopeKHRStr                                        (VkPerformanceCounterScopeKHR value)                                    { return tcu::Format::Enum<VkPerformanceCounterScopeKHR>(getPerformanceCounterScopeKHRName, value);                                                                                     }
 inline tcu::Format::Enum<VkPerformanceCounterStorageKHR>                                       getPerformanceCounterStorageKHRStr                                      (VkPerformanceCounterStorageKHR value)                                  { return tcu::Format::Enum<VkPerformanceCounterStorageKHR>(getPerformanceCounterStorageKHRName, value);                                                                         }
-inline tcu::Format::Enum<VkDriverIdKHR>                                                                                getDriverIdKHRStr                                                                       (VkDriverIdKHR value)                                                                   { return tcu::Format::Enum<VkDriverIdKHR>(getDriverIdKHRName, value);                                                                                                                                           }
-inline tcu::Format::Enum<VkShaderFloatControlsIndependenceKHR>                         getShaderFloatControlsIndependenceKHRStr                        (VkShaderFloatControlsIndependenceKHR value)                    { return tcu::Format::Enum<VkShaderFloatControlsIndependenceKHR>(getShaderFloatControlsIndependenceKHRName, value);                                                     }
-inline tcu::Format::Enum<VkSemaphoreTypeKHR>                                                           getSemaphoreTypeKHRStr                                                          (VkSemaphoreTypeKHR value)                                                              { return tcu::Format::Enum<VkSemaphoreTypeKHR>(getSemaphoreTypeKHRName, value);                                                                                                                         }
 inline tcu::Format::Enum<VkPipelineExecutableStatisticFormatKHR>                       getPipelineExecutableStatisticFormatKHRStr                      (VkPipelineExecutableStatisticFormatKHR value)                  { return tcu::Format::Enum<VkPipelineExecutableStatisticFormatKHR>(getPipelineExecutableStatisticFormatKHRName, value);                                         }
 inline tcu::Format::Enum<VkDebugReportObjectTypeEXT>                                           getDebugReportObjectTypeEXTStr                                          (VkDebugReportObjectTypeEXT value)                                              { return tcu::Format::Enum<VkDebugReportObjectTypeEXT>(getDebugReportObjectTypeEXTName, value);                                                                                         }
 inline tcu::Format::Enum<VkRasterizationOrderAMD>                                                      getRasterizationOrderAMDStr                                                     (VkRasterizationOrderAMD value)                                                 { return tcu::Format::Enum<VkRasterizationOrderAMD>(getRasterizationOrderAMDName, value);                                                                                                       }
@@ -156,7 +157,6 @@ inline tcu::Format::Enum<VkDisplayEventTypeEXT>                                                             getDisplayEventTypeEXTStr
 inline tcu::Format::Enum<VkViewportCoordinateSwizzleNV>                                                getViewportCoordinateSwizzleNVStr                                       (VkViewportCoordinateSwizzleNV value)                                   { return tcu::Format::Enum<VkViewportCoordinateSwizzleNV>(getViewportCoordinateSwizzleNVName, value);                                                                           }
 inline tcu::Format::Enum<VkDiscardRectangleModeEXT>                                                    getDiscardRectangleModeEXTStr                                           (VkDiscardRectangleModeEXT value)                                               { return tcu::Format::Enum<VkDiscardRectangleModeEXT>(getDiscardRectangleModeEXTName, value);                                                                                           }
 inline tcu::Format::Enum<VkConservativeRasterizationModeEXT>                           getConservativeRasterizationModeEXTStr                          (VkConservativeRasterizationModeEXT value)                              { return tcu::Format::Enum<VkConservativeRasterizationModeEXT>(getConservativeRasterizationModeEXTName, value);                                                         }
-inline tcu::Format::Enum<VkSamplerReductionModeEXT>                                                    getSamplerReductionModeEXTStr                                           (VkSamplerReductionModeEXT value)                                               { return tcu::Format::Enum<VkSamplerReductionModeEXT>(getSamplerReductionModeEXTName, value);                                                                                           }
 inline tcu::Format::Enum<VkBlendOverlapEXT>                                                                    getBlendOverlapEXTStr                                                           (VkBlendOverlapEXT value)                                                               { return tcu::Format::Enum<VkBlendOverlapEXT>(getBlendOverlapEXTName, value);                                                                                                                           }
 inline tcu::Format::Enum<VkCoverageModulationModeNV>                                           getCoverageModulationModeNVStr                                          (VkCoverageModulationModeNV value)                                              { return tcu::Format::Enum<VkCoverageModulationModeNV>(getCoverageModulationModeNVName, value);                                                                                         }
 inline tcu::Format::Enum<VkValidationCacheHeaderVersionEXT>                                    getValidationCacheHeaderVersionEXTStr                           (VkValidationCacheHeaderVersionEXT value)                               { return tcu::Format::Enum<VkValidationCacheHeaderVersionEXT>(getValidationCacheHeaderVersionEXTName, value);                                                           }
@@ -226,14 +226,15 @@ inline std::ostream&      operator<<      (std::ostream& s, VkSamplerYcbcrModelConversion
 inline std::ostream&   operator<<      (std::ostream& s, VkSamplerYcbcrRange value)                                                            { return s << getSamplerYcbcrRangeStr(value);                                                           }
 inline std::ostream&   operator<<      (std::ostream& s, VkChromaLocation value)                                                                       { return s << getChromaLocationStr(value);                                                                      }
 inline std::ostream&   operator<<      (std::ostream& s, VkDescriptorUpdateTemplateType value)                                         { return s << getDescriptorUpdateTemplateTypeStr(value);                                        }
+inline std::ostream&   operator<<      (std::ostream& s, VkDriverId value)                                                                                     { return s << getDriverIdStr(value);                                                                            }
+inline std::ostream&   operator<<      (std::ostream& s, VkShaderFloatControlsIndependence value)                                      { return s << getShaderFloatControlsIndependenceStr(value);                                     }
+inline std::ostream&   operator<<      (std::ostream& s, VkSamplerReductionMode value)                                                         { return s << getSamplerReductionModeStr(value);                                                        }
+inline std::ostream&   operator<<      (std::ostream& s, VkSemaphoreType value)                                                                        { return s << getSemaphoreTypeStr(value);                                                                       }
 inline std::ostream&   operator<<      (std::ostream& s, VkColorSpaceKHR value)                                                                        { return s << getColorSpaceKHRStr(value);                                                                       }
 inline std::ostream&   operator<<      (std::ostream& s, VkPresentModeKHR value)                                                                       { return s << getPresentModeKHRStr(value);                                                                      }
 inline std::ostream&   operator<<      (std::ostream& s, VkPerformanceCounterUnitKHR value)                                            { return s << getPerformanceCounterUnitKHRStr(value);                                           }
 inline std::ostream&   operator<<      (std::ostream& s, VkPerformanceCounterScopeKHR value)                                           { return s << getPerformanceCounterScopeKHRStr(value);                                          }
 inline std::ostream&   operator<<      (std::ostream& s, VkPerformanceCounterStorageKHR value)                                         { return s << getPerformanceCounterStorageKHRStr(value);                                        }
-inline std::ostream&   operator<<      (std::ostream& s, VkDriverIdKHR value)                                                                          { return s << getDriverIdKHRStr(value);                                                                         }
-inline std::ostream&   operator<<      (std::ostream& s, VkShaderFloatControlsIndependenceKHR value)                           { return s << getShaderFloatControlsIndependenceKHRStr(value);                          }
-inline std::ostream&   operator<<      (std::ostream& s, VkSemaphoreTypeKHR value)                                                                     { return s << getSemaphoreTypeKHRStr(value);                                                            }
 inline std::ostream&   operator<<      (std::ostream& s, VkPipelineExecutableStatisticFormatKHR value)                         { return s << getPipelineExecutableStatisticFormatKHRStr(value);                        }
 inline std::ostream&   operator<<      (std::ostream& s, VkDebugReportObjectTypeEXT value)                                                     { return s << getDebugReportObjectTypeEXTStr(value);                                            }
 inline std::ostream&   operator<<      (std::ostream& s, VkRasterizationOrderAMD value)                                                        { return s << getRasterizationOrderAMDStr(value);                                                       }
@@ -247,7 +248,6 @@ inline std::ostream&        operator<<      (std::ostream& s, VkDisplayEventTypeEXT value)
 inline std::ostream&   operator<<      (std::ostream& s, VkViewportCoordinateSwizzleNV value)                                          { return s << getViewportCoordinateSwizzleNVStr(value);                                         }
 inline std::ostream&   operator<<      (std::ostream& s, VkDiscardRectangleModeEXT value)                                                      { return s << getDiscardRectangleModeEXTStr(value);                                                     }
 inline std::ostream&   operator<<      (std::ostream& s, VkConservativeRasterizationModeEXT value)                                     { return s << getConservativeRasterizationModeEXTStr(value);                            }
-inline std::ostream&   operator<<      (std::ostream& s, VkSamplerReductionModeEXT value)                                                      { return s << getSamplerReductionModeEXTStr(value);                                                     }
 inline std::ostream&   operator<<      (std::ostream& s, VkBlendOverlapEXT value)                                                                      { return s << getBlendOverlapEXTStr(value);                                                                     }
 inline std::ostream&   operator<<      (std::ostream& s, VkCoverageModulationModeNV value)                                                     { return s << getCoverageModulationModeNVStr(value);                                            }
 inline std::ostream&   operator<<      (std::ostream& s, VkValidationCacheHeaderVersionEXT value)                                      { return s << getValidationCacheHeaderVersionEXTStr(value);                                     }
@@ -324,6 +324,9 @@ tcu::Format::Bitfield<32>   getFenceImportFlagsStr                                                                          (VkFenceImportFlags va
 tcu::Format::Bitfield<32>      getSemaphoreImportFlagsStr                                                                      (VkSemaphoreImportFlags value);
 tcu::Format::Bitfield<32>      getExternalSemaphoreHandleTypeFlagsStr                                          (VkExternalSemaphoreHandleTypeFlags value);
 tcu::Format::Bitfield<32>      getExternalSemaphoreFeatureFlagsStr                                                     (VkExternalSemaphoreFeatureFlags value);
+tcu::Format::Bitfield<32>      getResolveModeFlagsStr                                                                          (VkResolveModeFlags value);
+tcu::Format::Bitfield<32>      getDescriptorBindingFlagsStr                                                            (VkDescriptorBindingFlags value);
+tcu::Format::Bitfield<32>      getSemaphoreWaitFlagsStr                                                                        (VkSemaphoreWaitFlags value);
 tcu::Format::Bitfield<32>      getSurfaceTransformFlagsKHRStr                                                          (VkSurfaceTransformFlagsKHR value);
 tcu::Format::Bitfield<32>      getCompositeAlphaFlagsKHRStr                                                            (VkCompositeAlphaFlagsKHR value);
 tcu::Format::Bitfield<32>      getSwapchainCreateFlagsKHRStr                                                           (VkSwapchainCreateFlagsKHR value);
@@ -331,8 +334,6 @@ tcu::Format::Bitfield<32>   getDeviceGroupPresentModeFlagsKHRStr                                            (VkDeviceGro
 tcu::Format::Bitfield<32>      getDisplayPlaneAlphaFlagsKHRStr                                                         (VkDisplayPlaneAlphaFlagsKHR value);
 tcu::Format::Bitfield<32>      getPerformanceCounterDescriptionFlagsKHRStr                                     (VkPerformanceCounterDescriptionFlagsKHR value);
 tcu::Format::Bitfield<32>      getAcquireProfilingLockFlagsKHRStr                                                      (VkAcquireProfilingLockFlagsKHR value);
-tcu::Format::Bitfield<32>      getResolveModeFlagsKHRStr                                                                       (VkResolveModeFlagsKHR value);
-tcu::Format::Bitfield<32>      getSemaphoreWaitFlagsKHRStr                                                                     (VkSemaphoreWaitFlagsKHR value);
 tcu::Format::Bitfield<32>      getDebugReportFlagsEXTStr                                                                       (VkDebugReportFlagsEXT value);
 tcu::Format::Bitfield<32>      getExternalMemoryHandleTypeFlagsNVStr                                           (VkExternalMemoryHandleTypeFlagsNV value);
 tcu::Format::Bitfield<32>      getExternalMemoryFeatureFlagsNVStr                                                      (VkExternalMemoryFeatureFlagsNV value);
@@ -342,7 +343,6 @@ tcu::Format::Bitfield<32>   getObjectEntryUsageFlagsNVXStr                                                          (VkObjectEntryUs
 tcu::Format::Bitfield<32>      getSurfaceCounterFlagsEXTStr                                                            (VkSurfaceCounterFlagsEXT value);
 tcu::Format::Bitfield<32>      getDebugUtilsMessageSeverityFlagsEXTStr                                         (VkDebugUtilsMessageSeverityFlagsEXT value);
 tcu::Format::Bitfield<32>      getDebugUtilsMessageTypeFlagsEXTStr                                                     (VkDebugUtilsMessageTypeFlagsEXT value);
-tcu::Format::Bitfield<32>      getDescriptorBindingFlagsEXTStr                                                         (VkDescriptorBindingFlagsEXT value);
 tcu::Format::Bitfield<32>      getGeometryFlagsNVStr                                                                           (VkGeometryFlagsNV value);
 tcu::Format::Bitfield<32>      getGeometryInstanceFlagsNVStr                                                           (VkGeometryInstanceFlagsNV value);
 tcu::Format::Bitfield<32>      getBuildAccelerationStructureFlagsNVStr                                         (VkBuildAccelerationStructureFlagsNV value);
@@ -573,6 +573,57 @@ std::ostream&      operator<<      (std::ostream& s, const VkExternalSemaphoreProperties&
 std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceMaintenance3Properties& value);
 std::ostream&  operator<<      (std::ostream& s, const VkDescriptorSetLayoutSupport& value);
 std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceShaderDrawParametersFeatures& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceVulkan11Features& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceVulkan11Properties& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceVulkan12Features& value);
+std::ostream&  operator<<      (std::ostream& s, const VkConformanceVersion& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceVulkan12Properties& value);
+std::ostream&  operator<<      (std::ostream& s, const VkImageFormatListCreateInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const VkAttachmentDescription2& value);
+std::ostream&  operator<<      (std::ostream& s, const VkAttachmentReference2& value);
+std::ostream&  operator<<      (std::ostream& s, const VkSubpassDescription2& value);
+std::ostream&  operator<<      (std::ostream& s, const VkSubpassDependency2& value);
+std::ostream&  operator<<      (std::ostream& s, const VkRenderPassCreateInfo2& value);
+std::ostream&  operator<<      (std::ostream& s, const VkSubpassBeginInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const VkSubpassEndInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDevice8BitStorageFeatures& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceDriverProperties& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceShaderAtomicInt64Features& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceShaderFloat16Int8Features& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceFloatControlsProperties& value);
+std::ostream&  operator<<      (std::ostream& s, const VkDescriptorSetLayoutBindingFlagsCreateInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceDescriptorIndexingFeatures& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceDescriptorIndexingProperties& value);
+std::ostream&  operator<<      (std::ostream& s, const VkDescriptorSetVariableDescriptorCountAllocateInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const VkDescriptorSetVariableDescriptorCountLayoutSupport& value);
+std::ostream&  operator<<      (std::ostream& s, const VkSubpassDescriptionDepthStencilResolve& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceDepthStencilResolveProperties& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceScalarBlockLayoutFeatures& value);
+std::ostream&  operator<<      (std::ostream& s, const VkImageStencilUsageCreateInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const VkSamplerReductionModeCreateInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceSamplerFilterMinmaxProperties& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceVulkanMemoryModelFeatures& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceImagelessFramebufferFeatures& value);
+std::ostream&  operator<<      (std::ostream& s, const VkFramebufferAttachmentImageInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const VkFramebufferAttachmentsCreateInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const VkRenderPassAttachmentBeginInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceUniformBufferStandardLayoutFeatures& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures& value);
+std::ostream&  operator<<      (std::ostream& s, const VkAttachmentReferenceStencilLayout& value);
+std::ostream&  operator<<      (std::ostream& s, const VkAttachmentDescriptionStencilLayout& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceHostQueryResetFeatures& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceTimelineSemaphoreFeatures& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceTimelineSemaphoreProperties& value);
+std::ostream&  operator<<      (std::ostream& s, const VkSemaphoreTypeCreateInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const VkTimelineSemaphoreSubmitInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const VkSemaphoreWaitInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const VkSemaphoreSignalInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceBufferDeviceAddressFeatures& value);
+std::ostream&  operator<<      (std::ostream& s, const VkBufferDeviceAddressInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const VkBufferOpaqueCaptureAddressCreateInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const VkMemoryOpaqueCaptureAddressAllocateInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const VkDeviceMemoryOpaqueCaptureAddressInfo& value);
 std::ostream&  operator<<      (std::ostream& s, const VkSurfaceCapabilitiesKHR& value);
 std::ostream&  operator<<      (std::ostream& s, const VkSurfaceFormatKHR& value);
 std::ostream&  operator<<      (std::ostream& s, const VkSwapchainCreateInfoKHR& value);
@@ -597,21 +648,9 @@ std::ostream&      operator<<      (std::ostream& s, const VkMemoryGetFdInfoKHR& value);
 std::ostream&  operator<<      (std::ostream& s, const VkImportSemaphoreFdInfoKHR& value);
 std::ostream&  operator<<      (std::ostream& s, const VkSemaphoreGetFdInfoKHR& value);
 std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDevicePushDescriptorPropertiesKHR& value);
-std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceShaderFloat16Int8FeaturesKHR& value);
 std::ostream&  operator<<      (std::ostream& s, const VkRectLayerKHR& value);
 std::ostream&  operator<<      (std::ostream& s, const VkPresentRegionKHR& value);
 std::ostream&  operator<<      (std::ostream& s, const VkPresentRegionsKHR& value);
-std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceImagelessFramebufferFeaturesKHR& value);
-std::ostream&  operator<<      (std::ostream& s, const VkFramebufferAttachmentImageInfoKHR& value);
-std::ostream&  operator<<      (std::ostream& s, const VkFramebufferAttachmentsCreateInfoKHR& value);
-std::ostream&  operator<<      (std::ostream& s, const VkRenderPassAttachmentBeginInfoKHR& value);
-std::ostream&  operator<<      (std::ostream& s, const VkAttachmentDescription2KHR& value);
-std::ostream&  operator<<      (std::ostream& s, const VkAttachmentReference2KHR& value);
-std::ostream&  operator<<      (std::ostream& s, const VkSubpassDescription2KHR& value);
-std::ostream&  operator<<      (std::ostream& s, const VkSubpassDependency2KHR& value);
-std::ostream&  operator<<      (std::ostream& s, const VkRenderPassCreateInfo2KHR& value);
-std::ostream&  operator<<      (std::ostream& s, const VkSubpassBeginInfoKHR& value);
-std::ostream&  operator<<      (std::ostream& s, const VkSubpassEndInfoKHR& value);
 std::ostream&  operator<<      (std::ostream& s, const VkSharedPresentSurfaceCapabilitiesKHR& value);
 std::ostream&  operator<<      (std::ostream& s, const VkImportFenceFdInfoKHR& value);
 std::ostream&  operator<<      (std::ostream& s, const VkFenceGetFdInfoKHR& value);
@@ -631,28 +670,8 @@ std::ostream&      operator<<      (std::ostream& s, const VkDisplayPlaneProperties2KHR& v
 std::ostream&  operator<<      (std::ostream& s, const VkDisplayModeProperties2KHR& value);
 std::ostream&  operator<<      (std::ostream& s, const VkDisplayPlaneInfo2KHR& value);
 std::ostream&  operator<<      (std::ostream& s, const VkDisplayPlaneCapabilities2KHR& value);
-std::ostream&  operator<<      (std::ostream& s, const VkImageFormatListCreateInfoKHR& value);
-std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR& value);
-std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDevice8BitStorageFeaturesKHR& value);
-std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR& value);
 std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceShaderClockFeaturesKHR& value);
-std::ostream&  operator<<      (std::ostream& s, const VkConformanceVersionKHR& value);
-std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceDriverPropertiesKHR& value);
-std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceFloatControlsPropertiesKHR& value);
-std::ostream&  operator<<      (std::ostream& s, const VkSubpassDescriptionDepthStencilResolveKHR& value);
-std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceDepthStencilResolvePropertiesKHR& value);
-std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceTimelineSemaphoreFeaturesKHR& value);
-std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceTimelineSemaphorePropertiesKHR& value);
-std::ostream&  operator<<      (std::ostream& s, const VkSemaphoreTypeCreateInfoKHR& value);
-std::ostream&  operator<<      (std::ostream& s, const VkTimelineSemaphoreSubmitInfoKHR& value);
-std::ostream&  operator<<      (std::ostream& s, const VkSemaphoreWaitInfoKHR& value);
-std::ostream&  operator<<      (std::ostream& s, const VkSemaphoreSignalInfoKHR& value);
-std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR& value);
 std::ostream&  operator<<      (std::ostream& s, const VkSurfaceProtectedCapabilitiesKHR& value);
-std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR& value);
-std::ostream&  operator<<      (std::ostream& s, const VkAttachmentReferenceStencilLayoutKHR& value);
-std::ostream&  operator<<      (std::ostream& s, const VkAttachmentDescriptionStencilLayoutKHR& value);
-std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR& value);
 std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR& value);
 std::ostream&  operator<<      (std::ostream& s, const VkPipelineInfoKHR& value);
 std::ostream&  operator<<      (std::ostream& s, const VkPipelineExecutablePropertiesKHR& value);
@@ -727,8 +746,6 @@ std::ostream&       operator<<      (std::ostream& s, const VkDebugUtilsObjectTagInfoEXT& v
 std::ostream&  operator<<      (std::ostream& s, const VkDebugUtilsLabelEXT& value);
 std::ostream&  operator<<      (std::ostream& s, const VkDebugUtilsMessengerCallbackDataEXT& value);
 std::ostream&  operator<<      (std::ostream& s, const VkDebugUtilsMessengerCreateInfoEXT& value);
-std::ostream&  operator<<      (std::ostream& s, const VkSamplerReductionModeCreateInfoEXT& value);
-std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT& value);
 std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceInlineUniformBlockFeaturesEXT& value);
 std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceInlineUniformBlockPropertiesEXT& value);
 std::ostream&  operator<<      (std::ostream& s, const VkWriteDescriptorSetInlineUniformBlockEXT& value);
@@ -756,11 +773,6 @@ std::ostream&      operator<<      (std::ostream& s, const VkImageDrmFormatModifierExplici
 std::ostream&  operator<<      (std::ostream& s, const VkImageDrmFormatModifierPropertiesEXT& value);
 std::ostream&  operator<<      (std::ostream& s, const VkValidationCacheCreateInfoEXT& value);
 std::ostream&  operator<<      (std::ostream& s, const VkShaderModuleValidationCacheCreateInfoEXT& value);
-std::ostream&  operator<<      (std::ostream& s, const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT& value);
-std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceDescriptorIndexingFeaturesEXT& value);
-std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceDescriptorIndexingPropertiesEXT& value);
-std::ostream&  operator<<      (std::ostream& s, const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT& value);
-std::ostream&  operator<<      (std::ostream& s, const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT& value);
 std::ostream&  operator<<      (std::ostream& s, const VkShadingRatePaletteNV& value);
 std::ostream&  operator<<      (std::ostream& s, const VkPipelineViewportShadingRateImageStateCreateInfoNV& value);
 std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceShadingRateImageFeaturesNV& value);
@@ -823,7 +835,6 @@ std::ostream&       operator<<      (std::ostream& s, const VkSwapchainDisplayNativeHdrCrea
 std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceFragmentDensityMapFeaturesEXT& value);
 std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceFragmentDensityMapPropertiesEXT& value);
 std::ostream&  operator<<      (std::ostream& s, const VkRenderPassFragmentDensityMapCreateInfoEXT& value);
-std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT& value);
 std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceSubgroupSizeControlFeaturesEXT& value);
 std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceSubgroupSizeControlPropertiesEXT& value);
 std::ostream&  operator<<      (std::ostream& s, const VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT& value);
@@ -834,9 +845,7 @@ std::ostream&       operator<<      (std::ostream& s, const VkPhysicalDeviceMemoryPriorityF
 std::ostream&  operator<<      (std::ostream& s, const VkMemoryPriorityAllocateInfoEXT& value);
 std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV& value);
 std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceBufferDeviceAddressFeaturesEXT& value);
-std::ostream&  operator<<      (std::ostream& s, const VkBufferDeviceAddressInfoEXT& value);
 std::ostream&  operator<<      (std::ostream& s, const VkBufferDeviceAddressCreateInfoEXT& value);
-std::ostream&  operator<<      (std::ostream& s, const VkImageStencilUsageCreateInfoEXT& value);
 std::ostream&  operator<<      (std::ostream& s, const VkValidationFeaturesEXT& value);
 std::ostream&  operator<<      (std::ostream& s, const VkCooperativeMatrixPropertiesNV& value);
 std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceCooperativeMatrixFeaturesNV& value);
@@ -850,7 +859,6 @@ std::ostream&       operator<<      (std::ostream& s, const VkHeadlessSurfaceCreateInfoEXT&
 std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceLineRasterizationFeaturesEXT& value);
 std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceLineRasterizationPropertiesEXT& value);
 std::ostream&  operator<<      (std::ostream& s, const VkPipelineRasterizationLineStateCreateInfoEXT& value);
-std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceHostQueryResetFeaturesEXT& value);
 std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceIndexTypeUint8FeaturesEXT& value);
 std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT& value);
 std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT& value);
index 26d6293..91f733d 100644 (file)
@@ -101,6 +101,8 @@ const char* getResultName (VkResult value)
                case VK_ERROR_FRAGMENTED_POOL:                                                          return "VK_ERROR_FRAGMENTED_POOL";
                case VK_ERROR_OUT_OF_POOL_MEMORY:                                                       return "VK_ERROR_OUT_OF_POOL_MEMORY";
                case VK_ERROR_INVALID_EXTERNAL_HANDLE:                                          return "VK_ERROR_INVALID_EXTERNAL_HANDLE";
+               case VK_ERROR_FRAGMENTATION:                                                            return "VK_ERROR_FRAGMENTATION";
+               case VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS:                           return "VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS";
                case VK_ERROR_SURFACE_LOST_KHR:                                                         return "VK_ERROR_SURFACE_LOST_KHR";
                case VK_ERROR_NATIVE_WINDOW_IN_USE_KHR:                                         return "VK_ERROR_NATIVE_WINDOW_IN_USE_KHR";
                case VK_SUBOPTIMAL_KHR:                                                                         return "VK_SUBOPTIMAL_KHR";
@@ -109,9 +111,7 @@ const char* getResultName (VkResult value)
                case VK_ERROR_VALIDATION_FAILED_EXT:                                            return "VK_ERROR_VALIDATION_FAILED_EXT";
                case VK_ERROR_INVALID_SHADER_NV:                                                        return "VK_ERROR_INVALID_SHADER_NV";
                case VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT:     return "VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT";
-               case VK_ERROR_FRAGMENTATION_EXT:                                                        return "VK_ERROR_FRAGMENTATION_EXT";
                case VK_ERROR_NOT_PERMITTED_EXT:                                                        return "VK_ERROR_NOT_PERMITTED_EXT";
-               case VK_ERROR_INVALID_DEVICE_ADDRESS_EXT:                                       return "VK_ERROR_INVALID_DEVICE_ADDRESS_EXT";
                case VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT:                      return "VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT";
                case VK_RESULT_MAX_ENUM:                                                                        return "VK_RESULT_MAX_ENUM";
                default:                                                                                                        return DE_NULL;
@@ -236,6 +236,56 @@ const char* getStructureTypeName (VkStructureType value)
                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES:                                                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES";
                case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT:                                                                   return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT";
                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES:                                 return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES:                                                             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES:                                                   return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES:                                                             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES:                                                   return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES";
+               case VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO:                                                                   return "VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO";
+               case VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2:                                                                                return "VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2";
+               case VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2:                                                                                  return "VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2";
+               case VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2:                                                                                   return "VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2";
+               case VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2:                                                                                    return "VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2";
+               case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2:                                                                               return "VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2";
+               case VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO:                                                                                              return "VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO";
+               case VK_STRUCTURE_TYPE_SUBPASS_END_INFO:                                                                                                return "VK_STRUCTURE_TYPE_SUBPASS_END_INFO";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES:                                                   return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES:                                                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES:                                    return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES:                                    return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES:                                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES";
+               case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO:                                 return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES:                                    return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES:                                  return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES";
+               case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO:                  return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO";
+               case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT:                 return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES:                                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES";
+               case VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE:                                               return "VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES:                                    return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES";
+               case VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO:                                                                 return "VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES:                                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES";
+               case VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO:                                                              return "VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES:                                    return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES:                                  return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES";
+               case VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO:                                                             return "VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO";
+               case VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO:                                                               return "VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO";
+               case VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO:                                                               return "VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES:                 return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES:                 return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES:                 return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES";
+               case VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT:                                                             return "VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT";
+               case VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT:                                                   return "VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES:                                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES:                                             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES:                                   return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES";
+               case VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO:                                                                              return "VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO";
+               case VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO:                                                                  return "VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO";
+               case VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO:                                                                                             return "VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO";
+               case VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO:                                                                                   return "VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES:                                  return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES";
+               case VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO:                                                                              return "VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO";
+               case VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO:                                               return "VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO";
+               case VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO:                                             return "VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO";
+               case VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO:                                               return "VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO";
                case VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR:                                                                               return "VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR";
                case VK_STRUCTURE_TYPE_PRESENT_INFO_KHR:                                                                                                return "VK_STRUCTURE_TYPE_PRESENT_INFO_KHR";
                case VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR:                                                   return "VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR";
@@ -295,7 +345,6 @@ const char* getStructureTypeName (VkStructureType value)
                case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT:               return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT";
                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT:                              return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT";
                case VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT:                                                    return "VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT";
-               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR:                                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR";
                case VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR:                                                                                             return "VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR";
                case VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX:                                                                    return "VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX";
                case VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX:                                                return "VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX";
@@ -319,17 +368,6 @@ const char* getStructureTypeName (VkStructureType value)
                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT:                                  return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT";
                case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT:                 return "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT";
                case VK_STRUCTURE_TYPE_HDR_METADATA_EXT:                                                                                                return "VK_STRUCTURE_TYPE_HDR_METADATA_EXT";
-               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR:                              return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR";
-               case VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR:                                                 return "VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR";
-               case VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR:                                                   return "VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR";
-               case VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR:                                                   return "VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR";
-               case VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR:                                                                    return "VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR";
-               case VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR:                                                                              return "VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR";
-               case VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR:                                                                               return "VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR";
-               case VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR:                                                                                return "VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR";
-               case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR:                                                                   return "VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR";
-               case VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR:                                                                                  return "VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR";
-               case VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR:                                                                                    return "VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR";
                case VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR:                                                 return "VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR";
                case VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR:                                                              return "VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR";
                case VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR:                                                              return "VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR";
@@ -364,8 +402,6 @@ const char* getStructureTypeName (VkStructureType value)
                case VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID:                                             return "VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID";
                case VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID:                                 return "VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID";
                case VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID:                                                                                 return "VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID";
-               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT:                    return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT";
-               case VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT:                                                  return "VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT";
                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT:                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT";
                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT:                             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT";
                case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT:                                   return "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT";
@@ -375,7 +411,6 @@ const char* getStructureTypeName (VkStructureType value)
                case VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT:                                 return "VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT";
                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT:                                 return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT";
                case VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT:                                                                              return "VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT";
-               case VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR:                                                               return "VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR";
                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT:                   return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT";
                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT:                 return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT";
                case VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT:                             return "VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT";
@@ -391,11 +426,6 @@ const char* getStructureTypeName (VkStructureType value)
                case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT:                                                return "VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT";
                case VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT:                                                                return "VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT";
                case VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT:                                  return "VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT";
-               case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT:                             return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT";
-               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT:                                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT";
-               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT:                              return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT";
-               case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT:              return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT";
-               case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT:             return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT";
                case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV:               return "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV";
                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV:                                  return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV";
                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV:                                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV";
@@ -416,12 +446,9 @@ const char* getStructureTypeName (VkStructureType value)
                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT:                                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT";
                case VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT:                             return "VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT";
                case VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT:                                    return "VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT";
-               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR:             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR";
-               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR:                                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR";
                case VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT:                                                             return "VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT";
                case VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT:                                                              return "VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT";
                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT:                             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT";
-               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR:                                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR";
                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR:                                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR";
                case VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD:                                               return "VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD";
                case VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT:                                                                   return "VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT";
@@ -432,10 +459,6 @@ const char* getStructureTypeName (VkStructureType value)
                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT:                   return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT";
                case VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP:                                                                                 return "VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP";
                case VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT:                                              return "VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT";
-               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR:                                                   return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR";
-               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR:                                   return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR";
-               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR:                    return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR";
-               case VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR:                                   return "VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR";
                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV:                  return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV";
                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV:                                                 return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV";
                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV:                                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV";
@@ -445,12 +468,6 @@ const char* getStructureTypeName (VkStructureType value)
                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV:                                   return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV";
                case VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV:                                                                                              return "VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV";
                case VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV:                                                   return "VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV";
-               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR:                                 return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR";
-               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR:                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR";
-               case VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR:                                                                  return "VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR";
-               case VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR:                                                              return "VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR";
-               case VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR:                                                                                 return "VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR";
-               case VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR:                                                                               return "VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR";
                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL:               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL";
                case VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL:                                                                    return "VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL";
                case VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL:                                                   return "VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL";
@@ -458,7 +475,6 @@ const char* getStructureTypeName (VkStructureType value)
                case VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL:                                                    return "VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL";
                case VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL:                                                                 return "VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL";
                case VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL:                                    return "VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL";
-               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR:                                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR";
                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT:                                             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT";
                case VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD:                                             return "VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD";
                case VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD:                                    return "VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD";
@@ -467,7 +483,6 @@ const char* getStructureTypeName (VkStructureType value)
                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT:                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT";
                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT:                             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT";
                case VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT:                                return "VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT";
-               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT:                                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT";
                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT:                    return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT";
                case VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT:    return "VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT";
                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT:                              return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT";
@@ -478,13 +493,8 @@ const char* getStructureTypeName (VkStructureType value)
                case VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT:                                                               return "VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT";
                case VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR:                                                              return "VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR";
                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV";
-               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR:             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR";
-               case VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR:                                                 return "VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR";
-               case VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR:                                               return "VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR";
                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT:                              return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT";
-               case VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT:                                                                  return "VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT";
                case VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT:                                                   return "VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT";
-               case VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT:                                                             return "VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT";
                case VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT:                                                                                 return "VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT";
                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV:                                  return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV";
                case VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV:                                                                return "VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV";
@@ -494,7 +504,6 @@ const char* getStructureTypeName (VkStructureType value)
                case VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV:                                                return "VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV";
                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT:                  return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT";
                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT:                                 return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT";
-               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR:             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR";
                case VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT:                                                  return "VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT";
                case VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT:                                  return "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT";
                case VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT:                                    return "VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT";
@@ -502,7 +511,6 @@ const char* getStructureTypeName (VkStructureType value)
                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT:                                 return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT";
                case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT:                               return "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT";
                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT:                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT";
-               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT:                                   return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT";
                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT:                                   return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT";
                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR:             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR";
                case VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR:                                                                                               return "VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR";
@@ -872,14 +880,14 @@ const char* getImageLayoutName (VkImageLayout value)
                case VK_IMAGE_LAYOUT_PREINITIALIZED:                                                            return "VK_IMAGE_LAYOUT_PREINITIALIZED";
                case VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL:        return "VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL";
                case VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL:        return "VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL";
+               case VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL:                                          return "VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL";
+               case VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL:                                           return "VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL";
+               case VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL:                                        return "VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL";
+               case VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL:                                         return "VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL";
                case VK_IMAGE_LAYOUT_PRESENT_SRC_KHR:                                                           return "VK_IMAGE_LAYOUT_PRESENT_SRC_KHR";
                case VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR:                                                        return "VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR";
                case VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV:                                           return "VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV";
                case VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT:                          return "VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT";
-               case VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR:                                      return "VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR";
-               case VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR:                                       return "VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR";
-               case VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR:                            return "VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR";
-               case VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR:                                     return "VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR";
                case VK_IMAGE_LAYOUT_MAX_ENUM:                                                                          return "VK_IMAGE_LAYOUT_MAX_ENUM";
                default:                                                                                                                        return DE_NULL;
        }
@@ -1417,6 +1425,62 @@ const char* getDescriptorUpdateTemplateTypeName (VkDescriptorUpdateTemplateType
        }
 }
 
+const char* getDriverIdName (VkDriverId value)
+{
+       switch (value)
+       {
+               case VK_DRIVER_ID_AMD_PROPRIETARY:                              return "VK_DRIVER_ID_AMD_PROPRIETARY";
+               case VK_DRIVER_ID_AMD_OPEN_SOURCE:                              return "VK_DRIVER_ID_AMD_OPEN_SOURCE";
+               case VK_DRIVER_ID_MESA_RADV:                                    return "VK_DRIVER_ID_MESA_RADV";
+               case VK_DRIVER_ID_NVIDIA_PROPRIETARY:                   return "VK_DRIVER_ID_NVIDIA_PROPRIETARY";
+               case VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS:    return "VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS";
+               case VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA:               return "VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA";
+               case VK_DRIVER_ID_IMAGINATION_PROPRIETARY:              return "VK_DRIVER_ID_IMAGINATION_PROPRIETARY";
+               case VK_DRIVER_ID_QUALCOMM_PROPRIETARY:                 return "VK_DRIVER_ID_QUALCOMM_PROPRIETARY";
+               case VK_DRIVER_ID_ARM_PROPRIETARY:                              return "VK_DRIVER_ID_ARM_PROPRIETARY";
+               case VK_DRIVER_ID_GOOGLE_SWIFTSHADER:                   return "VK_DRIVER_ID_GOOGLE_SWIFTSHADER";
+               case VK_DRIVER_ID_GGP_PROPRIETARY:                              return "VK_DRIVER_ID_GGP_PROPRIETARY";
+               case VK_DRIVER_ID_BROADCOM_PROPRIETARY:                 return "VK_DRIVER_ID_BROADCOM_PROPRIETARY";
+               case VK_DRIVER_ID_MAX_ENUM:                                             return "VK_DRIVER_ID_MAX_ENUM";
+               default:                                                                                return DE_NULL;
+       }
+}
+
+const char* getShaderFloatControlsIndependenceName (VkShaderFloatControlsIndependence value)
+{
+       switch (value)
+       {
+               case VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY: return "VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY";
+               case VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL:                 return "VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL";
+               case VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE:                return "VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE";
+               case VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM:    return "VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM";
+               default:                                                                                                return DE_NULL;
+       }
+}
+
+const char* getSamplerReductionModeName (VkSamplerReductionMode value)
+{
+       switch (value)
+       {
+               case VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE:        return "VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE";
+               case VK_SAMPLER_REDUCTION_MODE_MIN:                                     return "VK_SAMPLER_REDUCTION_MODE_MIN";
+               case VK_SAMPLER_REDUCTION_MODE_MAX:                                     return "VK_SAMPLER_REDUCTION_MODE_MAX";
+               case VK_SAMPLER_REDUCTION_MODE_MAX_ENUM:                        return "VK_SAMPLER_REDUCTION_MODE_MAX_ENUM";
+               default:                                                                                        return DE_NULL;
+       }
+}
+
+const char* getSemaphoreTypeName (VkSemaphoreType value)
+{
+       switch (value)
+       {
+               case VK_SEMAPHORE_TYPE_BINARY:          return "VK_SEMAPHORE_TYPE_BINARY";
+               case VK_SEMAPHORE_TYPE_TIMELINE:        return "VK_SEMAPHORE_TYPE_TIMELINE";
+               case VK_SEMAPHORE_TYPE_MAX_ENUM:        return "VK_SEMAPHORE_TYPE_MAX_ENUM";
+               default:                                                        return DE_NULL;
+       }
+}
+
 const char* getColorSpaceKHRName (VkColorSpaceKHR value)
 {
        switch (value)
@@ -1504,50 +1568,6 @@ const char* getPerformanceCounterStorageKHRName (VkPerformanceCounterStorageKHR
        }
 }
 
-const char* getDriverIdKHRName (VkDriverIdKHR value)
-{
-       switch (value)
-       {
-               case VK_DRIVER_ID_AMD_PROPRIETARY_KHR:                          return "VK_DRIVER_ID_AMD_PROPRIETARY_KHR";
-               case VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR:                          return "VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR";
-               case VK_DRIVER_ID_MESA_RADV_KHR:                                        return "VK_DRIVER_ID_MESA_RADV_KHR";
-               case VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR:                       return "VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR";
-               case VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR:        return "VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR";
-               case VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR:           return "VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR";
-               case VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR:          return "VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR";
-               case VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR:                     return "VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR";
-               case VK_DRIVER_ID_ARM_PROPRIETARY_KHR:                          return "VK_DRIVER_ID_ARM_PROPRIETARY_KHR";
-               case VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR:                       return "VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR";
-               case VK_DRIVER_ID_GGP_PROPRIETARY_KHR:                          return "VK_DRIVER_ID_GGP_PROPRIETARY_KHR";
-               case VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR:                     return "VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR";
-               case VK_DRIVER_ID_MAX_ENUM_KHR:                                         return "VK_DRIVER_ID_MAX_ENUM_KHR";
-               default:                                                                                        return DE_NULL;
-       }
-}
-
-const char* getShaderFloatControlsIndependenceKHRName (VkShaderFloatControlsIndependenceKHR value)
-{
-       switch (value)
-       {
-               case VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR:     return "VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR";
-               case VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR:                     return "VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR";
-               case VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR:            return "VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR";
-               case VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM_KHR:        return "VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM_KHR";
-               default:                                                                                                        return DE_NULL;
-       }
-}
-
-const char* getSemaphoreTypeKHRName (VkSemaphoreTypeKHR value)
-{
-       switch (value)
-       {
-               case VK_SEMAPHORE_TYPE_BINARY_KHR:              return "VK_SEMAPHORE_TYPE_BINARY_KHR";
-               case VK_SEMAPHORE_TYPE_TIMELINE_KHR:    return "VK_SEMAPHORE_TYPE_TIMELINE_KHR";
-               case VK_SEMAPHORE_TYPE_MAX_ENUM_KHR:    return "VK_SEMAPHORE_TYPE_MAX_ENUM_KHR";
-               default:                                                                return DE_NULL;
-       }
-}
-
 const char* getPipelineExecutableStatisticFormatKHRName (VkPipelineExecutableStatisticFormatKHR value)
 {
        switch (value)
@@ -1744,18 +1764,6 @@ const char* getConservativeRasterizationModeEXTName (VkConservativeRasterization
        }
 }
 
-const char* getSamplerReductionModeEXTName (VkSamplerReductionModeEXT value)
-{
-       switch (value)
-       {
-               case VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT:    return "VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT";
-               case VK_SAMPLER_REDUCTION_MODE_MIN_EXT:                                 return "VK_SAMPLER_REDUCTION_MODE_MIN_EXT";
-               case VK_SAMPLER_REDUCTION_MODE_MAX_EXT:                                 return "VK_SAMPLER_REDUCTION_MODE_MAX_EXT";
-               case VK_SAMPLER_REDUCTION_MODE_MAX_ENUM_EXT:                    return "VK_SAMPLER_REDUCTION_MODE_MAX_ENUM_EXT";
-               default:                                                                                                return DE_NULL;
-       }
-}
-
 const char* getBlendOverlapEXTName (VkBlendOverlapEXT value)
 {
        switch (value)
@@ -2100,11 +2108,12 @@ tcu::Format::Bitfield<32> getFormatFeatureFlagsStr (VkFormatFeatureFlags value)
                tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT,             "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT"),
                tcu::Format::BitDesc(VK_FORMAT_FEATURE_DISJOINT_BIT,                                                                                                                                    "VK_FORMAT_FEATURE_DISJOINT_BIT"),
                tcu::Format::BitDesc(VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT,                                                                                                              "VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT"),
+               tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT,                                                                                                 "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT"),
                tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG,                                                                                              "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG"),
-               tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT,                                                                                             "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT"),
                tcu::Format::BitDesc(VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT,                                                                                                    "VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT"),
                tcu::Format::BitDesc(VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR,                                                                                                                    "VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR"),
                tcu::Format::BitDesc(VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR,                                                                                                                    "VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR"),
+               tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT,                                                                                             "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT"),
                tcu::Format::BitDesc(VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR,                                                                                                 "VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR"),
                tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR,                                                    "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR"),
                tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR,                   "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR"),
@@ -2367,7 +2376,9 @@ tcu::Format::Bitfield<32> getBufferCreateFlagsStr (VkBufferCreateFlags value)
                tcu::Format::BitDesc(VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT,                                             "VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT"),
                tcu::Format::BitDesc(VK_BUFFER_CREATE_SPARSE_ALIASED_BIT,                                               "VK_BUFFER_CREATE_SPARSE_ALIASED_BIT"),
                tcu::Format::BitDesc(VK_BUFFER_CREATE_PROTECTED_BIT,                                                    "VK_BUFFER_CREATE_PROTECTED_BIT"),
+               tcu::Format::BitDesc(VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT,                "VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT"),
                tcu::Format::BitDesc(VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT,    "VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT"),
+               tcu::Format::BitDesc(VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR,    "VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR"),
                tcu::Format::BitDesc(VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM,                                               "VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM"),
        };
        return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
@@ -2386,11 +2397,13 @@ tcu::Format::Bitfield<32> getBufferUsageFlagsStr (VkBufferUsageFlags value)
                tcu::Format::BitDesc(VK_BUFFER_USAGE_INDEX_BUFFER_BIT,                                                  "VK_BUFFER_USAGE_INDEX_BUFFER_BIT"),
                tcu::Format::BitDesc(VK_BUFFER_USAGE_VERTEX_BUFFER_BIT,                                                 "VK_BUFFER_USAGE_VERTEX_BUFFER_BIT"),
                tcu::Format::BitDesc(VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT,                                               "VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT"),
+               tcu::Format::BitDesc(VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT,                                 "VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT"),
                tcu::Format::BitDesc(VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT,                 "VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT"),
                tcu::Format::BitDesc(VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT, "VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT"),
                tcu::Format::BitDesc(VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT,                             "VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT"),
                tcu::Format::BitDesc(VK_BUFFER_USAGE_RAY_TRACING_BIT_NV,                                                "VK_BUFFER_USAGE_RAY_TRACING_BIT_NV"),
                tcu::Format::BitDesc(VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT,                             "VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT"),
+               tcu::Format::BitDesc(VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR,                             "VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR"),
                tcu::Format::BitDesc(VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM,                                                "VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM"),
        };
        return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
@@ -2511,6 +2524,7 @@ tcu::Format::Bitfield<32> getDescriptorSetLayoutCreateFlagsStr (VkDescriptorSetL
 {
        static const tcu::Format::BitDesc s_desc[] =
        {
+               tcu::Format::BitDesc(VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT,                "VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT"),
                tcu::Format::BitDesc(VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR,                   "VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR"),
                tcu::Format::BitDesc(VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT,    "VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT"),
                tcu::Format::BitDesc(VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM,                                "VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM"),
@@ -2523,6 +2537,7 @@ tcu::Format::Bitfield<32> getDescriptorPoolCreateFlagsStr (VkDescriptorPoolCreat
        static const tcu::Format::BitDesc s_desc[] =
        {
                tcu::Format::BitDesc(VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT,         "VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT"),
+               tcu::Format::BitDesc(VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT,           "VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT"),
                tcu::Format::BitDesc(VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT,       "VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT"),
                tcu::Format::BitDesc(VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM,                      "VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM"),
        };
@@ -2533,6 +2548,7 @@ tcu::Format::Bitfield<32> getFramebufferCreateFlagsStr (VkFramebufferCreateFlags
 {
        static const tcu::Format::BitDesc s_desc[] =
        {
+               tcu::Format::BitDesc(VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT,               "VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT"),
                tcu::Format::BitDesc(VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR,   "VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR"),
                tcu::Format::BitDesc(VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM,  "VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM"),
        };
@@ -2726,9 +2742,13 @@ tcu::Format::Bitfield<32> getMemoryAllocateFlagsStr (VkMemoryAllocateFlags value
 {
        static const tcu::Format::BitDesc s_desc[] =
        {
-               tcu::Format::BitDesc(VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT,                "VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT"),
-               tcu::Format::BitDesc(VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR,    "VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR"),
-               tcu::Format::BitDesc(VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM,             "VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM"),
+               tcu::Format::BitDesc(VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT,                                                "VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT"),
+               tcu::Format::BitDesc(VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT,                                             "VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT"),
+               tcu::Format::BitDesc(VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT,              "VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT"),
+               tcu::Format::BitDesc(VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR,                                    "VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR"),
+               tcu::Format::BitDesc(VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR,                                 "VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR"),
+               tcu::Format::BitDesc(VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR,  "VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR"),
+               tcu::Format::BitDesc(VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM,                                             "VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM"),
        };
        return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 }
@@ -2859,6 +2879,53 @@ tcu::Format::Bitfield<32> getExternalSemaphoreFeatureFlagsStr (VkExternalSemapho
        return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 }
 
+tcu::Format::Bitfield<32> getResolveModeFlagsStr (VkResolveModeFlags value)
+{
+       static const tcu::Format::BitDesc s_desc[] =
+       {
+               tcu::Format::BitDesc(VK_RESOLVE_MODE_NONE,                                      "VK_RESOLVE_MODE_NONE"),
+               tcu::Format::BitDesc(VK_RESOLVE_MODE_SAMPLE_ZERO_BIT,           "VK_RESOLVE_MODE_SAMPLE_ZERO_BIT"),
+               tcu::Format::BitDesc(VK_RESOLVE_MODE_AVERAGE_BIT,                       "VK_RESOLVE_MODE_AVERAGE_BIT"),
+               tcu::Format::BitDesc(VK_RESOLVE_MODE_MIN_BIT,                           "VK_RESOLVE_MODE_MIN_BIT"),
+               tcu::Format::BitDesc(VK_RESOLVE_MODE_MAX_BIT,                           "VK_RESOLVE_MODE_MAX_BIT"),
+               tcu::Format::BitDesc(VK_RESOLVE_MODE_NONE_KHR,                          "VK_RESOLVE_MODE_NONE_KHR"),
+               tcu::Format::BitDesc(VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR,       "VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR"),
+               tcu::Format::BitDesc(VK_RESOLVE_MODE_AVERAGE_BIT_KHR,           "VK_RESOLVE_MODE_AVERAGE_BIT_KHR"),
+               tcu::Format::BitDesc(VK_RESOLVE_MODE_MIN_BIT_KHR,                       "VK_RESOLVE_MODE_MIN_BIT_KHR"),
+               tcu::Format::BitDesc(VK_RESOLVE_MODE_MAX_BIT_KHR,                       "VK_RESOLVE_MODE_MAX_BIT_KHR"),
+               tcu::Format::BitDesc(VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM,        "VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM"),
+       };
+       return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
+}
+
+tcu::Format::Bitfield<32> getDescriptorBindingFlagsStr (VkDescriptorBindingFlags value)
+{
+       static const tcu::Format::BitDesc s_desc[] =
+       {
+               tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT,                               "VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT"),
+               tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT,             "VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT"),
+               tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT,                                 "VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT"),
+               tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT,               "VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT"),
+               tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT,                   "VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT"),
+               tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT, "VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT"),
+               tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT,                             "VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT"),
+               tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT,   "VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT"),
+               tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM,                                  "VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM"),
+       };
+       return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
+}
+
+tcu::Format::Bitfield<32> getSemaphoreWaitFlagsStr (VkSemaphoreWaitFlags value)
+{
+       static const tcu::Format::BitDesc s_desc[] =
+       {
+               tcu::Format::BitDesc(VK_SEMAPHORE_WAIT_ANY_BIT,                         "VK_SEMAPHORE_WAIT_ANY_BIT"),
+               tcu::Format::BitDesc(VK_SEMAPHORE_WAIT_ANY_BIT_KHR,                     "VK_SEMAPHORE_WAIT_ANY_BIT_KHR"),
+               tcu::Format::BitDesc(VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM,      "VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM"),
+       };
+       return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
+}
+
 tcu::Format::Bitfield<32> getSurfaceTransformFlagsKHRStr (VkSurfaceTransformFlagsKHR value)
 {
        static const tcu::Format::BitDesc s_desc[] =
@@ -2948,30 +3015,6 @@ tcu::Format::Bitfield<32> getAcquireProfilingLockFlagsKHRStr (VkAcquireProfiling
        return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 }
 
-tcu::Format::Bitfield<32> getResolveModeFlagsKHRStr (VkResolveModeFlagsKHR value)
-{
-       static const tcu::Format::BitDesc s_desc[] =
-       {
-               tcu::Format::BitDesc(VK_RESOLVE_MODE_NONE_KHR,                                  "VK_RESOLVE_MODE_NONE_KHR"),
-               tcu::Format::BitDesc(VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR,               "VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR"),
-               tcu::Format::BitDesc(VK_RESOLVE_MODE_AVERAGE_BIT_KHR,                   "VK_RESOLVE_MODE_AVERAGE_BIT_KHR"),
-               tcu::Format::BitDesc(VK_RESOLVE_MODE_MIN_BIT_KHR,                               "VK_RESOLVE_MODE_MIN_BIT_KHR"),
-               tcu::Format::BitDesc(VK_RESOLVE_MODE_MAX_BIT_KHR,                               "VK_RESOLVE_MODE_MAX_BIT_KHR"),
-               tcu::Format::BitDesc(VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM_KHR,    "VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM_KHR"),
-       };
-       return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
-}
-
-tcu::Format::Bitfield<32> getSemaphoreWaitFlagsKHRStr (VkSemaphoreWaitFlagsKHR value)
-{
-       static const tcu::Format::BitDesc s_desc[] =
-       {
-               tcu::Format::BitDesc(VK_SEMAPHORE_WAIT_ANY_BIT_KHR,                             "VK_SEMAPHORE_WAIT_ANY_BIT_KHR"),
-               tcu::Format::BitDesc(VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM_KHR,  "VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM_KHR"),
-       };
-       return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
-}
-
 tcu::Format::Bitfield<32> getDebugReportFlagsEXTStr (VkDebugReportFlagsEXT value)
 {
        static const tcu::Format::BitDesc s_desc[] =
@@ -3080,19 +3123,6 @@ tcu::Format::Bitfield<32> getDebugUtilsMessageTypeFlagsEXTStr (VkDebugUtilsMessa
        return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 }
 
-tcu::Format::Bitfield<32> getDescriptorBindingFlagsEXTStr (VkDescriptorBindingFlagsEXT value)
-{
-       static const tcu::Format::BitDesc s_desc[] =
-       {
-               tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT,                   "VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT"),
-               tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT, "VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT"),
-               tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT,                             "VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT"),
-               tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT,   "VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT"),
-               tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM_EXT,                              "VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM_EXT"),
-       };
-       return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
-}
-
 tcu::Format::Bitfield<32> getGeometryFlagsNVStr (VkGeometryFlagsNV value)
 {
        static const tcu::Format::BitDesc s_desc[] =
@@ -5668,961 +5698,1319 @@ std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderDrawParam
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkSurfaceCapabilitiesKHR& value)
-{
-       s << "VkSurfaceCapabilitiesKHR = {\n";
-       s << "\tminImageCount = " << value.minImageCount << '\n';
-       s << "\tmaxImageCount = " << value.maxImageCount << '\n';
-       s << "\tcurrentExtent = " << value.currentExtent << '\n';
-       s << "\tminImageExtent = " << value.minImageExtent << '\n';
-       s << "\tmaxImageExtent = " << value.maxImageExtent << '\n';
-       s << "\tmaxImageArrayLayers = " << value.maxImageArrayLayers << '\n';
-       s << "\tsupportedTransforms = " << getSurfaceTransformFlagsKHRStr(value.supportedTransforms) << '\n';
-       s << "\tcurrentTransform = " << value.currentTransform << '\n';
-       s << "\tsupportedCompositeAlpha = " << getCompositeAlphaFlagsKHRStr(value.supportedCompositeAlpha) << '\n';
-       s << "\tsupportedUsageFlags = " << getImageUsageFlagsStr(value.supportedUsageFlags) << '\n';
-       s << '}';
-       return s;
-}
-
-std::ostream& operator<< (std::ostream& s, const VkSurfaceFormatKHR& value)
-{
-       s << "VkSurfaceFormatKHR = {\n";
-       s << "\tformat = " << value.format << '\n';
-       s << "\tcolorSpace = " << value.colorSpace << '\n';
-       s << '}';
-       return s;
-}
-
-std::ostream& operator<< (std::ostream& s, const VkSwapchainCreateInfoKHR& value)
-{
-       s << "VkSwapchainCreateInfoKHR = {\n";
-       s << "\tsType = " << value.sType << '\n';
-       s << "\tpNext = " << value.pNext << '\n';
-       s << "\tflags = " << getSwapchainCreateFlagsKHRStr(value.flags) << '\n';
-       s << "\tsurface = " << value.surface << '\n';
-       s << "\tminImageCount = " << value.minImageCount << '\n';
-       s << "\timageFormat = " << value.imageFormat << '\n';
-       s << "\timageColorSpace = " << value.imageColorSpace << '\n';
-       s << "\timageExtent = " << value.imageExtent << '\n';
-       s << "\timageArrayLayers = " << value.imageArrayLayers << '\n';
-       s << "\timageUsage = " << getImageUsageFlagsStr(value.imageUsage) << '\n';
-       s << "\timageSharingMode = " << value.imageSharingMode << '\n';
-       s << "\tqueueFamilyIndexCount = " << value.queueFamilyIndexCount << '\n';
-       s << "\tpQueueFamilyIndices = " << value.pQueueFamilyIndices << '\n';
-       s << "\tpreTransform = " << value.preTransform << '\n';
-       s << "\tcompositeAlpha = " << value.compositeAlpha << '\n';
-       s << "\tpresentMode = " << value.presentMode << '\n';
-       s << "\tclipped = " << value.clipped << '\n';
-       s << "\toldSwapchain = " << value.oldSwapchain << '\n';
-       s << '}';
-       return s;
-}
-
-std::ostream& operator<< (std::ostream& s, const VkPresentInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVulkan11Features& value)
 {
-       s << "VkPresentInfoKHR = {\n";
+       s << "VkPhysicalDeviceVulkan11Features = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\twaitSemaphoreCount = " << value.waitSemaphoreCount << '\n';
-       s << "\tpWaitSemaphores = " << value.pWaitSemaphores << '\n';
-       s << "\tswapchainCount = " << value.swapchainCount << '\n';
-       s << "\tpSwapchains = " << value.pSwapchains << '\n';
-       s << "\tpImageIndices = " << value.pImageIndices << '\n';
-       s << "\tpResults = " << value.pResults << '\n';
+       s << "\tstorageBuffer16BitAccess = " << value.storageBuffer16BitAccess << '\n';
+       s << "\tuniformAndStorageBuffer16BitAccess = " << value.uniformAndStorageBuffer16BitAccess << '\n';
+       s << "\tstoragePushConstant16 = " << value.storagePushConstant16 << '\n';
+       s << "\tstorageInputOutput16 = " << value.storageInputOutput16 << '\n';
+       s << "\tmultiview = " << value.multiview << '\n';
+       s << "\tmultiviewGeometryShader = " << value.multiviewGeometryShader << '\n';
+       s << "\tmultiviewTessellationShader = " << value.multiviewTessellationShader << '\n';
+       s << "\tvariablePointersStorageBuffer = " << value.variablePointersStorageBuffer << '\n';
+       s << "\tvariablePointers = " << value.variablePointers << '\n';
+       s << "\tprotectedMemory = " << value.protectedMemory << '\n';
+       s << "\tsamplerYcbcrConversion = " << value.samplerYcbcrConversion << '\n';
+       s << "\tshaderDrawParameters = " << value.shaderDrawParameters << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkImageSwapchainCreateInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVulkan11Properties& value)
 {
-       s << "VkImageSwapchainCreateInfoKHR = {\n";
+       s << "VkPhysicalDeviceVulkan11Properties = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tswapchain = " << value.swapchain << '\n';
+       s << "\tdeviceUUID = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<deUint8>(DE_ARRAY_BEGIN(value.deviceUUID)), tcu::Format::HexIterator<deUint8>(DE_ARRAY_END(value.deviceUUID))) << '\n';
+       s << "\tdriverUUID = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<deUint8>(DE_ARRAY_BEGIN(value.driverUUID)), tcu::Format::HexIterator<deUint8>(DE_ARRAY_END(value.driverUUID))) << '\n';
+       s << "\tdeviceLUID = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<deUint8>(DE_ARRAY_BEGIN(value.deviceLUID)), tcu::Format::HexIterator<deUint8>(DE_ARRAY_END(value.deviceLUID))) << '\n';
+       s << "\tdeviceNodeMask = " << value.deviceNodeMask << '\n';
+       s << "\tdeviceLUIDValid = " << value.deviceLUIDValid << '\n';
+       s << "\tsubgroupSize = " << value.subgroupSize << '\n';
+       s << "\tsubgroupSupportedStages = " << getShaderStageFlagsStr(value.subgroupSupportedStages) << '\n';
+       s << "\tsubgroupSupportedOperations = " << getSubgroupFeatureFlagsStr(value.subgroupSupportedOperations) << '\n';
+       s << "\tsubgroupQuadOperationsInAllStages = " << value.subgroupQuadOperationsInAllStages << '\n';
+       s << "\tpointClippingBehavior = " << value.pointClippingBehavior << '\n';
+       s << "\tmaxMultiviewViewCount = " << value.maxMultiviewViewCount << '\n';
+       s << "\tmaxMultiviewInstanceIndex = " << value.maxMultiviewInstanceIndex << '\n';
+       s << "\tprotectedNoFault = " << value.protectedNoFault << '\n';
+       s << "\tmaxPerSetDescriptors = " << value.maxPerSetDescriptors << '\n';
+       s << "\tmaxMemoryAllocationSize = " << value.maxMemoryAllocationSize << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkBindImageMemorySwapchainInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVulkan12Features& value)
 {
-       s << "VkBindImageMemorySwapchainInfoKHR = {\n";
+       s << "VkPhysicalDeviceVulkan12Features = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tswapchain = " << value.swapchain << '\n';
-       s << "\timageIndex = " << value.imageIndex << '\n';
+       s << "\tsamplerMirrorClampToEdge = " << value.samplerMirrorClampToEdge << '\n';
+       s << "\tdrawIndirectCount = " << value.drawIndirectCount << '\n';
+       s << "\tstorageBuffer8BitAccess = " << value.storageBuffer8BitAccess << '\n';
+       s << "\tuniformAndStorageBuffer8BitAccess = " << value.uniformAndStorageBuffer8BitAccess << '\n';
+       s << "\tstoragePushConstant8 = " << value.storagePushConstant8 << '\n';
+       s << "\tshaderBufferInt64Atomics = " << value.shaderBufferInt64Atomics << '\n';
+       s << "\tshaderSharedInt64Atomics = " << value.shaderSharedInt64Atomics << '\n';
+       s << "\tshaderFloat16 = " << value.shaderFloat16 << '\n';
+       s << "\tshaderInt8 = " << value.shaderInt8 << '\n';
+       s << "\tdescriptorIndexing = " << value.descriptorIndexing << '\n';
+       s << "\tshaderInputAttachmentArrayDynamicIndexing = " << value.shaderInputAttachmentArrayDynamicIndexing << '\n';
+       s << "\tshaderUniformTexelBufferArrayDynamicIndexing = " << value.shaderUniformTexelBufferArrayDynamicIndexing << '\n';
+       s << "\tshaderStorageTexelBufferArrayDynamicIndexing = " << value.shaderStorageTexelBufferArrayDynamicIndexing << '\n';
+       s << "\tshaderUniformBufferArrayNonUniformIndexing = " << value.shaderUniformBufferArrayNonUniformIndexing << '\n';
+       s << "\tshaderSampledImageArrayNonUniformIndexing = " << value.shaderSampledImageArrayNonUniformIndexing << '\n';
+       s << "\tshaderStorageBufferArrayNonUniformIndexing = " << value.shaderStorageBufferArrayNonUniformIndexing << '\n';
+       s << "\tshaderStorageImageArrayNonUniformIndexing = " << value.shaderStorageImageArrayNonUniformIndexing << '\n';
+       s << "\tshaderInputAttachmentArrayNonUniformIndexing = " << value.shaderInputAttachmentArrayNonUniformIndexing << '\n';
+       s << "\tshaderUniformTexelBufferArrayNonUniformIndexing = " << value.shaderUniformTexelBufferArrayNonUniformIndexing << '\n';
+       s << "\tshaderStorageTexelBufferArrayNonUniformIndexing = " << value.shaderStorageTexelBufferArrayNonUniformIndexing << '\n';
+       s << "\tdescriptorBindingUniformBufferUpdateAfterBind = " << value.descriptorBindingUniformBufferUpdateAfterBind << '\n';
+       s << "\tdescriptorBindingSampledImageUpdateAfterBind = " << value.descriptorBindingSampledImageUpdateAfterBind << '\n';
+       s << "\tdescriptorBindingStorageImageUpdateAfterBind = " << value.descriptorBindingStorageImageUpdateAfterBind << '\n';
+       s << "\tdescriptorBindingStorageBufferUpdateAfterBind = " << value.descriptorBindingStorageBufferUpdateAfterBind << '\n';
+       s << "\tdescriptorBindingUniformTexelBufferUpdateAfterBind = " << value.descriptorBindingUniformTexelBufferUpdateAfterBind << '\n';
+       s << "\tdescriptorBindingStorageTexelBufferUpdateAfterBind = " << value.descriptorBindingStorageTexelBufferUpdateAfterBind << '\n';
+       s << "\tdescriptorBindingUpdateUnusedWhilePending = " << value.descriptorBindingUpdateUnusedWhilePending << '\n';
+       s << "\tdescriptorBindingPartiallyBound = " << value.descriptorBindingPartiallyBound << '\n';
+       s << "\tdescriptorBindingVariableDescriptorCount = " << value.descriptorBindingVariableDescriptorCount << '\n';
+       s << "\truntimeDescriptorArray = " << value.runtimeDescriptorArray << '\n';
+       s << "\tsamplerFilterMinmax = " << value.samplerFilterMinmax << '\n';
+       s << "\tscalarBlockLayout = " << value.scalarBlockLayout << '\n';
+       s << "\timagelessFramebuffer = " << value.imagelessFramebuffer << '\n';
+       s << "\tuniformBufferStandardLayout = " << value.uniformBufferStandardLayout << '\n';
+       s << "\tshaderSubgroupExtendedTypes = " << value.shaderSubgroupExtendedTypes << '\n';
+       s << "\tseparateDepthStencilLayouts = " << value.separateDepthStencilLayouts << '\n';
+       s << "\thostQueryReset = " << value.hostQueryReset << '\n';
+       s << "\ttimelineSemaphore = " << value.timelineSemaphore << '\n';
+       s << "\tbufferDeviceAddress = " << value.bufferDeviceAddress << '\n';
+       s << "\tbufferDeviceAddressCaptureReplay = " << value.bufferDeviceAddressCaptureReplay << '\n';
+       s << "\tbufferDeviceAddressMultiDevice = " << value.bufferDeviceAddressMultiDevice << '\n';
+       s << "\tvulkanMemoryModel = " << value.vulkanMemoryModel << '\n';
+       s << "\tvulkanMemoryModelDeviceScope = " << value.vulkanMemoryModelDeviceScope << '\n';
+       s << "\tvulkanMemoryModelAvailabilityVisibilityChains = " << value.vulkanMemoryModelAvailabilityVisibilityChains << '\n';
+       s << "\tshaderOutputViewportIndex = " << value.shaderOutputViewportIndex << '\n';
+       s << "\tshaderOutputLayer = " << value.shaderOutputLayer << '\n';
+       s << "\tsubgroupBroadcastDynamicId = " << value.subgroupBroadcastDynamicId << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkAcquireNextImageInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkConformanceVersion& value)
 {
-       s << "VkAcquireNextImageInfoKHR = {\n";
-       s << "\tsType = " << value.sType << '\n';
-       s << "\tpNext = " << value.pNext << '\n';
-       s << "\tswapchain = " << value.swapchain << '\n';
-       s << "\ttimeout = " << value.timeout << '\n';
-       s << "\tsemaphore = " << value.semaphore << '\n';
-       s << "\tfence = " << value.fence << '\n';
-       s << "\tdeviceMask = " << value.deviceMask << '\n';
+       s << "VkConformanceVersion = {\n";
+       s << "\tmajor = " << value.major << '\n';
+       s << "\tminor = " << value.minor << '\n';
+       s << "\tsubminor = " << value.subminor << '\n';
+       s << "\tpatch = " << value.patch << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkDeviceGroupPresentCapabilitiesKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVulkan12Properties& value)
 {
-       s << "VkDeviceGroupPresentCapabilitiesKHR = {\n";
+       s << "VkPhysicalDeviceVulkan12Properties = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tpresentMask = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.presentMask), DE_ARRAY_END(value.presentMask)) << '\n';
-       s << "\tmodes = " << getDeviceGroupPresentModeFlagsKHRStr(value.modes) << '\n';
-       s << '}';
+       s << "\tdriverID = " << value.driverID << '\n';
+       s << "\tdriverName = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.driverName)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.driverName))) << '\n';
+       s << "\tdriverInfo = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.driverInfo)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.driverInfo))) << '\n';
+       s << "\tconformanceVersion = " << value.conformanceVersion << '\n';
+       s << "\tdenormBehaviorIndependence = " << value.denormBehaviorIndependence << '\n';
+       s << "\troundingModeIndependence = " << value.roundingModeIndependence << '\n';
+       s << "\tshaderSignedZeroInfNanPreserveFloat16 = " << value.shaderSignedZeroInfNanPreserveFloat16 << '\n';
+       s << "\tshaderSignedZeroInfNanPreserveFloat32 = " << value.shaderSignedZeroInfNanPreserveFloat32 << '\n';
+       s << "\tshaderSignedZeroInfNanPreserveFloat64 = " << value.shaderSignedZeroInfNanPreserveFloat64 << '\n';
+       s << "\tshaderDenormPreserveFloat16 = " << value.shaderDenormPreserveFloat16 << '\n';
+       s << "\tshaderDenormPreserveFloat32 = " << value.shaderDenormPreserveFloat32 << '\n';
+       s << "\tshaderDenormPreserveFloat64 = " << value.shaderDenormPreserveFloat64 << '\n';
+       s << "\tshaderDenormFlushToZeroFloat16 = " << value.shaderDenormFlushToZeroFloat16 << '\n';
+       s << "\tshaderDenormFlushToZeroFloat32 = " << value.shaderDenormFlushToZeroFloat32 << '\n';
+       s << "\tshaderDenormFlushToZeroFloat64 = " << value.shaderDenormFlushToZeroFloat64 << '\n';
+       s << "\tshaderRoundingModeRTEFloat16 = " << value.shaderRoundingModeRTEFloat16 << '\n';
+       s << "\tshaderRoundingModeRTEFloat32 = " << value.shaderRoundingModeRTEFloat32 << '\n';
+       s << "\tshaderRoundingModeRTEFloat64 = " << value.shaderRoundingModeRTEFloat64 << '\n';
+       s << "\tshaderRoundingModeRTZFloat16 = " << value.shaderRoundingModeRTZFloat16 << '\n';
+       s << "\tshaderRoundingModeRTZFloat32 = " << value.shaderRoundingModeRTZFloat32 << '\n';
+       s << "\tshaderRoundingModeRTZFloat64 = " << value.shaderRoundingModeRTZFloat64 << '\n';
+       s << "\tmaxUpdateAfterBindDescriptorsInAllPools = " << value.maxUpdateAfterBindDescriptorsInAllPools << '\n';
+       s << "\tshaderUniformBufferArrayNonUniformIndexingNative = " << value.shaderUniformBufferArrayNonUniformIndexingNative << '\n';
+       s << "\tshaderSampledImageArrayNonUniformIndexingNative = " << value.shaderSampledImageArrayNonUniformIndexingNative << '\n';
+       s << "\tshaderStorageBufferArrayNonUniformIndexingNative = " << value.shaderStorageBufferArrayNonUniformIndexingNative << '\n';
+       s << "\tshaderStorageImageArrayNonUniformIndexingNative = " << value.shaderStorageImageArrayNonUniformIndexingNative << '\n';
+       s << "\tshaderInputAttachmentArrayNonUniformIndexingNative = " << value.shaderInputAttachmentArrayNonUniformIndexingNative << '\n';
+       s << "\trobustBufferAccessUpdateAfterBind = " << value.robustBufferAccessUpdateAfterBind << '\n';
+       s << "\tquadDivergentImplicitLod = " << value.quadDivergentImplicitLod << '\n';
+       s << "\tmaxPerStageDescriptorUpdateAfterBindSamplers = " << value.maxPerStageDescriptorUpdateAfterBindSamplers << '\n';
+       s << "\tmaxPerStageDescriptorUpdateAfterBindUniformBuffers = " << value.maxPerStageDescriptorUpdateAfterBindUniformBuffers << '\n';
+       s << "\tmaxPerStageDescriptorUpdateAfterBindStorageBuffers = " << value.maxPerStageDescriptorUpdateAfterBindStorageBuffers << '\n';
+       s << "\tmaxPerStageDescriptorUpdateAfterBindSampledImages = " << value.maxPerStageDescriptorUpdateAfterBindSampledImages << '\n';
+       s << "\tmaxPerStageDescriptorUpdateAfterBindStorageImages = " << value.maxPerStageDescriptorUpdateAfterBindStorageImages << '\n';
+       s << "\tmaxPerStageDescriptorUpdateAfterBindInputAttachments = " << value.maxPerStageDescriptorUpdateAfterBindInputAttachments << '\n';
+       s << "\tmaxPerStageUpdateAfterBindResources = " << value.maxPerStageUpdateAfterBindResources << '\n';
+       s << "\tmaxDescriptorSetUpdateAfterBindSamplers = " << value.maxDescriptorSetUpdateAfterBindSamplers << '\n';
+       s << "\tmaxDescriptorSetUpdateAfterBindUniformBuffers = " << value.maxDescriptorSetUpdateAfterBindUniformBuffers << '\n';
+       s << "\tmaxDescriptorSetUpdateAfterBindUniformBuffersDynamic = " << value.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic << '\n';
+       s << "\tmaxDescriptorSetUpdateAfterBindStorageBuffers = " << value.maxDescriptorSetUpdateAfterBindStorageBuffers << '\n';
+       s << "\tmaxDescriptorSetUpdateAfterBindStorageBuffersDynamic = " << value.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic << '\n';
+       s << "\tmaxDescriptorSetUpdateAfterBindSampledImages = " << value.maxDescriptorSetUpdateAfterBindSampledImages << '\n';
+       s << "\tmaxDescriptorSetUpdateAfterBindStorageImages = " << value.maxDescriptorSetUpdateAfterBindStorageImages << '\n';
+       s << "\tmaxDescriptorSetUpdateAfterBindInputAttachments = " << value.maxDescriptorSetUpdateAfterBindInputAttachments << '\n';
+       s << "\tsupportedDepthResolveModes = " << getResolveModeFlagsStr(value.supportedDepthResolveModes) << '\n';
+       s << "\tsupportedStencilResolveModes = " << getResolveModeFlagsStr(value.supportedStencilResolveModes) << '\n';
+       s << "\tindependentResolveNone = " << value.independentResolveNone << '\n';
+       s << "\tindependentResolve = " << value.independentResolve << '\n';
+       s << "\tfilterMinmaxSingleComponentFormats = " << value.filterMinmaxSingleComponentFormats << '\n';
+       s << "\tfilterMinmaxImageComponentMapping = " << value.filterMinmaxImageComponentMapping << '\n';
+       s << "\tmaxTimelineSemaphoreValueDifference = " << value.maxTimelineSemaphoreValueDifference << '\n';
+       s << "\tframebufferIntegerColorSampleCounts = " << getSampleCountFlagsStr(value.framebufferIntegerColorSampleCounts) << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkImageFormatListCreateInfo& value)
+{
+       s << "VkImageFormatListCreateInfo = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tviewFormatCount = " << value.viewFormatCount << '\n';
+       s << "\tpViewFormats = " << value.pViewFormats << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkAttachmentDescription2& value)
+{
+       s << "VkAttachmentDescription2 = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tflags = " << getAttachmentDescriptionFlagsStr(value.flags) << '\n';
+       s << "\tformat = " << value.format << '\n';
+       s << "\tsamples = " << value.samples << '\n';
+       s << "\tloadOp = " << value.loadOp << '\n';
+       s << "\tstoreOp = " << value.storeOp << '\n';
+       s << "\tstencilLoadOp = " << value.stencilLoadOp << '\n';
+       s << "\tstencilStoreOp = " << value.stencilStoreOp << '\n';
+       s << "\tinitialLayout = " << value.initialLayout << '\n';
+       s << "\tfinalLayout = " << value.finalLayout << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkAttachmentReference2& value)
+{
+       s << "VkAttachmentReference2 = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tattachment = " << value.attachment << '\n';
+       s << "\tlayout = " << value.layout << '\n';
+       s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkSubpassDescription2& value)
+{
+       s << "VkSubpassDescription2 = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tflags = " << getSubpassDescriptionFlagsStr(value.flags) << '\n';
+       s << "\tpipelineBindPoint = " << value.pipelineBindPoint << '\n';
+       s << "\tviewMask = " << value.viewMask << '\n';
+       s << "\tinputAttachmentCount = " << value.inputAttachmentCount << '\n';
+       s << "\tpInputAttachments = " << value.pInputAttachments << '\n';
+       s << "\tcolorAttachmentCount = " << value.colorAttachmentCount << '\n';
+       s << "\tpColorAttachments = " << value.pColorAttachments << '\n';
+       s << "\tpResolveAttachments = " << value.pResolveAttachments << '\n';
+       s << "\tpDepthStencilAttachment = " << value.pDepthStencilAttachment << '\n';
+       s << "\tpreserveAttachmentCount = " << value.preserveAttachmentCount << '\n';
+       s << "\tpPreserveAttachments = " << value.pPreserveAttachments << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkSubpassDependency2& value)
+{
+       s << "VkSubpassDependency2 = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tsrcSubpass = " << value.srcSubpass << '\n';
+       s << "\tdstSubpass = " << value.dstSubpass << '\n';
+       s << "\tsrcStageMask = " << getPipelineStageFlagsStr(value.srcStageMask) << '\n';
+       s << "\tdstStageMask = " << getPipelineStageFlagsStr(value.dstStageMask) << '\n';
+       s << "\tsrcAccessMask = " << getAccessFlagsStr(value.srcAccessMask) << '\n';
+       s << "\tdstAccessMask = " << getAccessFlagsStr(value.dstAccessMask) << '\n';
+       s << "\tdependencyFlags = " << getDependencyFlagsStr(value.dependencyFlags) << '\n';
+       s << "\tviewOffset = " << value.viewOffset << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkRenderPassCreateInfo2& value)
+{
+       s << "VkRenderPassCreateInfo2 = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tflags = " << getRenderPassCreateFlagsStr(value.flags) << '\n';
+       s << "\tattachmentCount = " << value.attachmentCount << '\n';
+       s << "\tpAttachments = " << value.pAttachments << '\n';
+       s << "\tsubpassCount = " << value.subpassCount << '\n';
+       s << "\tpSubpasses = " << value.pSubpasses << '\n';
+       s << "\tdependencyCount = " << value.dependencyCount << '\n';
+       s << "\tpDependencies = " << value.pDependencies << '\n';
+       s << "\tcorrelatedViewMaskCount = " << value.correlatedViewMaskCount << '\n';
+       s << "\tpCorrelatedViewMasks = " << value.pCorrelatedViewMasks << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkSubpassBeginInfo& value)
+{
+       s << "VkSubpassBeginInfo = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tcontents = " << value.contents << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkSubpassEndInfo& value)
+{
+       s << "VkSubpassEndInfo = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDevice8BitStorageFeatures& value)
+{
+       s << "VkPhysicalDevice8BitStorageFeatures = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tstorageBuffer8BitAccess = " << value.storageBuffer8BitAccess << '\n';
+       s << "\tuniformAndStorageBuffer8BitAccess = " << value.uniformAndStorageBuffer8BitAccess << '\n';
+       s << "\tstoragePushConstant8 = " << value.storagePushConstant8 << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDriverProperties& value)
+{
+       s << "VkPhysicalDeviceDriverProperties = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tdriverID = " << value.driverID << '\n';
+       s << "\tdriverName = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.driverName)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.driverName))) << '\n';
+       s << "\tdriverInfo = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.driverInfo)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.driverInfo))) << '\n';
+       s << "\tconformanceVersion = " << value.conformanceVersion << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderAtomicInt64Features& value)
+{
+       s << "VkPhysicalDeviceShaderAtomicInt64Features = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tshaderBufferInt64Atomics = " << value.shaderBufferInt64Atomics << '\n';
+       s << "\tshaderSharedInt64Atomics = " << value.shaderSharedInt64Atomics << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderFloat16Int8Features& value)
+{
+       s << "VkPhysicalDeviceShaderFloat16Int8Features = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tshaderFloat16 = " << value.shaderFloat16 << '\n';
+       s << "\tshaderInt8 = " << value.shaderInt8 << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFloatControlsProperties& value)
+{
+       s << "VkPhysicalDeviceFloatControlsProperties = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tdenormBehaviorIndependence = " << value.denormBehaviorIndependence << '\n';
+       s << "\troundingModeIndependence = " << value.roundingModeIndependence << '\n';
+       s << "\tshaderSignedZeroInfNanPreserveFloat16 = " << value.shaderSignedZeroInfNanPreserveFloat16 << '\n';
+       s << "\tshaderSignedZeroInfNanPreserveFloat32 = " << value.shaderSignedZeroInfNanPreserveFloat32 << '\n';
+       s << "\tshaderSignedZeroInfNanPreserveFloat64 = " << value.shaderSignedZeroInfNanPreserveFloat64 << '\n';
+       s << "\tshaderDenormPreserveFloat16 = " << value.shaderDenormPreserveFloat16 << '\n';
+       s << "\tshaderDenormPreserveFloat32 = " << value.shaderDenormPreserveFloat32 << '\n';
+       s << "\tshaderDenormPreserveFloat64 = " << value.shaderDenormPreserveFloat64 << '\n';
+       s << "\tshaderDenormFlushToZeroFloat16 = " << value.shaderDenormFlushToZeroFloat16 << '\n';
+       s << "\tshaderDenormFlushToZeroFloat32 = " << value.shaderDenormFlushToZeroFloat32 << '\n';
+       s << "\tshaderDenormFlushToZeroFloat64 = " << value.shaderDenormFlushToZeroFloat64 << '\n';
+       s << "\tshaderRoundingModeRTEFloat16 = " << value.shaderRoundingModeRTEFloat16 << '\n';
+       s << "\tshaderRoundingModeRTEFloat32 = " << value.shaderRoundingModeRTEFloat32 << '\n';
+       s << "\tshaderRoundingModeRTEFloat64 = " << value.shaderRoundingModeRTEFloat64 << '\n';
+       s << "\tshaderRoundingModeRTZFloat16 = " << value.shaderRoundingModeRTZFloat16 << '\n';
+       s << "\tshaderRoundingModeRTZFloat32 = " << value.shaderRoundingModeRTZFloat32 << '\n';
+       s << "\tshaderRoundingModeRTZFloat64 = " << value.shaderRoundingModeRTZFloat64 << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkDescriptorSetLayoutBindingFlagsCreateInfo& value)
+{
+       s << "VkDescriptorSetLayoutBindingFlagsCreateInfo = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tbindingCount = " << value.bindingCount << '\n';
+       s << "\tpBindingFlags = " << value.pBindingFlags << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDescriptorIndexingFeatures& value)
+{
+       s << "VkPhysicalDeviceDescriptorIndexingFeatures = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tshaderInputAttachmentArrayDynamicIndexing = " << value.shaderInputAttachmentArrayDynamicIndexing << '\n';
+       s << "\tshaderUniformTexelBufferArrayDynamicIndexing = " << value.shaderUniformTexelBufferArrayDynamicIndexing << '\n';
+       s << "\tshaderStorageTexelBufferArrayDynamicIndexing = " << value.shaderStorageTexelBufferArrayDynamicIndexing << '\n';
+       s << "\tshaderUniformBufferArrayNonUniformIndexing = " << value.shaderUniformBufferArrayNonUniformIndexing << '\n';
+       s << "\tshaderSampledImageArrayNonUniformIndexing = " << value.shaderSampledImageArrayNonUniformIndexing << '\n';
+       s << "\tshaderStorageBufferArrayNonUniformIndexing = " << value.shaderStorageBufferArrayNonUniformIndexing << '\n';
+       s << "\tshaderStorageImageArrayNonUniformIndexing = " << value.shaderStorageImageArrayNonUniformIndexing << '\n';
+       s << "\tshaderInputAttachmentArrayNonUniformIndexing = " << value.shaderInputAttachmentArrayNonUniformIndexing << '\n';
+       s << "\tshaderUniformTexelBufferArrayNonUniformIndexing = " << value.shaderUniformTexelBufferArrayNonUniformIndexing << '\n';
+       s << "\tshaderStorageTexelBufferArrayNonUniformIndexing = " << value.shaderStorageTexelBufferArrayNonUniformIndexing << '\n';
+       s << "\tdescriptorBindingUniformBufferUpdateAfterBind = " << value.descriptorBindingUniformBufferUpdateAfterBind << '\n';
+       s << "\tdescriptorBindingSampledImageUpdateAfterBind = " << value.descriptorBindingSampledImageUpdateAfterBind << '\n';
+       s << "\tdescriptorBindingStorageImageUpdateAfterBind = " << value.descriptorBindingStorageImageUpdateAfterBind << '\n';
+       s << "\tdescriptorBindingStorageBufferUpdateAfterBind = " << value.descriptorBindingStorageBufferUpdateAfterBind << '\n';
+       s << "\tdescriptorBindingUniformTexelBufferUpdateAfterBind = " << value.descriptorBindingUniformTexelBufferUpdateAfterBind << '\n';
+       s << "\tdescriptorBindingStorageTexelBufferUpdateAfterBind = " << value.descriptorBindingStorageTexelBufferUpdateAfterBind << '\n';
+       s << "\tdescriptorBindingUpdateUnusedWhilePending = " << value.descriptorBindingUpdateUnusedWhilePending << '\n';
+       s << "\tdescriptorBindingPartiallyBound = " << value.descriptorBindingPartiallyBound << '\n';
+       s << "\tdescriptorBindingVariableDescriptorCount = " << value.descriptorBindingVariableDescriptorCount << '\n';
+       s << "\truntimeDescriptorArray = " << value.runtimeDescriptorArray << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDescriptorIndexingProperties& value)
+{
+       s << "VkPhysicalDeviceDescriptorIndexingProperties = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tmaxUpdateAfterBindDescriptorsInAllPools = " << value.maxUpdateAfterBindDescriptorsInAllPools << '\n';
+       s << "\tshaderUniformBufferArrayNonUniformIndexingNative = " << value.shaderUniformBufferArrayNonUniformIndexingNative << '\n';
+       s << "\tshaderSampledImageArrayNonUniformIndexingNative = " << value.shaderSampledImageArrayNonUniformIndexingNative << '\n';
+       s << "\tshaderStorageBufferArrayNonUniformIndexingNative = " << value.shaderStorageBufferArrayNonUniformIndexingNative << '\n';
+       s << "\tshaderStorageImageArrayNonUniformIndexingNative = " << value.shaderStorageImageArrayNonUniformIndexingNative << '\n';
+       s << "\tshaderInputAttachmentArrayNonUniformIndexingNative = " << value.shaderInputAttachmentArrayNonUniformIndexingNative << '\n';
+       s << "\trobustBufferAccessUpdateAfterBind = " << value.robustBufferAccessUpdateAfterBind << '\n';
+       s << "\tquadDivergentImplicitLod = " << value.quadDivergentImplicitLod << '\n';
+       s << "\tmaxPerStageDescriptorUpdateAfterBindSamplers = " << value.maxPerStageDescriptorUpdateAfterBindSamplers << '\n';
+       s << "\tmaxPerStageDescriptorUpdateAfterBindUniformBuffers = " << value.maxPerStageDescriptorUpdateAfterBindUniformBuffers << '\n';
+       s << "\tmaxPerStageDescriptorUpdateAfterBindStorageBuffers = " << value.maxPerStageDescriptorUpdateAfterBindStorageBuffers << '\n';
+       s << "\tmaxPerStageDescriptorUpdateAfterBindSampledImages = " << value.maxPerStageDescriptorUpdateAfterBindSampledImages << '\n';
+       s << "\tmaxPerStageDescriptorUpdateAfterBindStorageImages = " << value.maxPerStageDescriptorUpdateAfterBindStorageImages << '\n';
+       s << "\tmaxPerStageDescriptorUpdateAfterBindInputAttachments = " << value.maxPerStageDescriptorUpdateAfterBindInputAttachments << '\n';
+       s << "\tmaxPerStageUpdateAfterBindResources = " << value.maxPerStageUpdateAfterBindResources << '\n';
+       s << "\tmaxDescriptorSetUpdateAfterBindSamplers = " << value.maxDescriptorSetUpdateAfterBindSamplers << '\n';
+       s << "\tmaxDescriptorSetUpdateAfterBindUniformBuffers = " << value.maxDescriptorSetUpdateAfterBindUniformBuffers << '\n';
+       s << "\tmaxDescriptorSetUpdateAfterBindUniformBuffersDynamic = " << value.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic << '\n';
+       s << "\tmaxDescriptorSetUpdateAfterBindStorageBuffers = " << value.maxDescriptorSetUpdateAfterBindStorageBuffers << '\n';
+       s << "\tmaxDescriptorSetUpdateAfterBindStorageBuffersDynamic = " << value.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic << '\n';
+       s << "\tmaxDescriptorSetUpdateAfterBindSampledImages = " << value.maxDescriptorSetUpdateAfterBindSampledImages << '\n';
+       s << "\tmaxDescriptorSetUpdateAfterBindStorageImages = " << value.maxDescriptorSetUpdateAfterBindStorageImages << '\n';
+       s << "\tmaxDescriptorSetUpdateAfterBindInputAttachments = " << value.maxDescriptorSetUpdateAfterBindInputAttachments << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkDescriptorSetVariableDescriptorCountAllocateInfo& value)
+{
+       s << "VkDescriptorSetVariableDescriptorCountAllocateInfo = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tdescriptorSetCount = " << value.descriptorSetCount << '\n';
+       s << "\tpDescriptorCounts = " << value.pDescriptorCounts << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkDescriptorSetVariableDescriptorCountLayoutSupport& value)
+{
+       s << "VkDescriptorSetVariableDescriptorCountLayoutSupport = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tmaxVariableDescriptorCount = " << value.maxVariableDescriptorCount << '\n';
+       s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkDeviceGroupPresentInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkSubpassDescriptionDepthStencilResolve& value)
 {
-       s << "VkDeviceGroupPresentInfoKHR = {\n";
+       s << "VkSubpassDescriptionDepthStencilResolve = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tswapchainCount = " << value.swapchainCount << '\n';
-       s << "\tpDeviceMasks = " << value.pDeviceMasks << '\n';
-       s << "\tmode = " << value.mode << '\n';
+       s << "\tdepthResolveMode = " << value.depthResolveMode << '\n';
+       s << "\tstencilResolveMode = " << value.stencilResolveMode << '\n';
+       s << "\tpDepthStencilResolveAttachment = " << value.pDepthStencilResolveAttachment << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkDeviceGroupSwapchainCreateInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDepthStencilResolveProperties& value)
 {
-       s << "VkDeviceGroupSwapchainCreateInfoKHR = {\n";
+       s << "VkPhysicalDeviceDepthStencilResolveProperties = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tmodes = " << getDeviceGroupPresentModeFlagsKHRStr(value.modes) << '\n';
+       s << "\tsupportedDepthResolveModes = " << getResolveModeFlagsStr(value.supportedDepthResolveModes) << '\n';
+       s << "\tsupportedStencilResolveModes = " << getResolveModeFlagsStr(value.supportedStencilResolveModes) << '\n';
+       s << "\tindependentResolveNone = " << value.independentResolveNone << '\n';
+       s << "\tindependentResolve = " << value.independentResolve << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkDisplayPropertiesKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceScalarBlockLayoutFeatures& value)
 {
-       s << "VkDisplayPropertiesKHR = {\n";
-       s << "\tdisplay = " << value.display << '\n';
-       s << "\tdisplayName = " << getCharPtrStr(value.displayName) << '\n';
-       s << "\tphysicalDimensions = " << value.physicalDimensions << '\n';
-       s << "\tphysicalResolution = " << value.physicalResolution << '\n';
-       s << "\tsupportedTransforms = " << getSurfaceTransformFlagsKHRStr(value.supportedTransforms) << '\n';
-       s << "\tplaneReorderPossible = " << value.planeReorderPossible << '\n';
-       s << "\tpersistentContent = " << value.persistentContent << '\n';
+       s << "VkPhysicalDeviceScalarBlockLayoutFeatures = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tscalarBlockLayout = " << value.scalarBlockLayout << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkDisplayModeParametersKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkImageStencilUsageCreateInfo& value)
 {
-       s << "VkDisplayModeParametersKHR = {\n";
-       s << "\tvisibleRegion = " << value.visibleRegion << '\n';
-       s << "\trefreshRate = " << value.refreshRate << '\n';
+       s << "VkImageStencilUsageCreateInfo = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tstencilUsage = " << getImageUsageFlagsStr(value.stencilUsage) << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkDisplayModePropertiesKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkSamplerReductionModeCreateInfo& value)
 {
-       s << "VkDisplayModePropertiesKHR = {\n";
-       s << "\tdisplayMode = " << value.displayMode << '\n';
-       s << "\tparameters = " << value.parameters << '\n';
+       s << "VkSamplerReductionModeCreateInfo = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\treductionMode = " << value.reductionMode << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkDisplayModeCreateInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSamplerFilterMinmaxProperties& value)
 {
-       s << "VkDisplayModeCreateInfoKHR = {\n";
+       s << "VkPhysicalDeviceSamplerFilterMinmaxProperties = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tflags = " << getDisplayModeCreateFlagsKHRStr(value.flags) << '\n';
-       s << "\tparameters = " << value.parameters << '\n';
+       s << "\tfilterMinmaxSingleComponentFormats = " << value.filterMinmaxSingleComponentFormats << '\n';
+       s << "\tfilterMinmaxImageComponentMapping = " << value.filterMinmaxImageComponentMapping << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkDisplayPlaneCapabilitiesKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVulkanMemoryModelFeatures& value)
 {
-       s << "VkDisplayPlaneCapabilitiesKHR = {\n";
-       s << "\tsupportedAlpha = " << getDisplayPlaneAlphaFlagsKHRStr(value.supportedAlpha) << '\n';
-       s << "\tminSrcPosition = " << value.minSrcPosition << '\n';
-       s << "\tmaxSrcPosition = " << value.maxSrcPosition << '\n';
-       s << "\tminSrcExtent = " << value.minSrcExtent << '\n';
-       s << "\tmaxSrcExtent = " << value.maxSrcExtent << '\n';
-       s << "\tminDstPosition = " << value.minDstPosition << '\n';
-       s << "\tmaxDstPosition = " << value.maxDstPosition << '\n';
-       s << "\tminDstExtent = " << value.minDstExtent << '\n';
-       s << "\tmaxDstExtent = " << value.maxDstExtent << '\n';
+       s << "VkPhysicalDeviceVulkanMemoryModelFeatures = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tvulkanMemoryModel = " << value.vulkanMemoryModel << '\n';
+       s << "\tvulkanMemoryModelDeviceScope = " << value.vulkanMemoryModelDeviceScope << '\n';
+       s << "\tvulkanMemoryModelAvailabilityVisibilityChains = " << value.vulkanMemoryModelAvailabilityVisibilityChains << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkDisplayPlanePropertiesKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceImagelessFramebufferFeatures& value)
 {
-       s << "VkDisplayPlanePropertiesKHR = {\n";
-       s << "\tcurrentDisplay = " << value.currentDisplay << '\n';
-       s << "\tcurrentStackIndex = " << value.currentStackIndex << '\n';
+       s << "VkPhysicalDeviceImagelessFramebufferFeatures = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\timagelessFramebuffer = " << value.imagelessFramebuffer << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkDisplaySurfaceCreateInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkFramebufferAttachmentImageInfo& value)
 {
-       s << "VkDisplaySurfaceCreateInfoKHR = {\n";
+       s << "VkFramebufferAttachmentImageInfo = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tflags = " << getDisplaySurfaceCreateFlagsKHRStr(value.flags) << '\n';
-       s << "\tdisplayMode = " << value.displayMode << '\n';
-       s << "\tplaneIndex = " << value.planeIndex << '\n';
-       s << "\tplaneStackIndex = " << value.planeStackIndex << '\n';
-       s << "\ttransform = " << value.transform << '\n';
-       s << "\tglobalAlpha = " << value.globalAlpha << '\n';
-       s << "\talphaMode = " << value.alphaMode << '\n';
-       s << "\timageExtent = " << value.imageExtent << '\n';
+       s << "\tflags = " << getImageCreateFlagsStr(value.flags) << '\n';
+       s << "\tusage = " << getImageUsageFlagsStr(value.usage) << '\n';
+       s << "\twidth = " << value.width << '\n';
+       s << "\theight = " << value.height << '\n';
+       s << "\tlayerCount = " << value.layerCount << '\n';
+       s << "\tviewFormatCount = " << value.viewFormatCount << '\n';
+       s << "\tpViewFormats = " << value.pViewFormats << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkDisplayPresentInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkFramebufferAttachmentsCreateInfo& value)
 {
-       s << "VkDisplayPresentInfoKHR = {\n";
+       s << "VkFramebufferAttachmentsCreateInfo = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tsrcRect = " << value.srcRect << '\n';
-       s << "\tdstRect = " << value.dstRect << '\n';
-       s << "\tpersistent = " << value.persistent << '\n';
+       s << "\tattachmentImageInfoCount = " << value.attachmentImageInfoCount << '\n';
+       s << "\tpAttachmentImageInfos = " << value.pAttachmentImageInfos << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkImportMemoryFdInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkRenderPassAttachmentBeginInfo& value)
 {
-       s << "VkImportMemoryFdInfoKHR = {\n";
+       s << "VkRenderPassAttachmentBeginInfo = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\thandleType = " << value.handleType << '\n';
-       s << "\tfd = " << value.fd << '\n';
+       s << "\tattachmentCount = " << value.attachmentCount << '\n';
+       s << "\tpAttachments = " << value.pAttachments << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkMemoryFdPropertiesKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceUniformBufferStandardLayoutFeatures& value)
 {
-       s << "VkMemoryFdPropertiesKHR = {\n";
+       s << "VkPhysicalDeviceUniformBufferStandardLayoutFeatures = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tmemoryTypeBits = " << value.memoryTypeBits << '\n';
+       s << "\tuniformBufferStandardLayout = " << value.uniformBufferStandardLayout << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkMemoryGetFdInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures& value)
 {
-       s << "VkMemoryGetFdInfoKHR = {\n";
+       s << "VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tmemory = " << value.memory << '\n';
-       s << "\thandleType = " << value.handleType << '\n';
+       s << "\tshaderSubgroupExtendedTypes = " << value.shaderSubgroupExtendedTypes << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkImportSemaphoreFdInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures& value)
 {
-       s << "VkImportSemaphoreFdInfoKHR = {\n";
+       s << "VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tsemaphore = " << value.semaphore << '\n';
-       s << "\tflags = " << getSemaphoreImportFlagsStr(value.flags) << '\n';
-       s << "\thandleType = " << value.handleType << '\n';
-       s << "\tfd = " << value.fd << '\n';
+       s << "\tseparateDepthStencilLayouts = " << value.separateDepthStencilLayouts << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkSemaphoreGetFdInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkAttachmentReferenceStencilLayout& value)
 {
-       s << "VkSemaphoreGetFdInfoKHR = {\n";
+       s << "VkAttachmentReferenceStencilLayout = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tsemaphore = " << value.semaphore << '\n';
-       s << "\thandleType = " << value.handleType << '\n';
+       s << "\tstencilLayout = " << value.stencilLayout << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePushDescriptorPropertiesKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkAttachmentDescriptionStencilLayout& value)
 {
-       s << "VkPhysicalDevicePushDescriptorPropertiesKHR = {\n";
+       s << "VkAttachmentDescriptionStencilLayout = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tmaxPushDescriptors = " << value.maxPushDescriptors << '\n';
+       s << "\tstencilInitialLayout = " << value.stencilInitialLayout << '\n';
+       s << "\tstencilFinalLayout = " << value.stencilFinalLayout << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderFloat16Int8FeaturesKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceHostQueryResetFeatures& value)
 {
-       s << "VkPhysicalDeviceShaderFloat16Int8FeaturesKHR = {\n";
+       s << "VkPhysicalDeviceHostQueryResetFeatures = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tshaderFloat16 = " << value.shaderFloat16 << '\n';
-       s << "\tshaderInt8 = " << value.shaderInt8 << '\n';
+       s << "\thostQueryReset = " << value.hostQueryReset << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkRectLayerKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceTimelineSemaphoreFeatures& value)
 {
-       s << "VkRectLayerKHR = {\n";
-       s << "\toffset = " << value.offset << '\n';
-       s << "\textent = " << value.extent << '\n';
-       s << "\tlayer = " << value.layer << '\n';
+       s << "VkPhysicalDeviceTimelineSemaphoreFeatures = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\ttimelineSemaphore = " << value.timelineSemaphore << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkPresentRegionKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceTimelineSemaphoreProperties& value)
 {
-       s << "VkPresentRegionKHR = {\n";
-       s << "\trectangleCount = " << value.rectangleCount << '\n';
-       s << "\tpRectangles = " << value.pRectangles << '\n';
+       s << "VkPhysicalDeviceTimelineSemaphoreProperties = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tmaxTimelineSemaphoreValueDifference = " << value.maxTimelineSemaphoreValueDifference << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkPresentRegionsKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkSemaphoreTypeCreateInfo& value)
 {
-       s << "VkPresentRegionsKHR = {\n";
+       s << "VkSemaphoreTypeCreateInfo = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tswapchainCount = " << value.swapchainCount << '\n';
-       s << "\tpRegions = " << value.pRegions << '\n';
+       s << "\tsemaphoreType = " << value.semaphoreType << '\n';
+       s << "\tinitialValue = " << value.initialValue << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceImagelessFramebufferFeaturesKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkTimelineSemaphoreSubmitInfo& value)
 {
-       s << "VkPhysicalDeviceImagelessFramebufferFeaturesKHR = {\n";
+       s << "VkTimelineSemaphoreSubmitInfo = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\timagelessFramebuffer = " << value.imagelessFramebuffer << '\n';
+       s << "\twaitSemaphoreValueCount = " << value.waitSemaphoreValueCount << '\n';
+       s << "\tpWaitSemaphoreValues = " << value.pWaitSemaphoreValues << '\n';
+       s << "\tsignalSemaphoreValueCount = " << value.signalSemaphoreValueCount << '\n';
+       s << "\tpSignalSemaphoreValues = " << value.pSignalSemaphoreValues << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkFramebufferAttachmentImageInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkSemaphoreWaitInfo& value)
 {
-       s << "VkFramebufferAttachmentImageInfoKHR = {\n";
+       s << "VkSemaphoreWaitInfo = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tflags = " << getImageCreateFlagsStr(value.flags) << '\n';
-       s << "\tusage = " << getImageUsageFlagsStr(value.usage) << '\n';
-       s << "\twidth = " << value.width << '\n';
-       s << "\theight = " << value.height << '\n';
-       s << "\tlayerCount = " << value.layerCount << '\n';
-       s << "\tviewFormatCount = " << value.viewFormatCount << '\n';
-       s << "\tpViewFormats = " << value.pViewFormats << '\n';
+       s << "\tflags = " << getSemaphoreWaitFlagsStr(value.flags) << '\n';
+       s << "\tsemaphoreCount = " << value.semaphoreCount << '\n';
+       s << "\tpSemaphores = " << value.pSemaphores << '\n';
+       s << "\tpValues = " << value.pValues << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkFramebufferAttachmentsCreateInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkSemaphoreSignalInfo& value)
 {
-       s << "VkFramebufferAttachmentsCreateInfoKHR = {\n";
+       s << "VkSemaphoreSignalInfo = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tattachmentImageInfoCount = " << value.attachmentImageInfoCount << '\n';
-       s << "\tpAttachmentImageInfos = " << value.pAttachmentImageInfos << '\n';
+       s << "\tsemaphore = " << value.semaphore << '\n';
+       s << "\tvalue = " << value.value << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkRenderPassAttachmentBeginInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceBufferDeviceAddressFeatures& value)
 {
-       s << "VkRenderPassAttachmentBeginInfoKHR = {\n";
+       s << "VkPhysicalDeviceBufferDeviceAddressFeatures = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tattachmentCount = " << value.attachmentCount << '\n';
-       s << "\tpAttachments = " << value.pAttachments << '\n';
+       s << "\tbufferDeviceAddress = " << value.bufferDeviceAddress << '\n';
+       s << "\tbufferDeviceAddressCaptureReplay = " << value.bufferDeviceAddressCaptureReplay << '\n';
+       s << "\tbufferDeviceAddressMultiDevice = " << value.bufferDeviceAddressMultiDevice << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkAttachmentDescription2KHR& value)
+std::ostream& operator<< (std::ostream& s, const VkBufferDeviceAddressInfo& value)
 {
-       s << "VkAttachmentDescription2KHR = {\n";
+       s << "VkBufferDeviceAddressInfo = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tflags = " << getAttachmentDescriptionFlagsStr(value.flags) << '\n';
-       s << "\tformat = " << value.format << '\n';
-       s << "\tsamples = " << value.samples << '\n';
-       s << "\tloadOp = " << value.loadOp << '\n';
-       s << "\tstoreOp = " << value.storeOp << '\n';
-       s << "\tstencilLoadOp = " << value.stencilLoadOp << '\n';
-       s << "\tstencilStoreOp = " << value.stencilStoreOp << '\n';
-       s << "\tinitialLayout = " << value.initialLayout << '\n';
-       s << "\tfinalLayout = " << value.finalLayout << '\n';
+       s << "\tbuffer = " << value.buffer << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkAttachmentReference2KHR& value)
+std::ostream& operator<< (std::ostream& s, const VkBufferOpaqueCaptureAddressCreateInfo& value)
 {
-       s << "VkAttachmentReference2KHR = {\n";
+       s << "VkBufferOpaqueCaptureAddressCreateInfo = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tattachment = " << value.attachment << '\n';
-       s << "\tlayout = " << value.layout << '\n';
-       s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
+       s << "\topaqueCaptureAddress = " << value.opaqueCaptureAddress << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkSubpassDescription2KHR& value)
+std::ostream& operator<< (std::ostream& s, const VkMemoryOpaqueCaptureAddressAllocateInfo& value)
 {
-       s << "VkSubpassDescription2KHR = {\n";
+       s << "VkMemoryOpaqueCaptureAddressAllocateInfo = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tflags = " << getSubpassDescriptionFlagsStr(value.flags) << '\n';
-       s << "\tpipelineBindPoint = " << value.pipelineBindPoint << '\n';
-       s << "\tviewMask = " << value.viewMask << '\n';
-       s << "\tinputAttachmentCount = " << value.inputAttachmentCount << '\n';
-       s << "\tpInputAttachments = " << value.pInputAttachments << '\n';
-       s << "\tcolorAttachmentCount = " << value.colorAttachmentCount << '\n';
-       s << "\tpColorAttachments = " << value.pColorAttachments << '\n';
-       s << "\tpResolveAttachments = " << value.pResolveAttachments << '\n';
-       s << "\tpDepthStencilAttachment = " << value.pDepthStencilAttachment << '\n';
-       s << "\tpreserveAttachmentCount = " << value.preserveAttachmentCount << '\n';
-       s << "\tpPreserveAttachments = " << value.pPreserveAttachments << '\n';
+       s << "\topaqueCaptureAddress = " << value.opaqueCaptureAddress << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkSubpassDependency2KHR& value)
+std::ostream& operator<< (std::ostream& s, const VkDeviceMemoryOpaqueCaptureAddressInfo& value)
 {
-       s << "VkSubpassDependency2KHR = {\n";
+       s << "VkDeviceMemoryOpaqueCaptureAddressInfo = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tsrcSubpass = " << value.srcSubpass << '\n';
-       s << "\tdstSubpass = " << value.dstSubpass << '\n';
-       s << "\tsrcStageMask = " << getPipelineStageFlagsStr(value.srcStageMask) << '\n';
-       s << "\tdstStageMask = " << getPipelineStageFlagsStr(value.dstStageMask) << '\n';
-       s << "\tsrcAccessMask = " << getAccessFlagsStr(value.srcAccessMask) << '\n';
-       s << "\tdstAccessMask = " << getAccessFlagsStr(value.dstAccessMask) << '\n';
-       s << "\tdependencyFlags = " << getDependencyFlagsStr(value.dependencyFlags) << '\n';
-       s << "\tviewOffset = " << value.viewOffset << '\n';
+       s << "\tmemory = " << value.memory << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkSurfaceCapabilitiesKHR& value)
+{
+       s << "VkSurfaceCapabilitiesKHR = {\n";
+       s << "\tminImageCount = " << value.minImageCount << '\n';
+       s << "\tmaxImageCount = " << value.maxImageCount << '\n';
+       s << "\tcurrentExtent = " << value.currentExtent << '\n';
+       s << "\tminImageExtent = " << value.minImageExtent << '\n';
+       s << "\tmaxImageExtent = " << value.maxImageExtent << '\n';
+       s << "\tmaxImageArrayLayers = " << value.maxImageArrayLayers << '\n';
+       s << "\tsupportedTransforms = " << getSurfaceTransformFlagsKHRStr(value.supportedTransforms) << '\n';
+       s << "\tcurrentTransform = " << value.currentTransform << '\n';
+       s << "\tsupportedCompositeAlpha = " << getCompositeAlphaFlagsKHRStr(value.supportedCompositeAlpha) << '\n';
+       s << "\tsupportedUsageFlags = " << getImageUsageFlagsStr(value.supportedUsageFlags) << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkSurfaceFormatKHR& value)
+{
+       s << "VkSurfaceFormatKHR = {\n";
+       s << "\tformat = " << value.format << '\n';
+       s << "\tcolorSpace = " << value.colorSpace << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkSwapchainCreateInfoKHR& value)
+{
+       s << "VkSwapchainCreateInfoKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tflags = " << getSwapchainCreateFlagsKHRStr(value.flags) << '\n';
+       s << "\tsurface = " << value.surface << '\n';
+       s << "\tminImageCount = " << value.minImageCount << '\n';
+       s << "\timageFormat = " << value.imageFormat << '\n';
+       s << "\timageColorSpace = " << value.imageColorSpace << '\n';
+       s << "\timageExtent = " << value.imageExtent << '\n';
+       s << "\timageArrayLayers = " << value.imageArrayLayers << '\n';
+       s << "\timageUsage = " << getImageUsageFlagsStr(value.imageUsage) << '\n';
+       s << "\timageSharingMode = " << value.imageSharingMode << '\n';
+       s << "\tqueueFamilyIndexCount = " << value.queueFamilyIndexCount << '\n';
+       s << "\tpQueueFamilyIndices = " << value.pQueueFamilyIndices << '\n';
+       s << "\tpreTransform = " << value.preTransform << '\n';
+       s << "\tcompositeAlpha = " << value.compositeAlpha << '\n';
+       s << "\tpresentMode = " << value.presentMode << '\n';
+       s << "\tclipped = " << value.clipped << '\n';
+       s << "\toldSwapchain = " << value.oldSwapchain << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkRenderPassCreateInfo2KHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPresentInfoKHR& value)
 {
-       s << "VkRenderPassCreateInfo2KHR = {\n";
+       s << "VkPresentInfoKHR = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tflags = " << getRenderPassCreateFlagsStr(value.flags) << '\n';
-       s << "\tattachmentCount = " << value.attachmentCount << '\n';
-       s << "\tpAttachments = " << value.pAttachments << '\n';
-       s << "\tsubpassCount = " << value.subpassCount << '\n';
-       s << "\tpSubpasses = " << value.pSubpasses << '\n';
-       s << "\tdependencyCount = " << value.dependencyCount << '\n';
-       s << "\tpDependencies = " << value.pDependencies << '\n';
-       s << "\tcorrelatedViewMaskCount = " << value.correlatedViewMaskCount << '\n';
-       s << "\tpCorrelatedViewMasks = " << value.pCorrelatedViewMasks << '\n';
+       s << "\twaitSemaphoreCount = " << value.waitSemaphoreCount << '\n';
+       s << "\tpWaitSemaphores = " << value.pWaitSemaphores << '\n';
+       s << "\tswapchainCount = " << value.swapchainCount << '\n';
+       s << "\tpSwapchains = " << value.pSwapchains << '\n';
+       s << "\tpImageIndices = " << value.pImageIndices << '\n';
+       s << "\tpResults = " << value.pResults << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkSubpassBeginInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkImageSwapchainCreateInfoKHR& value)
 {
-       s << "VkSubpassBeginInfoKHR = {\n";
+       s << "VkImageSwapchainCreateInfoKHR = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tcontents = " << value.contents << '\n';
+       s << "\tswapchain = " << value.swapchain << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkSubpassEndInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkBindImageMemorySwapchainInfoKHR& value)
 {
-       s << "VkSubpassEndInfoKHR = {\n";
+       s << "VkBindImageMemorySwapchainInfoKHR = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
+       s << "\tswapchain = " << value.swapchain << '\n';
+       s << "\timageIndex = " << value.imageIndex << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkSharedPresentSurfaceCapabilitiesKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkAcquireNextImageInfoKHR& value)
 {
-       s << "VkSharedPresentSurfaceCapabilitiesKHR = {\n";
+       s << "VkAcquireNextImageInfoKHR = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tsharedPresentSupportedUsageFlags = " << getImageUsageFlagsStr(value.sharedPresentSupportedUsageFlags) << '\n';
+       s << "\tswapchain = " << value.swapchain << '\n';
+       s << "\ttimeout = " << value.timeout << '\n';
+       s << "\tsemaphore = " << value.semaphore << '\n';
+       s << "\tfence = " << value.fence << '\n';
+       s << "\tdeviceMask = " << value.deviceMask << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkImportFenceFdInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkDeviceGroupPresentCapabilitiesKHR& value)
 {
-       s << "VkImportFenceFdInfoKHR = {\n";
+       s << "VkDeviceGroupPresentCapabilitiesKHR = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tfence = " << value.fence << '\n';
-       s << "\tflags = " << getFenceImportFlagsStr(value.flags) << '\n';
-       s << "\thandleType = " << value.handleType << '\n';
-       s << "\tfd = " << value.fd << '\n';
+       s << "\tpresentMask = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.presentMask), DE_ARRAY_END(value.presentMask)) << '\n';
+       s << "\tmodes = " << getDeviceGroupPresentModeFlagsKHRStr(value.modes) << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkFenceGetFdInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkDeviceGroupPresentInfoKHR& value)
 {
-       s << "VkFenceGetFdInfoKHR = {\n";
+       s << "VkDeviceGroupPresentInfoKHR = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tfence = " << value.fence << '\n';
-       s << "\thandleType = " << value.handleType << '\n';
+       s << "\tswapchainCount = " << value.swapchainCount << '\n';
+       s << "\tpDeviceMasks = " << value.pDeviceMasks << '\n';
+       s << "\tmode = " << value.mode << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePerformanceQueryFeaturesKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkDeviceGroupSwapchainCreateInfoKHR& value)
 {
-       s << "VkPhysicalDevicePerformanceQueryFeaturesKHR = {\n";
+       s << "VkDeviceGroupSwapchainCreateInfoKHR = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tperformanceCounterQueryPools = " << value.performanceCounterQueryPools << '\n';
-       s << "\tperformanceCounterMultipleQueryPools = " << value.performanceCounterMultipleQueryPools << '\n';
+       s << "\tmodes = " << getDeviceGroupPresentModeFlagsKHRStr(value.modes) << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePerformanceQueryPropertiesKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkDisplayPropertiesKHR& value)
 {
-       s << "VkPhysicalDevicePerformanceQueryPropertiesKHR = {\n";
-       s << "\tsType = " << value.sType << '\n';
-       s << "\tpNext = " << value.pNext << '\n';
-       s << "\tallowCommandBufferQueryCopies = " << value.allowCommandBufferQueryCopies << '\n';
+       s << "VkDisplayPropertiesKHR = {\n";
+       s << "\tdisplay = " << value.display << '\n';
+       s << "\tdisplayName = " << getCharPtrStr(value.displayName) << '\n';
+       s << "\tphysicalDimensions = " << value.physicalDimensions << '\n';
+       s << "\tphysicalResolution = " << value.physicalResolution << '\n';
+       s << "\tsupportedTransforms = " << getSurfaceTransformFlagsKHRStr(value.supportedTransforms) << '\n';
+       s << "\tplaneReorderPossible = " << value.planeReorderPossible << '\n';
+       s << "\tpersistentContent = " << value.persistentContent << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkPerformanceCounterKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkDisplayModeParametersKHR& value)
 {
-       s << "VkPerformanceCounterKHR = {\n";
-       s << "\tsType = " << value.sType << '\n';
-       s << "\tpNext = " << value.pNext << '\n';
-       s << "\tunit = " << value.unit << '\n';
-       s << "\tscope = " << value.scope << '\n';
-       s << "\tstorage = " << value.storage << '\n';
-       s << "\tuuid = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<deUint8>(DE_ARRAY_BEGIN(value.uuid)), tcu::Format::HexIterator<deUint8>(DE_ARRAY_END(value.uuid))) << '\n';
+       s << "VkDisplayModeParametersKHR = {\n";
+       s << "\tvisibleRegion = " << value.visibleRegion << '\n';
+       s << "\trefreshRate = " << value.refreshRate << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkPerformanceCounterDescriptionKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkDisplayModePropertiesKHR& value)
 {
-       s << "VkPerformanceCounterDescriptionKHR = {\n";
-       s << "\tsType = " << value.sType << '\n';
-       s << "\tpNext = " << value.pNext << '\n';
-       s << "\tflags = " << getPerformanceCounterDescriptionFlagsKHRStr(value.flags) << '\n';
-       s << "\tname = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.name)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.name))) << '\n';
-       s << "\tcategory = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.category)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.category))) << '\n';
-       s << "\tdescription = " << (const char*)value.description << '\n';
+       s << "VkDisplayModePropertiesKHR = {\n";
+       s << "\tdisplayMode = " << value.displayMode << '\n';
+       s << "\tparameters = " << value.parameters << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkQueryPoolPerformanceCreateInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkDisplayModeCreateInfoKHR& value)
 {
-       s << "VkQueryPoolPerformanceCreateInfoKHR = {\n";
+       s << "VkDisplayModeCreateInfoKHR = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tqueueFamilyIndex = " << value.queueFamilyIndex << '\n';
-       s << "\tcounterIndexCount = " << value.counterIndexCount << '\n';
-       s << "\tpCounterIndices = " << value.pCounterIndices << '\n';
+       s << "\tflags = " << getDisplayModeCreateFlagsKHRStr(value.flags) << '\n';
+       s << "\tparameters = " << value.parameters << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkPerformanceCounterResultKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkDisplayPlaneCapabilitiesKHR& value)
 {
-       s << "VkPerformanceCounterResultKHR = {\n";
-       s << "\tint32 = " << value.int32 << '\n';
-       s << "\tint64 = " << value.int64 << '\n';
-       s << "\tuint32 = " << value.uint32 << '\n';
-       s << "\tuint64 = " << value.uint64 << '\n';
-       s << "\tfloat32 = " << value.float32 << '\n';
-       s << "\tfloat64 = " << value.float64 << '\n';
+       s << "VkDisplayPlaneCapabilitiesKHR = {\n";
+       s << "\tsupportedAlpha = " << getDisplayPlaneAlphaFlagsKHRStr(value.supportedAlpha) << '\n';
+       s << "\tminSrcPosition = " << value.minSrcPosition << '\n';
+       s << "\tmaxSrcPosition = " << value.maxSrcPosition << '\n';
+       s << "\tminSrcExtent = " << value.minSrcExtent << '\n';
+       s << "\tmaxSrcExtent = " << value.maxSrcExtent << '\n';
+       s << "\tminDstPosition = " << value.minDstPosition << '\n';
+       s << "\tmaxDstPosition = " << value.maxDstPosition << '\n';
+       s << "\tminDstExtent = " << value.minDstExtent << '\n';
+       s << "\tmaxDstExtent = " << value.maxDstExtent << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkAcquireProfilingLockInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkDisplayPlanePropertiesKHR& value)
 {
-       s << "VkAcquireProfilingLockInfoKHR = {\n";
-       s << "\tsType = " << value.sType << '\n';
-       s << "\tpNext = " << value.pNext << '\n';
-       s << "\tflags = " << getAcquireProfilingLockFlagsKHRStr(value.flags) << '\n';
-       s << "\ttimeout = " << value.timeout << '\n';
+       s << "VkDisplayPlanePropertiesKHR = {\n";
+       s << "\tcurrentDisplay = " << value.currentDisplay << '\n';
+       s << "\tcurrentStackIndex = " << value.currentStackIndex << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkPerformanceQuerySubmitInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkDisplaySurfaceCreateInfoKHR& value)
 {
-       s << "VkPerformanceQuerySubmitInfoKHR = {\n";
+       s << "VkDisplaySurfaceCreateInfoKHR = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tcounterPassIndex = " << value.counterPassIndex << '\n';
+       s << "\tflags = " << getDisplaySurfaceCreateFlagsKHRStr(value.flags) << '\n';
+       s << "\tdisplayMode = " << value.displayMode << '\n';
+       s << "\tplaneIndex = " << value.planeIndex << '\n';
+       s << "\tplaneStackIndex = " << value.planeStackIndex << '\n';
+       s << "\ttransform = " << value.transform << '\n';
+       s << "\tglobalAlpha = " << value.globalAlpha << '\n';
+       s << "\talphaMode = " << value.alphaMode << '\n';
+       s << "\timageExtent = " << value.imageExtent << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSurfaceInfo2KHR& value)
+std::ostream& operator<< (std::ostream& s, const VkDisplayPresentInfoKHR& value)
 {
-       s << "VkPhysicalDeviceSurfaceInfo2KHR = {\n";
+       s << "VkDisplayPresentInfoKHR = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tsurface = " << value.surface << '\n';
+       s << "\tsrcRect = " << value.srcRect << '\n';
+       s << "\tdstRect = " << value.dstRect << '\n';
+       s << "\tpersistent = " << value.persistent << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkSurfaceCapabilities2KHR& value)
+std::ostream& operator<< (std::ostream& s, const VkImportMemoryFdInfoKHR& value)
 {
-       s << "VkSurfaceCapabilities2KHR = {\n";
+       s << "VkImportMemoryFdInfoKHR = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tsurfaceCapabilities = " << value.surfaceCapabilities << '\n';
+       s << "\thandleType = " << value.handleType << '\n';
+       s << "\tfd = " << value.fd << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkSurfaceFormat2KHR& value)
+std::ostream& operator<< (std::ostream& s, const VkMemoryFdPropertiesKHR& value)
 {
-       s << "VkSurfaceFormat2KHR = {\n";
+       s << "VkMemoryFdPropertiesKHR = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tsurfaceFormat = " << value.surfaceFormat << '\n';
+       s << "\tmemoryTypeBits = " << value.memoryTypeBits << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkDisplayProperties2KHR& value)
+std::ostream& operator<< (std::ostream& s, const VkMemoryGetFdInfoKHR& value)
 {
-       s << "VkDisplayProperties2KHR = {\n";
+       s << "VkMemoryGetFdInfoKHR = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tdisplayProperties = " << value.displayProperties << '\n';
+       s << "\tmemory = " << value.memory << '\n';
+       s << "\thandleType = " << value.handleType << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkDisplayPlaneProperties2KHR& value)
+std::ostream& operator<< (std::ostream& s, const VkImportSemaphoreFdInfoKHR& value)
 {
-       s << "VkDisplayPlaneProperties2KHR = {\n";
+       s << "VkImportSemaphoreFdInfoKHR = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tdisplayPlaneProperties = " << value.displayPlaneProperties << '\n';
+       s << "\tsemaphore = " << value.semaphore << '\n';
+       s << "\tflags = " << getSemaphoreImportFlagsStr(value.flags) << '\n';
+       s << "\thandleType = " << value.handleType << '\n';
+       s << "\tfd = " << value.fd << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkDisplayModeProperties2KHR& value)
+std::ostream& operator<< (std::ostream& s, const VkSemaphoreGetFdInfoKHR& value)
 {
-       s << "VkDisplayModeProperties2KHR = {\n";
+       s << "VkSemaphoreGetFdInfoKHR = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tdisplayModeProperties = " << value.displayModeProperties << '\n';
+       s << "\tsemaphore = " << value.semaphore << '\n';
+       s << "\thandleType = " << value.handleType << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkDisplayPlaneInfo2KHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePushDescriptorPropertiesKHR& value)
 {
-       s << "VkDisplayPlaneInfo2KHR = {\n";
+       s << "VkPhysicalDevicePushDescriptorPropertiesKHR = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tmode = " << value.mode << '\n';
-       s << "\tplaneIndex = " << value.planeIndex << '\n';
+       s << "\tmaxPushDescriptors = " << value.maxPushDescriptors << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkDisplayPlaneCapabilities2KHR& value)
+std::ostream& operator<< (std::ostream& s, const VkRectLayerKHR& value)
 {
-       s << "VkDisplayPlaneCapabilities2KHR = {\n";
-       s << "\tsType = " << value.sType << '\n';
-       s << "\tpNext = " << value.pNext << '\n';
-       s << "\tcapabilities = " << value.capabilities << '\n';
+       s << "VkRectLayerKHR = {\n";
+       s << "\toffset = " << value.offset << '\n';
+       s << "\textent = " << value.extent << '\n';
+       s << "\tlayer = " << value.layer << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkImageFormatListCreateInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPresentRegionKHR& value)
 {
-       s << "VkImageFormatListCreateInfoKHR = {\n";
-       s << "\tsType = " << value.sType << '\n';
-       s << "\tpNext = " << value.pNext << '\n';
-       s << "\tviewFormatCount = " << value.viewFormatCount << '\n';
-       s << "\tpViewFormats = " << value.pViewFormats << '\n';
+       s << "VkPresentRegionKHR = {\n";
+       s << "\trectangleCount = " << value.rectangleCount << '\n';
+       s << "\tpRectangles = " << value.pRectangles << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPresentRegionsKHR& value)
 {
-       s << "VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = {\n";
+       s << "VkPresentRegionsKHR = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tshaderSubgroupExtendedTypes = " << value.shaderSubgroupExtendedTypes << '\n';
+       s << "\tswapchainCount = " << value.swapchainCount << '\n';
+       s << "\tpRegions = " << value.pRegions << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDevice8BitStorageFeaturesKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkSharedPresentSurfaceCapabilitiesKHR& value)
 {
-       s << "VkPhysicalDevice8BitStorageFeaturesKHR = {\n";
+       s << "VkSharedPresentSurfaceCapabilitiesKHR = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tstorageBuffer8BitAccess = " << value.storageBuffer8BitAccess << '\n';
-       s << "\tuniformAndStorageBuffer8BitAccess = " << value.uniformAndStorageBuffer8BitAccess << '\n';
-       s << "\tstoragePushConstant8 = " << value.storagePushConstant8 << '\n';
+       s << "\tsharedPresentSupportedUsageFlags = " << getImageUsageFlagsStr(value.sharedPresentSupportedUsageFlags) << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkImportFenceFdInfoKHR& value)
 {
-       s << "VkPhysicalDeviceShaderAtomicInt64FeaturesKHR = {\n";
+       s << "VkImportFenceFdInfoKHR = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tshaderBufferInt64Atomics = " << value.shaderBufferInt64Atomics << '\n';
-       s << "\tshaderSharedInt64Atomics = " << value.shaderSharedInt64Atomics << '\n';
+       s << "\tfence = " << value.fence << '\n';
+       s << "\tflags = " << getFenceImportFlagsStr(value.flags) << '\n';
+       s << "\thandleType = " << value.handleType << '\n';
+       s << "\tfd = " << value.fd << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderClockFeaturesKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkFenceGetFdInfoKHR& value)
 {
-       s << "VkPhysicalDeviceShaderClockFeaturesKHR = {\n";
+       s << "VkFenceGetFdInfoKHR = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tshaderSubgroupClock = " << value.shaderSubgroupClock << '\n';
-       s << "\tshaderDeviceClock = " << value.shaderDeviceClock << '\n';
+       s << "\tfence = " << value.fence << '\n';
+       s << "\thandleType = " << value.handleType << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkConformanceVersionKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePerformanceQueryFeaturesKHR& value)
 {
-       s << "VkConformanceVersionKHR = {\n";
-       s << "\tmajor = " << value.major << '\n';
-       s << "\tminor = " << value.minor << '\n';
-       s << "\tsubminor = " << value.subminor << '\n';
-       s << "\tpatch = " << value.patch << '\n';
+       s << "VkPhysicalDevicePerformanceQueryFeaturesKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tperformanceCounterQueryPools = " << value.performanceCounterQueryPools << '\n';
+       s << "\tperformanceCounterMultipleQueryPools = " << value.performanceCounterMultipleQueryPools << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDriverPropertiesKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePerformanceQueryPropertiesKHR& value)
 {
-       s << "VkPhysicalDeviceDriverPropertiesKHR = {\n";
+       s << "VkPhysicalDevicePerformanceQueryPropertiesKHR = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tdriverID = " << value.driverID << '\n';
-       s << "\tdriverName = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.driverName)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.driverName))) << '\n';
-       s << "\tdriverInfo = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.driverInfo)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.driverInfo))) << '\n';
-       s << "\tconformanceVersion = " << value.conformanceVersion << '\n';
+       s << "\tallowCommandBufferQueryCopies = " << value.allowCommandBufferQueryCopies << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFloatControlsPropertiesKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPerformanceCounterKHR& value)
 {
-       s << "VkPhysicalDeviceFloatControlsPropertiesKHR = {\n";
+       s << "VkPerformanceCounterKHR = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tdenormBehaviorIndependence = " << value.denormBehaviorIndependence << '\n';
-       s << "\troundingModeIndependence = " << value.roundingModeIndependence << '\n';
-       s << "\tshaderSignedZeroInfNanPreserveFloat16 = " << value.shaderSignedZeroInfNanPreserveFloat16 << '\n';
-       s << "\tshaderSignedZeroInfNanPreserveFloat32 = " << value.shaderSignedZeroInfNanPreserveFloat32 << '\n';
-       s << "\tshaderSignedZeroInfNanPreserveFloat64 = " << value.shaderSignedZeroInfNanPreserveFloat64 << '\n';
-       s << "\tshaderDenormPreserveFloat16 = " << value.shaderDenormPreserveFloat16 << '\n';
-       s << "\tshaderDenormPreserveFloat32 = " << value.shaderDenormPreserveFloat32 << '\n';
-       s << "\tshaderDenormPreserveFloat64 = " << value.shaderDenormPreserveFloat64 << '\n';
-       s << "\tshaderDenormFlushToZeroFloat16 = " << value.shaderDenormFlushToZeroFloat16 << '\n';
-       s << "\tshaderDenormFlushToZeroFloat32 = " << value.shaderDenormFlushToZeroFloat32 << '\n';
-       s << "\tshaderDenormFlushToZeroFloat64 = " << value.shaderDenormFlushToZeroFloat64 << '\n';
-       s << "\tshaderRoundingModeRTEFloat16 = " << value.shaderRoundingModeRTEFloat16 << '\n';
-       s << "\tshaderRoundingModeRTEFloat32 = " << value.shaderRoundingModeRTEFloat32 << '\n';
-       s << "\tshaderRoundingModeRTEFloat64 = " << value.shaderRoundingModeRTEFloat64 << '\n';
-       s << "\tshaderRoundingModeRTZFloat16 = " << value.shaderRoundingModeRTZFloat16 << '\n';
-       s << "\tshaderRoundingModeRTZFloat32 = " << value.shaderRoundingModeRTZFloat32 << '\n';
-       s << "\tshaderRoundingModeRTZFloat64 = " << value.shaderRoundingModeRTZFloat64 << '\n';
+       s << "\tunit = " << value.unit << '\n';
+       s << "\tscope = " << value.scope << '\n';
+       s << "\tstorage = " << value.storage << '\n';
+       s << "\tuuid = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<deUint8>(DE_ARRAY_BEGIN(value.uuid)), tcu::Format::HexIterator<deUint8>(DE_ARRAY_END(value.uuid))) << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkSubpassDescriptionDepthStencilResolveKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPerformanceCounterDescriptionKHR& value)
 {
-       s << "VkSubpassDescriptionDepthStencilResolveKHR = {\n";
+       s << "VkPerformanceCounterDescriptionKHR = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tdepthResolveMode = " << value.depthResolveMode << '\n';
-       s << "\tstencilResolveMode = " << value.stencilResolveMode << '\n';
-       s << "\tpDepthStencilResolveAttachment = " << value.pDepthStencilResolveAttachment << '\n';
+       s << "\tflags = " << getPerformanceCounterDescriptionFlagsKHRStr(value.flags) << '\n';
+       s << "\tname = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.name)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.name))) << '\n';
+       s << "\tcategory = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.category)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.category))) << '\n';
+       s << "\tdescription = " << (const char*)value.description << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDepthStencilResolvePropertiesKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkQueryPoolPerformanceCreateInfoKHR& value)
 {
-       s << "VkPhysicalDeviceDepthStencilResolvePropertiesKHR = {\n";
+       s << "VkQueryPoolPerformanceCreateInfoKHR = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tsupportedDepthResolveModes = " << getResolveModeFlagsKHRStr(value.supportedDepthResolveModes) << '\n';
-       s << "\tsupportedStencilResolveModes = " << getResolveModeFlagsKHRStr(value.supportedStencilResolveModes) << '\n';
-       s << "\tindependentResolveNone = " << value.independentResolveNone << '\n';
-       s << "\tindependentResolve = " << value.independentResolve << '\n';
+       s << "\tqueueFamilyIndex = " << value.queueFamilyIndex << '\n';
+       s << "\tcounterIndexCount = " << value.counterIndexCount << '\n';
+       s << "\tpCounterIndices = " << value.pCounterIndices << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceTimelineSemaphoreFeaturesKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPerformanceCounterResultKHR& value)
+{
+       s << "VkPerformanceCounterResultKHR = {\n";
+       s << "\tint32 = " << value.int32 << '\n';
+       s << "\tint64 = " << value.int64 << '\n';
+       s << "\tuint32 = " << value.uint32 << '\n';
+       s << "\tuint64 = " << value.uint64 << '\n';
+       s << "\tfloat32 = " << value.float32 << '\n';
+       s << "\tfloat64 = " << value.float64 << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkAcquireProfilingLockInfoKHR& value)
 {
-       s << "VkPhysicalDeviceTimelineSemaphoreFeaturesKHR = {\n";
+       s << "VkAcquireProfilingLockInfoKHR = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\ttimelineSemaphore = " << value.timelineSemaphore << '\n';
+       s << "\tflags = " << getAcquireProfilingLockFlagsKHRStr(value.flags) << '\n';
+       s << "\ttimeout = " << value.timeout << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceTimelineSemaphorePropertiesKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPerformanceQuerySubmitInfoKHR& value)
 {
-       s << "VkPhysicalDeviceTimelineSemaphorePropertiesKHR = {\n";
+       s << "VkPerformanceQuerySubmitInfoKHR = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tmaxTimelineSemaphoreValueDifference = " << value.maxTimelineSemaphoreValueDifference << '\n';
+       s << "\tcounterPassIndex = " << value.counterPassIndex << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkSemaphoreTypeCreateInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSurfaceInfo2KHR& value)
 {
-       s << "VkSemaphoreTypeCreateInfoKHR = {\n";
+       s << "VkPhysicalDeviceSurfaceInfo2KHR = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tsemaphoreType = " << value.semaphoreType << '\n';
-       s << "\tinitialValue = " << value.initialValue << '\n';
+       s << "\tsurface = " << value.surface << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkTimelineSemaphoreSubmitInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkSurfaceCapabilities2KHR& value)
 {
-       s << "VkTimelineSemaphoreSubmitInfoKHR = {\n";
+       s << "VkSurfaceCapabilities2KHR = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\twaitSemaphoreValueCount = " << value.waitSemaphoreValueCount << '\n';
-       s << "\tpWaitSemaphoreValues = " << value.pWaitSemaphoreValues << '\n';
-       s << "\tsignalSemaphoreValueCount = " << value.signalSemaphoreValueCount << '\n';
-       s << "\tpSignalSemaphoreValues = " << value.pSignalSemaphoreValues << '\n';
+       s << "\tsurfaceCapabilities = " << value.surfaceCapabilities << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkSemaphoreWaitInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkSurfaceFormat2KHR& value)
 {
-       s << "VkSemaphoreWaitInfoKHR = {\n";
+       s << "VkSurfaceFormat2KHR = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tflags = " << getSemaphoreWaitFlagsKHRStr(value.flags) << '\n';
-       s << "\tsemaphoreCount = " << value.semaphoreCount << '\n';
-       s << "\tpSemaphores = " << value.pSemaphores << '\n';
-       s << "\tpValues = " << value.pValues << '\n';
+       s << "\tsurfaceFormat = " << value.surfaceFormat << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkSemaphoreSignalInfoKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkDisplayProperties2KHR& value)
 {
-       s << "VkSemaphoreSignalInfoKHR = {\n";
+       s << "VkDisplayProperties2KHR = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tsemaphore = " << value.semaphore << '\n';
-       s << "\tvalue = " << value.value << '\n';
+       s << "\tdisplayProperties = " << value.displayProperties << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkDisplayPlaneProperties2KHR& value)
 {
-       s << "VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = {\n";
+       s << "VkDisplayPlaneProperties2KHR = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tvulkanMemoryModel = " << value.vulkanMemoryModel << '\n';
-       s << "\tvulkanMemoryModelDeviceScope = " << value.vulkanMemoryModelDeviceScope << '\n';
-       s << "\tvulkanMemoryModelAvailabilityVisibilityChains = " << value.vulkanMemoryModelAvailabilityVisibilityChains << '\n';
+       s << "\tdisplayPlaneProperties = " << value.displayPlaneProperties << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkSurfaceProtectedCapabilitiesKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkDisplayModeProperties2KHR& value)
 {
-       s << "VkSurfaceProtectedCapabilitiesKHR = {\n";
+       s << "VkDisplayModeProperties2KHR = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tsupportsProtected = " << value.supportsProtected << '\n';
+       s << "\tdisplayModeProperties = " << value.displayModeProperties << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkDisplayPlaneInfo2KHR& value)
 {
-       s << "VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = {\n";
+       s << "VkDisplayPlaneInfo2KHR = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tseparateDepthStencilLayouts = " << value.separateDepthStencilLayouts << '\n';
+       s << "\tmode = " << value.mode << '\n';
+       s << "\tplaneIndex = " << value.planeIndex << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkAttachmentReferenceStencilLayoutKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkDisplayPlaneCapabilities2KHR& value)
 {
-       s << "VkAttachmentReferenceStencilLayoutKHR = {\n";
+       s << "VkDisplayPlaneCapabilities2KHR = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tstencilLayout = " << value.stencilLayout << '\n';
+       s << "\tcapabilities = " << value.capabilities << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkAttachmentDescriptionStencilLayoutKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderClockFeaturesKHR& value)
 {
-       s << "VkAttachmentDescriptionStencilLayoutKHR = {\n";
+       s << "VkPhysicalDeviceShaderClockFeaturesKHR = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tstencilInitialLayout = " << value.stencilInitialLayout << '\n';
-       s << "\tstencilFinalLayout = " << value.stencilFinalLayout << '\n';
+       s << "\tshaderSubgroupClock = " << value.shaderSubgroupClock << '\n';
+       s << "\tshaderDeviceClock = " << value.shaderDeviceClock << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR& value)
+std::ostream& operator<< (std::ostream& s, const VkSurfaceProtectedCapabilitiesKHR& value)
 {
-       s << "VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = {\n";
+       s << "VkSurfaceProtectedCapabilitiesKHR = {\n";
        s << "\tsType = " << value.sType << '\n';
        s << "\tpNext = " << value.pNext << '\n';
-       s << "\tuniformBufferStandardLayout = " << value.uniformBufferStandardLayout << '\n';
+       s << "\tsupportsProtected = " << value.supportsProtected << '\n';
        s << '}';
        return s;
 }
@@ -7496,27 +7884,6 @@ std::ostream& operator<< (std::ostream& s, const VkDebugUtilsMessengerCreateInfo
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkSamplerReductionModeCreateInfoEXT& value)
-{
-       s << "VkSamplerReductionModeCreateInfoEXT = {\n";
-       s << "\tsType = " << value.sType << '\n';
-       s << "\tpNext = " << value.pNext << '\n';
-       s << "\treductionMode = " << value.reductionMode << '\n';
-       s << '}';
-       return s;
-}
-
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT& value)
-{
-       s << "VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = {\n";
-       s << "\tsType = " << value.sType << '\n';
-       s << "\tpNext = " << value.pNext << '\n';
-       s << "\tfilterMinmaxSingleComponentFormats = " << value.filterMinmaxSingleComponentFormats << '\n';
-       s << "\tfilterMinmaxImageComponentMapping = " << value.filterMinmaxImageComponentMapping << '\n';
-       s << '}';
-       return s;
-}
-
 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceInlineUniformBlockFeaturesEXT& value)
 {
        s << "VkPhysicalDeviceInlineUniformBlockFeaturesEXT = {\n";
@@ -7824,99 +8191,6 @@ std::ostream& operator<< (std::ostream& s, const VkShaderModuleValidationCacheCr
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT& value)
-{
-       s << "VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = {\n";
-       s << "\tsType = " << value.sType << '\n';
-       s << "\tpNext = " << value.pNext << '\n';
-       s << "\tbindingCount = " << value.bindingCount << '\n';
-       s << "\tpBindingFlags = " << value.pBindingFlags << '\n';
-       s << '}';
-       return s;
-}
-
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDescriptorIndexingFeaturesEXT& value)
-{
-       s << "VkPhysicalDeviceDescriptorIndexingFeaturesEXT = {\n";
-       s << "\tsType = " << value.sType << '\n';
-       s << "\tpNext = " << value.pNext << '\n';
-       s << "\tshaderInputAttachmentArrayDynamicIndexing = " << value.shaderInputAttachmentArrayDynamicIndexing << '\n';
-       s << "\tshaderUniformTexelBufferArrayDynamicIndexing = " << value.shaderUniformTexelBufferArrayDynamicIndexing << '\n';
-       s << "\tshaderStorageTexelBufferArrayDynamicIndexing = " << value.shaderStorageTexelBufferArrayDynamicIndexing << '\n';
-       s << "\tshaderUniformBufferArrayNonUniformIndexing = " << value.shaderUniformBufferArrayNonUniformIndexing << '\n';
-       s << "\tshaderSampledImageArrayNonUniformIndexing = " << value.shaderSampledImageArrayNonUniformIndexing << '\n';
-       s << "\tshaderStorageBufferArrayNonUniformIndexing = " << value.shaderStorageBufferArrayNonUniformIndexing << '\n';
-       s << "\tshaderStorageImageArrayNonUniformIndexing = " << value.shaderStorageImageArrayNonUniformIndexing << '\n';
-       s << "\tshaderInputAttachmentArrayNonUniformIndexing = " << value.shaderInputAttachmentArrayNonUniformIndexing << '\n';
-       s << "\tshaderUniformTexelBufferArrayNonUniformIndexing = " << value.shaderUniformTexelBufferArrayNonUniformIndexing << '\n';
-       s << "\tshaderStorageTexelBufferArrayNonUniformIndexing = " << value.shaderStorageTexelBufferArrayNonUniformIndexing << '\n';
-       s << "\tdescriptorBindingUniformBufferUpdateAfterBind = " << value.descriptorBindingUniformBufferUpdateAfterBind << '\n';
-       s << "\tdescriptorBindingSampledImageUpdateAfterBind = " << value.descriptorBindingSampledImageUpdateAfterBind << '\n';
-       s << "\tdescriptorBindingStorageImageUpdateAfterBind = " << value.descriptorBindingStorageImageUpdateAfterBind << '\n';
-       s << "\tdescriptorBindingStorageBufferUpdateAfterBind = " << value.descriptorBindingStorageBufferUpdateAfterBind << '\n';
-       s << "\tdescriptorBindingUniformTexelBufferUpdateAfterBind = " << value.descriptorBindingUniformTexelBufferUpdateAfterBind << '\n';
-       s << "\tdescriptorBindingStorageTexelBufferUpdateAfterBind = " << value.descriptorBindingStorageTexelBufferUpdateAfterBind << '\n';
-       s << "\tdescriptorBindingUpdateUnusedWhilePending = " << value.descriptorBindingUpdateUnusedWhilePending << '\n';
-       s << "\tdescriptorBindingPartiallyBound = " << value.descriptorBindingPartiallyBound << '\n';
-       s << "\tdescriptorBindingVariableDescriptorCount = " << value.descriptorBindingVariableDescriptorCount << '\n';
-       s << "\truntimeDescriptorArray = " << value.runtimeDescriptorArray << '\n';
-       s << '}';
-       return s;
-}
-
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDescriptorIndexingPropertiesEXT& value)
-{
-       s << "VkPhysicalDeviceDescriptorIndexingPropertiesEXT = {\n";
-       s << "\tsType = " << value.sType << '\n';
-       s << "\tpNext = " << value.pNext << '\n';
-       s << "\tmaxUpdateAfterBindDescriptorsInAllPools = " << value.maxUpdateAfterBindDescriptorsInAllPools << '\n';
-       s << "\tshaderUniformBufferArrayNonUniformIndexingNative = " << value.shaderUniformBufferArrayNonUniformIndexingNative << '\n';
-       s << "\tshaderSampledImageArrayNonUniformIndexingNative = " << value.shaderSampledImageArrayNonUniformIndexingNative << '\n';
-       s << "\tshaderStorageBufferArrayNonUniformIndexingNative = " << value.shaderStorageBufferArrayNonUniformIndexingNative << '\n';
-       s << "\tshaderStorageImageArrayNonUniformIndexingNative = " << value.shaderStorageImageArrayNonUniformIndexingNative << '\n';
-       s << "\tshaderInputAttachmentArrayNonUniformIndexingNative = " << value.shaderInputAttachmentArrayNonUniformIndexingNative << '\n';
-       s << "\trobustBufferAccessUpdateAfterBind = " << value.robustBufferAccessUpdateAfterBind << '\n';
-       s << "\tquadDivergentImplicitLod = " << value.quadDivergentImplicitLod << '\n';
-       s << "\tmaxPerStageDescriptorUpdateAfterBindSamplers = " << value.maxPerStageDescriptorUpdateAfterBindSamplers << '\n';
-       s << "\tmaxPerStageDescriptorUpdateAfterBindUniformBuffers = " << value.maxPerStageDescriptorUpdateAfterBindUniformBuffers << '\n';
-       s << "\tmaxPerStageDescriptorUpdateAfterBindStorageBuffers = " << value.maxPerStageDescriptorUpdateAfterBindStorageBuffers << '\n';
-       s << "\tmaxPerStageDescriptorUpdateAfterBindSampledImages = " << value.maxPerStageDescriptorUpdateAfterBindSampledImages << '\n';
-       s << "\tmaxPerStageDescriptorUpdateAfterBindStorageImages = " << value.maxPerStageDescriptorUpdateAfterBindStorageImages << '\n';
-       s << "\tmaxPerStageDescriptorUpdateAfterBindInputAttachments = " << value.maxPerStageDescriptorUpdateAfterBindInputAttachments << '\n';
-       s << "\tmaxPerStageUpdateAfterBindResources = " << value.maxPerStageUpdateAfterBindResources << '\n';
-       s << "\tmaxDescriptorSetUpdateAfterBindSamplers = " << value.maxDescriptorSetUpdateAfterBindSamplers << '\n';
-       s << "\tmaxDescriptorSetUpdateAfterBindUniformBuffers = " << value.maxDescriptorSetUpdateAfterBindUniformBuffers << '\n';
-       s << "\tmaxDescriptorSetUpdateAfterBindUniformBuffersDynamic = " << value.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic << '\n';
-       s << "\tmaxDescriptorSetUpdateAfterBindStorageBuffers = " << value.maxDescriptorSetUpdateAfterBindStorageBuffers << '\n';
-       s << "\tmaxDescriptorSetUpdateAfterBindStorageBuffersDynamic = " << value.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic << '\n';
-       s << "\tmaxDescriptorSetUpdateAfterBindSampledImages = " << value.maxDescriptorSetUpdateAfterBindSampledImages << '\n';
-       s << "\tmaxDescriptorSetUpdateAfterBindStorageImages = " << value.maxDescriptorSetUpdateAfterBindStorageImages << '\n';
-       s << "\tmaxDescriptorSetUpdateAfterBindInputAttachments = " << value.maxDescriptorSetUpdateAfterBindInputAttachments << '\n';
-       s << '}';
-       return s;
-}
-
-std::ostream& operator<< (std::ostream& s, const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT& value)
-{
-       s << "VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = {\n";
-       s << "\tsType = " << value.sType << '\n';
-       s << "\tpNext = " << value.pNext << '\n';
-       s << "\tdescriptorSetCount = " << value.descriptorSetCount << '\n';
-       s << "\tpDescriptorCounts = " << value.pDescriptorCounts << '\n';
-       s << '}';
-       return s;
-}
-
-std::ostream& operator<< (std::ostream& s, const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT& value)
-{
-       s << "VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = {\n";
-       s << "\tsType = " << value.sType << '\n';
-       s << "\tpNext = " << value.pNext << '\n';
-       s << "\tmaxVariableDescriptorCount = " << value.maxVariableDescriptorCount << '\n';
-       s << '}';
-       return s;
-}
-
 std::ostream& operator<< (std::ostream& s, const VkShadingRatePaletteNV& value)
 {
        s << "VkShadingRatePaletteNV = {\n";
@@ -8630,16 +8904,6 @@ std::ostream& operator<< (std::ostream& s, const VkRenderPassFragmentDensityMapC
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT& value)
-{
-       s << "VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = {\n";
-       s << "\tsType = " << value.sType << '\n';
-       s << "\tpNext = " << value.pNext << '\n';
-       s << "\tscalarBlockLayout = " << value.scalarBlockLayout << '\n';
-       s << '}';
-       return s;
-}
-
 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSubgroupSizeControlFeaturesEXT& value)
 {
        s << "VkPhysicalDeviceSubgroupSizeControlFeaturesEXT = {\n";
@@ -8748,16 +9012,6 @@ std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceBufferDeviceAdd
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkBufferDeviceAddressInfoEXT& value)
-{
-       s << "VkBufferDeviceAddressInfoEXT = {\n";
-       s << "\tsType = " << value.sType << '\n';
-       s << "\tpNext = " << value.pNext << '\n';
-       s << "\tbuffer = " << value.buffer << '\n';
-       s << '}';
-       return s;
-}
-
 std::ostream& operator<< (std::ostream& s, const VkBufferDeviceAddressCreateInfoEXT& value)
 {
        s << "VkBufferDeviceAddressCreateInfoEXT = {\n";
@@ -8768,16 +9022,6 @@ std::ostream& operator<< (std::ostream& s, const VkBufferDeviceAddressCreateInfo
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkImageStencilUsageCreateInfoEXT& value)
-{
-       s << "VkImageStencilUsageCreateInfoEXT = {\n";
-       s << "\tsType = " << value.sType << '\n';
-       s << "\tpNext = " << value.pNext << '\n';
-       s << "\tstencilUsage = " << getImageUsageFlagsStr(value.stencilUsage) << '\n';
-       s << '}';
-       return s;
-}
-
 std::ostream& operator<< (std::ostream& s, const VkValidationFeaturesEXT& value)
 {
        s << "VkValidationFeaturesEXT = {\n";
@@ -8933,16 +9177,6 @@ std::ostream& operator<< (std::ostream& s, const VkPipelineRasterizationLineStat
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceHostQueryResetFeaturesEXT& value)
-{
-       s << "VkPhysicalDeviceHostQueryResetFeaturesEXT = {\n";
-       s << "\tsType = " << value.sType << '\n';
-       s << "\tpNext = " << value.pNext << '\n';
-       s << "\thostQueryReset = " << value.hostQueryReset << '\n';
-       s << '}';
-       return s;
-}
-
 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceIndexTypeUint8FeaturesEXT& value)
 {
        s << "VkPhysicalDeviceIndexTypeUint8FeaturesEXT = {\n";
index 2262162..24021c9 100644 (file)
@@ -1747,6 +1747,614 @@ struct VkPhysicalDeviceShaderDrawParametersFeatures
        VkBool32                shaderDrawParameters;
 };
 
+struct VkPhysicalDeviceVulkan11Features
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                storageBuffer16BitAccess;
+       VkBool32                uniformAndStorageBuffer16BitAccess;
+       VkBool32                storagePushConstant16;
+       VkBool32                storageInputOutput16;
+       VkBool32                multiview;
+       VkBool32                multiviewGeometryShader;
+       VkBool32                multiviewTessellationShader;
+       VkBool32                variablePointersStorageBuffer;
+       VkBool32                variablePointers;
+       VkBool32                protectedMemory;
+       VkBool32                samplerYcbcrConversion;
+       VkBool32                shaderDrawParameters;
+};
+
+struct VkPhysicalDeviceVulkan11Properties
+{
+       VkStructureType                 sType;
+       void*                                   pNext;
+       deUint8                                 deviceUUID[VK_UUID_SIZE];
+       deUint8                                 driverUUID[VK_UUID_SIZE];
+       deUint8                                 deviceLUID[VK_LUID_SIZE];
+       deUint32                                deviceNodeMask;
+       VkBool32                                deviceLUIDValid;
+       deUint32                                subgroupSize;
+       VkShaderStageFlags              subgroupSupportedStages;
+       VkSubgroupFeatureFlags  subgroupSupportedOperations;
+       VkBool32                                subgroupQuadOperationsInAllStages;
+       VkPointClippingBehavior pointClippingBehavior;
+       deUint32                                maxMultiviewViewCount;
+       deUint32                                maxMultiviewInstanceIndex;
+       VkBool32                                protectedNoFault;
+       deUint32                                maxPerSetDescriptors;
+       VkDeviceSize                    maxMemoryAllocationSize;
+};
+
+struct VkPhysicalDeviceVulkan12Features
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                samplerMirrorClampToEdge;
+       VkBool32                drawIndirectCount;
+       VkBool32                storageBuffer8BitAccess;
+       VkBool32                uniformAndStorageBuffer8BitAccess;
+       VkBool32                storagePushConstant8;
+       VkBool32                shaderBufferInt64Atomics;
+       VkBool32                shaderSharedInt64Atomics;
+       VkBool32                shaderFloat16;
+       VkBool32                shaderInt8;
+       VkBool32                descriptorIndexing;
+       VkBool32                shaderInputAttachmentArrayDynamicIndexing;
+       VkBool32                shaderUniformTexelBufferArrayDynamicIndexing;
+       VkBool32                shaderStorageTexelBufferArrayDynamicIndexing;
+       VkBool32                shaderUniformBufferArrayNonUniformIndexing;
+       VkBool32                shaderSampledImageArrayNonUniformIndexing;
+       VkBool32                shaderStorageBufferArrayNonUniformIndexing;
+       VkBool32                shaderStorageImageArrayNonUniformIndexing;
+       VkBool32                shaderInputAttachmentArrayNonUniformIndexing;
+       VkBool32                shaderUniformTexelBufferArrayNonUniformIndexing;
+       VkBool32                shaderStorageTexelBufferArrayNonUniformIndexing;
+       VkBool32                descriptorBindingUniformBufferUpdateAfterBind;
+       VkBool32                descriptorBindingSampledImageUpdateAfterBind;
+       VkBool32                descriptorBindingStorageImageUpdateAfterBind;
+       VkBool32                descriptorBindingStorageBufferUpdateAfterBind;
+       VkBool32                descriptorBindingUniformTexelBufferUpdateAfterBind;
+       VkBool32                descriptorBindingStorageTexelBufferUpdateAfterBind;
+       VkBool32                descriptorBindingUpdateUnusedWhilePending;
+       VkBool32                descriptorBindingPartiallyBound;
+       VkBool32                descriptorBindingVariableDescriptorCount;
+       VkBool32                runtimeDescriptorArray;
+       VkBool32                samplerFilterMinmax;
+       VkBool32                scalarBlockLayout;
+       VkBool32                imagelessFramebuffer;
+       VkBool32                uniformBufferStandardLayout;
+       VkBool32                shaderSubgroupExtendedTypes;
+       VkBool32                separateDepthStencilLayouts;
+       VkBool32                hostQueryReset;
+       VkBool32                timelineSemaphore;
+       VkBool32                bufferDeviceAddress;
+       VkBool32                bufferDeviceAddressCaptureReplay;
+       VkBool32                bufferDeviceAddressMultiDevice;
+       VkBool32                vulkanMemoryModel;
+       VkBool32                vulkanMemoryModelDeviceScope;
+       VkBool32                vulkanMemoryModelAvailabilityVisibilityChains;
+       VkBool32                shaderOutputViewportIndex;
+       VkBool32                shaderOutputLayer;
+       VkBool32                subgroupBroadcastDynamicId;
+};
+
+struct VkConformanceVersion
+{
+       deUint8 major;
+       deUint8 minor;
+       deUint8 subminor;
+       deUint8 patch;
+};
+
+struct VkPhysicalDeviceVulkan12Properties
+{
+       VkStructureType                                         sType;
+       void*                                                           pNext;
+       VkDriverId                                                      driverID;
+       char                                                            driverName[VK_MAX_DRIVER_NAME_SIZE];
+       char                                                            driverInfo[VK_MAX_DRIVER_INFO_SIZE];
+       VkConformanceVersion                            conformanceVersion;
+       VkShaderFloatControlsIndependence       denormBehaviorIndependence;
+       VkShaderFloatControlsIndependence       roundingModeIndependence;
+       VkBool32                                                        shaderSignedZeroInfNanPreserveFloat16;
+       VkBool32                                                        shaderSignedZeroInfNanPreserveFloat32;
+       VkBool32                                                        shaderSignedZeroInfNanPreserveFloat64;
+       VkBool32                                                        shaderDenormPreserveFloat16;
+       VkBool32                                                        shaderDenormPreserveFloat32;
+       VkBool32                                                        shaderDenormPreserveFloat64;
+       VkBool32                                                        shaderDenormFlushToZeroFloat16;
+       VkBool32                                                        shaderDenormFlushToZeroFloat32;
+       VkBool32                                                        shaderDenormFlushToZeroFloat64;
+       VkBool32                                                        shaderRoundingModeRTEFloat16;
+       VkBool32                                                        shaderRoundingModeRTEFloat32;
+       VkBool32                                                        shaderRoundingModeRTEFloat64;
+       VkBool32                                                        shaderRoundingModeRTZFloat16;
+       VkBool32                                                        shaderRoundingModeRTZFloat32;
+       VkBool32                                                        shaderRoundingModeRTZFloat64;
+       deUint32                                                        maxUpdateAfterBindDescriptorsInAllPools;
+       VkBool32                                                        shaderUniformBufferArrayNonUniformIndexingNative;
+       VkBool32                                                        shaderSampledImageArrayNonUniformIndexingNative;
+       VkBool32                                                        shaderStorageBufferArrayNonUniformIndexingNative;
+       VkBool32                                                        shaderStorageImageArrayNonUniformIndexingNative;
+       VkBool32                                                        shaderInputAttachmentArrayNonUniformIndexingNative;
+       VkBool32                                                        robustBufferAccessUpdateAfterBind;
+       VkBool32                                                        quadDivergentImplicitLod;
+       deUint32                                                        maxPerStageDescriptorUpdateAfterBindSamplers;
+       deUint32                                                        maxPerStageDescriptorUpdateAfterBindUniformBuffers;
+       deUint32                                                        maxPerStageDescriptorUpdateAfterBindStorageBuffers;
+       deUint32                                                        maxPerStageDescriptorUpdateAfterBindSampledImages;
+       deUint32                                                        maxPerStageDescriptorUpdateAfterBindStorageImages;
+       deUint32                                                        maxPerStageDescriptorUpdateAfterBindInputAttachments;
+       deUint32                                                        maxPerStageUpdateAfterBindResources;
+       deUint32                                                        maxDescriptorSetUpdateAfterBindSamplers;
+       deUint32                                                        maxDescriptorSetUpdateAfterBindUniformBuffers;
+       deUint32                                                        maxDescriptorSetUpdateAfterBindUniformBuffersDynamic;
+       deUint32                                                        maxDescriptorSetUpdateAfterBindStorageBuffers;
+       deUint32                                                        maxDescriptorSetUpdateAfterBindStorageBuffersDynamic;
+       deUint32                                                        maxDescriptorSetUpdateAfterBindSampledImages;
+       deUint32                                                        maxDescriptorSetUpdateAfterBindStorageImages;
+       deUint32                                                        maxDescriptorSetUpdateAfterBindInputAttachments;
+       VkResolveModeFlags                                      supportedDepthResolveModes;
+       VkResolveModeFlags                                      supportedStencilResolveModes;
+       VkBool32                                                        independentResolveNone;
+       VkBool32                                                        independentResolve;
+       VkBool32                                                        filterMinmaxSingleComponentFormats;
+       VkBool32                                                        filterMinmaxImageComponentMapping;
+       deUint64                                                        maxTimelineSemaphoreValueDifference;
+       VkSampleCountFlags                                      framebufferIntegerColorSampleCounts;
+};
+
+struct VkImageFormatListCreateInfo
+{
+       VkStructureType sType;
+       const void*             pNext;
+       deUint32                viewFormatCount;
+       const VkFormat* pViewFormats;
+};
+
+struct VkAttachmentDescription2
+{
+       VkStructureType                                 sType;
+       const void*                                             pNext;
+       VkAttachmentDescriptionFlags    flags;
+       VkFormat                                                format;
+       VkSampleCountFlagBits                   samples;
+       VkAttachmentLoadOp                              loadOp;
+       VkAttachmentStoreOp                             storeOp;
+       VkAttachmentLoadOp                              stencilLoadOp;
+       VkAttachmentStoreOp                             stencilStoreOp;
+       VkImageLayout                                   initialLayout;
+       VkImageLayout                                   finalLayout;
+};
+
+struct VkAttachmentReference2
+{
+       VkStructureType         sType;
+       const void*                     pNext;
+       deUint32                        attachment;
+       VkImageLayout           layout;
+       VkImageAspectFlags      aspectMask;
+};
+
+struct VkSubpassDescription2
+{
+       VkStructureType                                 sType;
+       const void*                                             pNext;
+       VkSubpassDescriptionFlags               flags;
+       VkPipelineBindPoint                             pipelineBindPoint;
+       deUint32                                                viewMask;
+       deUint32                                                inputAttachmentCount;
+       const VkAttachmentReference2*   pInputAttachments;
+       deUint32                                                colorAttachmentCount;
+       const VkAttachmentReference2*   pColorAttachments;
+       const VkAttachmentReference2*   pResolveAttachments;
+       const VkAttachmentReference2*   pDepthStencilAttachment;
+       deUint32                                                preserveAttachmentCount;
+       const deUint32*                                 pPreserveAttachments;
+};
+
+struct VkSubpassDependency2
+{
+       VkStructureType                 sType;
+       const void*                             pNext;
+       deUint32                                srcSubpass;
+       deUint32                                dstSubpass;
+       VkPipelineStageFlags    srcStageMask;
+       VkPipelineStageFlags    dstStageMask;
+       VkAccessFlags                   srcAccessMask;
+       VkAccessFlags                   dstAccessMask;
+       VkDependencyFlags               dependencyFlags;
+       deInt32                                 viewOffset;
+};
+
+struct VkRenderPassCreateInfo2
+{
+       VkStructureType                                 sType;
+       const void*                                             pNext;
+       VkRenderPassCreateFlags                 flags;
+       deUint32                                                attachmentCount;
+       const VkAttachmentDescription2* pAttachments;
+       deUint32                                                subpassCount;
+       const VkSubpassDescription2*    pSubpasses;
+       deUint32                                                dependencyCount;
+       const VkSubpassDependency2*             pDependencies;
+       deUint32                                                correlatedViewMaskCount;
+       const deUint32*                                 pCorrelatedViewMasks;
+};
+
+struct VkSubpassBeginInfo
+{
+       VkStructureType         sType;
+       const void*                     pNext;
+       VkSubpassContents       contents;
+};
+
+struct VkSubpassEndInfo
+{
+       VkStructureType sType;
+       const void*             pNext;
+};
+
+struct VkPhysicalDevice8BitStorageFeatures
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                storageBuffer8BitAccess;
+       VkBool32                uniformAndStorageBuffer8BitAccess;
+       VkBool32                storagePushConstant8;
+};
+
+struct VkPhysicalDeviceDriverProperties
+{
+       VkStructureType                 sType;
+       void*                                   pNext;
+       VkDriverId                              driverID;
+       char                                    driverName[VK_MAX_DRIVER_NAME_SIZE];
+       char                                    driverInfo[VK_MAX_DRIVER_INFO_SIZE];
+       VkConformanceVersion    conformanceVersion;
+};
+
+struct VkPhysicalDeviceShaderAtomicInt64Features
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                shaderBufferInt64Atomics;
+       VkBool32                shaderSharedInt64Atomics;
+};
+
+struct VkPhysicalDeviceShaderFloat16Int8Features
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                shaderFloat16;
+       VkBool32                shaderInt8;
+};
+
+struct VkPhysicalDeviceFloatControlsProperties
+{
+       VkStructureType                                         sType;
+       void*                                                           pNext;
+       VkShaderFloatControlsIndependence       denormBehaviorIndependence;
+       VkShaderFloatControlsIndependence       roundingModeIndependence;
+       VkBool32                                                        shaderSignedZeroInfNanPreserveFloat16;
+       VkBool32                                                        shaderSignedZeroInfNanPreserveFloat32;
+       VkBool32                                                        shaderSignedZeroInfNanPreserveFloat64;
+       VkBool32                                                        shaderDenormPreserveFloat16;
+       VkBool32                                                        shaderDenormPreserveFloat32;
+       VkBool32                                                        shaderDenormPreserveFloat64;
+       VkBool32                                                        shaderDenormFlushToZeroFloat16;
+       VkBool32                                                        shaderDenormFlushToZeroFloat32;
+       VkBool32                                                        shaderDenormFlushToZeroFloat64;
+       VkBool32                                                        shaderRoundingModeRTEFloat16;
+       VkBool32                                                        shaderRoundingModeRTEFloat32;
+       VkBool32                                                        shaderRoundingModeRTEFloat64;
+       VkBool32                                                        shaderRoundingModeRTZFloat16;
+       VkBool32                                                        shaderRoundingModeRTZFloat32;
+       VkBool32                                                        shaderRoundingModeRTZFloat64;
+};
+
+struct VkDescriptorSetLayoutBindingFlagsCreateInfo
+{
+       VkStructureType                                 sType;
+       const void*                                             pNext;
+       deUint32                                                bindingCount;
+       const VkDescriptorBindingFlags* pBindingFlags;
+};
+
+struct VkPhysicalDeviceDescriptorIndexingFeatures
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                shaderInputAttachmentArrayDynamicIndexing;
+       VkBool32                shaderUniformTexelBufferArrayDynamicIndexing;
+       VkBool32                shaderStorageTexelBufferArrayDynamicIndexing;
+       VkBool32                shaderUniformBufferArrayNonUniformIndexing;
+       VkBool32                shaderSampledImageArrayNonUniformIndexing;
+       VkBool32                shaderStorageBufferArrayNonUniformIndexing;
+       VkBool32                shaderStorageImageArrayNonUniformIndexing;
+       VkBool32                shaderInputAttachmentArrayNonUniformIndexing;
+       VkBool32                shaderUniformTexelBufferArrayNonUniformIndexing;
+       VkBool32                shaderStorageTexelBufferArrayNonUniformIndexing;
+       VkBool32                descriptorBindingUniformBufferUpdateAfterBind;
+       VkBool32                descriptorBindingSampledImageUpdateAfterBind;
+       VkBool32                descriptorBindingStorageImageUpdateAfterBind;
+       VkBool32                descriptorBindingStorageBufferUpdateAfterBind;
+       VkBool32                descriptorBindingUniformTexelBufferUpdateAfterBind;
+       VkBool32                descriptorBindingStorageTexelBufferUpdateAfterBind;
+       VkBool32                descriptorBindingUpdateUnusedWhilePending;
+       VkBool32                descriptorBindingPartiallyBound;
+       VkBool32                descriptorBindingVariableDescriptorCount;
+       VkBool32                runtimeDescriptorArray;
+};
+
+struct VkPhysicalDeviceDescriptorIndexingProperties
+{
+       VkStructureType sType;
+       void*                   pNext;
+       deUint32                maxUpdateAfterBindDescriptorsInAllPools;
+       VkBool32                shaderUniformBufferArrayNonUniformIndexingNative;
+       VkBool32                shaderSampledImageArrayNonUniformIndexingNative;
+       VkBool32                shaderStorageBufferArrayNonUniformIndexingNative;
+       VkBool32                shaderStorageImageArrayNonUniformIndexingNative;
+       VkBool32                shaderInputAttachmentArrayNonUniformIndexingNative;
+       VkBool32                robustBufferAccessUpdateAfterBind;
+       VkBool32                quadDivergentImplicitLod;
+       deUint32                maxPerStageDescriptorUpdateAfterBindSamplers;
+       deUint32                maxPerStageDescriptorUpdateAfterBindUniformBuffers;
+       deUint32                maxPerStageDescriptorUpdateAfterBindStorageBuffers;
+       deUint32                maxPerStageDescriptorUpdateAfterBindSampledImages;
+       deUint32                maxPerStageDescriptorUpdateAfterBindStorageImages;
+       deUint32                maxPerStageDescriptorUpdateAfterBindInputAttachments;
+       deUint32                maxPerStageUpdateAfterBindResources;
+       deUint32                maxDescriptorSetUpdateAfterBindSamplers;
+       deUint32                maxDescriptorSetUpdateAfterBindUniformBuffers;
+       deUint32                maxDescriptorSetUpdateAfterBindUniformBuffersDynamic;
+       deUint32                maxDescriptorSetUpdateAfterBindStorageBuffers;
+       deUint32                maxDescriptorSetUpdateAfterBindStorageBuffersDynamic;
+       deUint32                maxDescriptorSetUpdateAfterBindSampledImages;
+       deUint32                maxDescriptorSetUpdateAfterBindStorageImages;
+       deUint32                maxDescriptorSetUpdateAfterBindInputAttachments;
+};
+
+struct VkDescriptorSetVariableDescriptorCountAllocateInfo
+{
+       VkStructureType sType;
+       const void*             pNext;
+       deUint32                descriptorSetCount;
+       const deUint32* pDescriptorCounts;
+};
+
+struct VkDescriptorSetVariableDescriptorCountLayoutSupport
+{
+       VkStructureType sType;
+       void*                   pNext;
+       deUint32                maxVariableDescriptorCount;
+};
+
+struct VkSubpassDescriptionDepthStencilResolve
+{
+       VkStructureType                                 sType;
+       const void*                                             pNext;
+       VkResolveModeFlagBits                   depthResolveMode;
+       VkResolveModeFlagBits                   stencilResolveMode;
+       const VkAttachmentReference2*   pDepthStencilResolveAttachment;
+};
+
+struct VkPhysicalDeviceDepthStencilResolveProperties
+{
+       VkStructureType         sType;
+       void*                           pNext;
+       VkResolveModeFlags      supportedDepthResolveModes;
+       VkResolveModeFlags      supportedStencilResolveModes;
+       VkBool32                        independentResolveNone;
+       VkBool32                        independentResolve;
+};
+
+struct VkPhysicalDeviceScalarBlockLayoutFeatures
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                scalarBlockLayout;
+};
+
+struct VkImageStencilUsageCreateInfo
+{
+       VkStructureType         sType;
+       const void*                     pNext;
+       VkImageUsageFlags       stencilUsage;
+};
+
+struct VkSamplerReductionModeCreateInfo
+{
+       VkStructureType                 sType;
+       const void*                             pNext;
+       VkSamplerReductionMode  reductionMode;
+};
+
+struct VkPhysicalDeviceSamplerFilterMinmaxProperties
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                filterMinmaxSingleComponentFormats;
+       VkBool32                filterMinmaxImageComponentMapping;
+};
+
+struct VkPhysicalDeviceVulkanMemoryModelFeatures
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                vulkanMemoryModel;
+       VkBool32                vulkanMemoryModelDeviceScope;
+       VkBool32                vulkanMemoryModelAvailabilityVisibilityChains;
+};
+
+struct VkPhysicalDeviceImagelessFramebufferFeatures
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                imagelessFramebuffer;
+};
+
+struct VkFramebufferAttachmentImageInfo
+{
+       VkStructureType         sType;
+       const void*                     pNext;
+       VkImageCreateFlags      flags;
+       VkImageUsageFlags       usage;
+       deUint32                        width;
+       deUint32                        height;
+       deUint32                        layerCount;
+       deUint32                        viewFormatCount;
+       const VkFormat*         pViewFormats;
+};
+
+struct VkFramebufferAttachmentsCreateInfo
+{
+       VkStructureType                                                 sType;
+       const void*                                                             pNext;
+       deUint32                                                                attachmentImageInfoCount;
+       const VkFramebufferAttachmentImageInfo* pAttachmentImageInfos;
+};
+
+struct VkRenderPassAttachmentBeginInfo
+{
+       VkStructureType         sType;
+       const void*                     pNext;
+       deUint32                        attachmentCount;
+       const VkImageView*      pAttachments;
+};
+
+struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                uniformBufferStandardLayout;
+};
+
+struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                shaderSubgroupExtendedTypes;
+};
+
+struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                separateDepthStencilLayouts;
+};
+
+struct VkAttachmentReferenceStencilLayout
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkImageLayout   stencilLayout;
+};
+
+struct VkAttachmentDescriptionStencilLayout
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkImageLayout   stencilInitialLayout;
+       VkImageLayout   stencilFinalLayout;
+};
+
+struct VkPhysicalDeviceHostQueryResetFeatures
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                hostQueryReset;
+};
+
+struct VkPhysicalDeviceTimelineSemaphoreFeatures
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                timelineSemaphore;
+};
+
+struct VkPhysicalDeviceTimelineSemaphoreProperties
+{
+       VkStructureType sType;
+       void*                   pNext;
+       deUint64                maxTimelineSemaphoreValueDifference;
+};
+
+struct VkSemaphoreTypeCreateInfo
+{
+       VkStructureType sType;
+       const void*             pNext;
+       VkSemaphoreType semaphoreType;
+       deUint64                initialValue;
+};
+
+struct VkTimelineSemaphoreSubmitInfo
+{
+       VkStructureType sType;
+       const void*             pNext;
+       deUint32                waitSemaphoreValueCount;
+       const deUint64* pWaitSemaphoreValues;
+       deUint32                signalSemaphoreValueCount;
+       const deUint64* pSignalSemaphoreValues;
+};
+
+struct VkSemaphoreWaitInfo
+{
+       VkStructureType                 sType;
+       const void*                             pNext;
+       VkSemaphoreWaitFlags    flags;
+       deUint32                                semaphoreCount;
+       const VkSemaphore*              pSemaphores;
+       const deUint64*                 pValues;
+};
+
+struct VkSemaphoreSignalInfo
+{
+       VkStructureType sType;
+       const void*             pNext;
+       VkSemaphore             semaphore;
+       deUint64                value;
+};
+
+struct VkPhysicalDeviceBufferDeviceAddressFeatures
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                bufferDeviceAddress;
+       VkBool32                bufferDeviceAddressCaptureReplay;
+       VkBool32                bufferDeviceAddressMultiDevice;
+};
+
+struct VkBufferDeviceAddressInfo
+{
+       VkStructureType sType;
+       const void*             pNext;
+       VkBuffer                buffer;
+};
+
+struct VkBufferOpaqueCaptureAddressCreateInfo
+{
+       VkStructureType sType;
+       const void*             pNext;
+       deUint64                opaqueCaptureAddress;
+};
+
+struct VkMemoryOpaqueCaptureAddressAllocateInfo
+{
+       VkStructureType sType;
+       const void*             pNext;
+       deUint64                opaqueCaptureAddress;
+};
+
+struct VkDeviceMemoryOpaqueCaptureAddressInfo
+{
+       VkStructureType sType;
+       const void*             pNext;
+       VkDeviceMemory  memory;
+};
+
 struct VkSurfaceCapabilitiesKHR
 {
        deUint32                                                minImageCount;
@@ -1972,14 +2580,6 @@ struct VkPhysicalDevicePushDescriptorPropertiesKHR
        deUint32                maxPushDescriptors;
 };
 
-struct VkPhysicalDeviceShaderFloat16Int8FeaturesKHR
-{
-       VkStructureType sType;
-       void*                   pNext;
-       VkBool32                shaderFloat16;
-       VkBool32                shaderInt8;
-};
-
 struct VkRectLayerKHR
 {
        VkOffset2D      offset;
@@ -2001,125 +2601,6 @@ struct VkPresentRegionsKHR
        const VkPresentRegionKHR*       pRegions;
 };
 
-struct VkPhysicalDeviceImagelessFramebufferFeaturesKHR
-{
-       VkStructureType sType;
-       void*                   pNext;
-       VkBool32                imagelessFramebuffer;
-};
-
-struct VkFramebufferAttachmentImageInfoKHR
-{
-       VkStructureType         sType;
-       const void*                     pNext;
-       VkImageCreateFlags      flags;
-       VkImageUsageFlags       usage;
-       deUint32                        width;
-       deUint32                        height;
-       deUint32                        layerCount;
-       deUint32                        viewFormatCount;
-       const VkFormat*         pViewFormats;
-};
-
-struct VkFramebufferAttachmentsCreateInfoKHR
-{
-       VkStructureType                                                         sType;
-       const void*                                                                     pNext;
-       deUint32                                                                        attachmentImageInfoCount;
-       const VkFramebufferAttachmentImageInfoKHR*      pAttachmentImageInfos;
-};
-
-struct VkRenderPassAttachmentBeginInfoKHR
-{
-       VkStructureType         sType;
-       const void*                     pNext;
-       deUint32                        attachmentCount;
-       const VkImageView*      pAttachments;
-};
-
-struct VkAttachmentDescription2KHR
-{
-       VkStructureType                                 sType;
-       const void*                                             pNext;
-       VkAttachmentDescriptionFlags    flags;
-       VkFormat                                                format;
-       VkSampleCountFlagBits                   samples;
-       VkAttachmentLoadOp                              loadOp;
-       VkAttachmentStoreOp                             storeOp;
-       VkAttachmentLoadOp                              stencilLoadOp;
-       VkAttachmentStoreOp                             stencilStoreOp;
-       VkImageLayout                                   initialLayout;
-       VkImageLayout                                   finalLayout;
-};
-
-struct VkAttachmentReference2KHR
-{
-       VkStructureType         sType;
-       const void*                     pNext;
-       deUint32                        attachment;
-       VkImageLayout           layout;
-       VkImageAspectFlags      aspectMask;
-};
-
-struct VkSubpassDescription2KHR
-{
-       VkStructureType                                         sType;
-       const void*                                                     pNext;
-       VkSubpassDescriptionFlags                       flags;
-       VkPipelineBindPoint                                     pipelineBindPoint;
-       deUint32                                                        viewMask;
-       deUint32                                                        inputAttachmentCount;
-       const VkAttachmentReference2KHR*        pInputAttachments;
-       deUint32                                                        colorAttachmentCount;
-       const VkAttachmentReference2KHR*        pColorAttachments;
-       const VkAttachmentReference2KHR*        pResolveAttachments;
-       const VkAttachmentReference2KHR*        pDepthStencilAttachment;
-       deUint32                                                        preserveAttachmentCount;
-       const deUint32*                                         pPreserveAttachments;
-};
-
-struct VkSubpassDependency2KHR
-{
-       VkStructureType                 sType;
-       const void*                             pNext;
-       deUint32                                srcSubpass;
-       deUint32                                dstSubpass;
-       VkPipelineStageFlags    srcStageMask;
-       VkPipelineStageFlags    dstStageMask;
-       VkAccessFlags                   srcAccessMask;
-       VkAccessFlags                   dstAccessMask;
-       VkDependencyFlags               dependencyFlags;
-       deInt32                                 viewOffset;
-};
-
-struct VkRenderPassCreateInfo2KHR
-{
-       VkStructureType                                         sType;
-       const void*                                                     pNext;
-       VkRenderPassCreateFlags                         flags;
-       deUint32                                                        attachmentCount;
-       const VkAttachmentDescription2KHR*      pAttachments;
-       deUint32                                                        subpassCount;
-       const VkSubpassDescription2KHR*         pSubpasses;
-       deUint32                                                        dependencyCount;
-       const VkSubpassDependency2KHR*          pDependencies;
-       deUint32                                                        correlatedViewMaskCount;
-       const deUint32*                                         pCorrelatedViewMasks;
-};
-
-struct VkSubpassBeginInfoKHR
-{
-       VkStructureType         sType;
-       const void*                     pNext;
-       VkSubpassContents       contents;
-};
-
-struct VkSubpassEndInfoKHR
-{
-       VkStructureType sType;
-       const void*             pNext;
-};
-
 struct VkSharedPresentSurfaceCapabilitiesKHR
 {
        VkStructureType         sType;
@@ -2184,286 +2665,106 @@ struct VkQueryPoolPerformanceCreateInfoKHR
 {
        VkStructureType sType;
        const void*             pNext;
-       deUint32                queueFamilyIndex;
-       deUint32                counterIndexCount;
-       const deUint32* pCounterIndices;
-};
-
-union VkPerformanceCounterResultKHR
-{
-       deInt32         int32;
-       deInt64         int64;
-       deUint32        uint32;
-       deUint64        uint64;
-       float           float32;
-       double          float64;
-};
-
-struct VkAcquireProfilingLockInfoKHR
-{
-       VkStructureType                                 sType;
-       const void*                                             pNext;
-       VkAcquireProfilingLockFlagsKHR  flags;
-       deUint64                                                timeout;
-};
-
-struct VkPerformanceQuerySubmitInfoKHR
-{
-       VkStructureType sType;
-       const void*             pNext;
-       deUint32                counterPassIndex;
-};
-
-struct VkPhysicalDeviceSurfaceInfo2KHR
-{
-       VkStructureType sType;
-       const void*             pNext;
-       VkSurfaceKHR    surface;
-};
-
-struct VkSurfaceCapabilities2KHR
-{
-       VkStructureType                         sType;
-       void*                                           pNext;
-       VkSurfaceCapabilitiesKHR        surfaceCapabilities;
-};
-
-struct VkSurfaceFormat2KHR
-{
-       VkStructureType         sType;
-       void*                           pNext;
-       VkSurfaceFormatKHR      surfaceFormat;
-};
-
-struct VkDisplayProperties2KHR
-{
-       VkStructureType                 sType;
-       void*                                   pNext;
-       VkDisplayPropertiesKHR  displayProperties;
-};
-
-struct VkDisplayPlaneProperties2KHR
-{
-       VkStructureType                         sType;
-       void*                                           pNext;
-       VkDisplayPlanePropertiesKHR     displayPlaneProperties;
-};
-
-struct VkDisplayModeProperties2KHR
-{
-       VkStructureType                         sType;
-       void*                                           pNext;
-       VkDisplayModePropertiesKHR      displayModeProperties;
-};
-
-struct VkDisplayPlaneInfo2KHR
-{
-       VkStructureType         sType;
-       const void*                     pNext;
-       VkDisplayModeKHR        mode;
-       deUint32                        planeIndex;
-};
-
-struct VkDisplayPlaneCapabilities2KHR
-{
-       VkStructureType                                 sType;
-       void*                                                   pNext;
-       VkDisplayPlaneCapabilitiesKHR   capabilities;
-};
-
-struct VkImageFormatListCreateInfoKHR
-{
-       VkStructureType sType;
-       const void*             pNext;
-       deUint32                viewFormatCount;
-       const VkFormat* pViewFormats;
-};
-
-struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR
-{
-       VkStructureType sType;
-       void*                   pNext;
-       VkBool32                shaderSubgroupExtendedTypes;
-};
-
-struct VkPhysicalDevice8BitStorageFeaturesKHR
-{
-       VkStructureType sType;
-       void*                   pNext;
-       VkBool32                storageBuffer8BitAccess;
-       VkBool32                uniformAndStorageBuffer8BitAccess;
-       VkBool32                storagePushConstant8;
-};
-
-struct VkPhysicalDeviceShaderAtomicInt64FeaturesKHR
-{
-       VkStructureType sType;
-       void*                   pNext;
-       VkBool32                shaderBufferInt64Atomics;
-       VkBool32                shaderSharedInt64Atomics;
-};
-
-struct VkPhysicalDeviceShaderClockFeaturesKHR
-{
-       VkStructureType sType;
-       void*                   pNext;
-       VkBool32                shaderSubgroupClock;
-       VkBool32                shaderDeviceClock;
-};
-
-struct VkConformanceVersionKHR
-{
-       deUint8 major;
-       deUint8 minor;
-       deUint8 subminor;
-       deUint8 patch;
-};
-
-struct VkPhysicalDeviceDriverPropertiesKHR
-{
-       VkStructureType                 sType;
-       void*                                   pNext;
-       VkDriverIdKHR                   driverID;
-       char                                    driverName[VK_MAX_DRIVER_NAME_SIZE_KHR];
-       char                                    driverInfo[VK_MAX_DRIVER_INFO_SIZE_KHR];
-       VkConformanceVersionKHR conformanceVersion;
+       deUint32                queueFamilyIndex;
+       deUint32                counterIndexCount;
+       const deUint32* pCounterIndices;
 };
 
-struct VkPhysicalDeviceFloatControlsPropertiesKHR
-{
-       VkStructureType                                                 sType;
-       void*                                                                   pNext;
-       VkShaderFloatControlsIndependenceKHR    denormBehaviorIndependence;
-       VkShaderFloatControlsIndependenceKHR    roundingModeIndependence;
-       VkBool32                                                                shaderSignedZeroInfNanPreserveFloat16;
-       VkBool32                                                                shaderSignedZeroInfNanPreserveFloat32;
-       VkBool32                                                                shaderSignedZeroInfNanPreserveFloat64;
-       VkBool32                                                                shaderDenormPreserveFloat16;
-       VkBool32                                                                shaderDenormPreserveFloat32;
-       VkBool32                                                                shaderDenormPreserveFloat64;
-       VkBool32                                                                shaderDenormFlushToZeroFloat16;
-       VkBool32                                                                shaderDenormFlushToZeroFloat32;
-       VkBool32                                                                shaderDenormFlushToZeroFloat64;
-       VkBool32                                                                shaderRoundingModeRTEFloat16;
-       VkBool32                                                                shaderRoundingModeRTEFloat32;
-       VkBool32                                                                shaderRoundingModeRTEFloat64;
-       VkBool32                                                                shaderRoundingModeRTZFloat16;
-       VkBool32                                                                shaderRoundingModeRTZFloat32;
-       VkBool32                                                                shaderRoundingModeRTZFloat64;
-};
-
-struct VkSubpassDescriptionDepthStencilResolveKHR
+union VkPerformanceCounterResultKHR
 {
-       VkStructureType                                         sType;
-       const void*                                                     pNext;
-       VkResolveModeFlagBitsKHR                        depthResolveMode;
-       VkResolveModeFlagBitsKHR                        stencilResolveMode;
-       const VkAttachmentReference2KHR*        pDepthStencilResolveAttachment;
+       deInt32         int32;
+       deInt64         int64;
+       deUint32        uint32;
+       deUint64        uint64;
+       float           float32;
+       double          float64;
 };
 
-struct VkPhysicalDeviceDepthStencilResolvePropertiesKHR
+struct VkAcquireProfilingLockInfoKHR
 {
-       VkStructureType                 sType;
-       void*                                   pNext;
-       VkResolveModeFlagsKHR   supportedDepthResolveModes;
-       VkResolveModeFlagsKHR   supportedStencilResolveModes;
-       VkBool32                                independentResolveNone;
-       VkBool32                                independentResolve;
+       VkStructureType                                 sType;
+       const void*                                             pNext;
+       VkAcquireProfilingLockFlagsKHR  flags;
+       deUint64                                                timeout;
 };
 
-struct VkPhysicalDeviceTimelineSemaphoreFeaturesKHR
+struct VkPerformanceQuerySubmitInfoKHR
 {
        VkStructureType sType;
-       void*                   pNext;
-       VkBool32                timelineSemaphore;
+       const void*             pNext;
+       deUint32                counterPassIndex;
 };
 
-struct VkPhysicalDeviceTimelineSemaphorePropertiesKHR
+struct VkPhysicalDeviceSurfaceInfo2KHR
 {
        VkStructureType sType;
-       void*                   pNext;
-       deUint64                maxTimelineSemaphoreValueDifference;
+       const void*             pNext;
+       VkSurfaceKHR    surface;
 };
 
-struct VkSemaphoreTypeCreateInfoKHR
+struct VkSurfaceCapabilities2KHR
 {
-       VkStructureType         sType;
-       const void*                     pNext;
-       VkSemaphoreTypeKHR      semaphoreType;
-       deUint64                        initialValue;
+       VkStructureType                         sType;
+       void*                                           pNext;
+       VkSurfaceCapabilitiesKHR        surfaceCapabilities;
 };
 
-struct VkTimelineSemaphoreSubmitInfoKHR
+struct VkSurfaceFormat2KHR
 {
-       VkStructureType sType;
-       const void*             pNext;
-       deUint32                waitSemaphoreValueCount;
-       const deUint64* pWaitSemaphoreValues;
-       deUint32                signalSemaphoreValueCount;
-       const deUint64* pSignalSemaphoreValues;
+       VkStructureType         sType;
+       void*                           pNext;
+       VkSurfaceFormatKHR      surfaceFormat;
 };
 
-struct VkSemaphoreWaitInfoKHR
+struct VkDisplayProperties2KHR
 {
        VkStructureType                 sType;
-       const void*                             pNext;
-       VkSemaphoreWaitFlagsKHR flags;
-       deUint32                                semaphoreCount;
-       const VkSemaphore*              pSemaphores;
-       const deUint64*                 pValues;
-};
-
-struct VkSemaphoreSignalInfoKHR
-{
-       VkStructureType sType;
-       const void*             pNext;
-       VkSemaphore             semaphore;
-       deUint64                value;
+       void*                                   pNext;
+       VkDisplayPropertiesKHR  displayProperties;
 };
 
-struct VkPhysicalDeviceVulkanMemoryModelFeaturesKHR
+struct VkDisplayPlaneProperties2KHR
 {
-       VkStructureType sType;
-       void*                   pNext;
-       VkBool32                vulkanMemoryModel;
-       VkBool32                vulkanMemoryModelDeviceScope;
-       VkBool32                vulkanMemoryModelAvailabilityVisibilityChains;
+       VkStructureType                         sType;
+       void*                                           pNext;
+       VkDisplayPlanePropertiesKHR     displayPlaneProperties;
 };
 
-struct VkSurfaceProtectedCapabilitiesKHR
+struct VkDisplayModeProperties2KHR
 {
-       VkStructureType sType;
-       const void*             pNext;
-       VkBool32                supportsProtected;
+       VkStructureType                         sType;
+       void*                                           pNext;
+       VkDisplayModePropertiesKHR      displayModeProperties;
 };
 
-struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR
+struct VkDisplayPlaneInfo2KHR
 {
-       VkStructureType sType;
-       void*                   pNext;
-       VkBool32                separateDepthStencilLayouts;
+       VkStructureType         sType;
+       const void*                     pNext;
+       VkDisplayModeKHR        mode;
+       deUint32                        planeIndex;
 };
 
-struct VkAttachmentReferenceStencilLayoutKHR
+struct VkDisplayPlaneCapabilities2KHR
 {
-       VkStructureType sType;
-       void*                   pNext;
-       VkImageLayout   stencilLayout;
+       VkStructureType                                 sType;
+       void*                                                   pNext;
+       VkDisplayPlaneCapabilitiesKHR   capabilities;
 };
 
-struct VkAttachmentDescriptionStencilLayoutKHR
+struct VkPhysicalDeviceShaderClockFeaturesKHR
 {
        VkStructureType sType;
        void*                   pNext;
-       VkImageLayout   stencilInitialLayout;
-       VkImageLayout   stencilFinalLayout;
+       VkBool32                shaderSubgroupClock;
+       VkBool32                shaderDeviceClock;
 };
 
-struct VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR
+struct VkSurfaceProtectedCapabilitiesKHR
 {
        VkStructureType sType;
-       void*                   pNext;
-       VkBool32                uniformBufferStandardLayout;
+       const void*             pNext;
+       VkBool32                supportsProtected;
 };
 
 struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR
@@ -3113,21 +3414,6 @@ struct VkDebugUtilsMessengerCreateInfoEXT
        void*                                                                   pUserData;
 };
 
-struct VkSamplerReductionModeCreateInfoEXT
-{
-       VkStructureType                         sType;
-       const void*                                     pNext;
-       VkSamplerReductionModeEXT       reductionMode;
-};
-
-struct VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
-{
-       VkStructureType sType;
-       void*                   pNext;
-       VkBool32                filterMinmaxSingleComponentFormats;
-       VkBool32                filterMinmaxImageComponentMapping;
-};
-
 struct VkPhysicalDeviceInlineUniformBlockFeaturesEXT
 {
        VkStructureType sType;
@@ -3354,84 +3640,6 @@ struct VkShaderModuleValidationCacheCreateInfoEXT
        VkValidationCacheEXT    validationCache;
 };
 
-struct VkDescriptorSetLayoutBindingFlagsCreateInfoEXT
-{
-       VkStructureType                                         sType;
-       const void*                                                     pNext;
-       deUint32                                                        bindingCount;
-       const VkDescriptorBindingFlagsEXT*      pBindingFlags;
-};
-
-struct VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-{
-       VkStructureType sType;
-       void*                   pNext;
-       VkBool32                shaderInputAttachmentArrayDynamicIndexing;
-       VkBool32                shaderUniformTexelBufferArrayDynamicIndexing;
-       VkBool32                shaderStorageTexelBufferArrayDynamicIndexing;
-       VkBool32                shaderUniformBufferArrayNonUniformIndexing;
-       VkBool32                shaderSampledImageArrayNonUniformIndexing;
-       VkBool32                shaderStorageBufferArrayNonUniformIndexing;
-       VkBool32                shaderStorageImageArrayNonUniformIndexing;
-       VkBool32                shaderInputAttachmentArrayNonUniformIndexing;
-       VkBool32                shaderUniformTexelBufferArrayNonUniformIndexing;
-       VkBool32                shaderStorageTexelBufferArrayNonUniformIndexing;
-       VkBool32                descriptorBindingUniformBufferUpdateAfterBind;
-       VkBool32                descriptorBindingSampledImageUpdateAfterBind;
-       VkBool32                descriptorBindingStorageImageUpdateAfterBind;
-       VkBool32                descriptorBindingStorageBufferUpdateAfterBind;
-       VkBool32                descriptorBindingUniformTexelBufferUpdateAfterBind;
-       VkBool32                descriptorBindingStorageTexelBufferUpdateAfterBind;
-       VkBool32                descriptorBindingUpdateUnusedWhilePending;
-       VkBool32                descriptorBindingPartiallyBound;
-       VkBool32                descriptorBindingVariableDescriptorCount;
-       VkBool32                runtimeDescriptorArray;
-};
-
-struct VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-{
-       VkStructureType sType;
-       void*                   pNext;
-       deUint32                maxUpdateAfterBindDescriptorsInAllPools;
-       VkBool32                shaderUniformBufferArrayNonUniformIndexingNative;
-       VkBool32                shaderSampledImageArrayNonUniformIndexingNative;
-       VkBool32                shaderStorageBufferArrayNonUniformIndexingNative;
-       VkBool32                shaderStorageImageArrayNonUniformIndexingNative;
-       VkBool32                shaderInputAttachmentArrayNonUniformIndexingNative;
-       VkBool32                robustBufferAccessUpdateAfterBind;
-       VkBool32                quadDivergentImplicitLod;
-       deUint32                maxPerStageDescriptorUpdateAfterBindSamplers;
-       deUint32                maxPerStageDescriptorUpdateAfterBindUniformBuffers;
-       deUint32                maxPerStageDescriptorUpdateAfterBindStorageBuffers;
-       deUint32                maxPerStageDescriptorUpdateAfterBindSampledImages;
-       deUint32                maxPerStageDescriptorUpdateAfterBindStorageImages;
-       deUint32                maxPerStageDescriptorUpdateAfterBindInputAttachments;
-       deUint32                maxPerStageUpdateAfterBindResources;
-       deUint32                maxDescriptorSetUpdateAfterBindSamplers;
-       deUint32                maxDescriptorSetUpdateAfterBindUniformBuffers;
-       deUint32                maxDescriptorSetUpdateAfterBindUniformBuffersDynamic;
-       deUint32                maxDescriptorSetUpdateAfterBindStorageBuffers;
-       deUint32                maxDescriptorSetUpdateAfterBindStorageBuffersDynamic;
-       deUint32                maxDescriptorSetUpdateAfterBindSampledImages;
-       deUint32                maxDescriptorSetUpdateAfterBindStorageImages;
-       deUint32                maxDescriptorSetUpdateAfterBindInputAttachments;
-};
-
-struct VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
-{
-       VkStructureType sType;
-       const void*             pNext;
-       deUint32                descriptorSetCount;
-       const deUint32* pDescriptorCounts;
-};
-
-struct VkDescriptorSetVariableDescriptorCountLayoutSupportEXT
-{
-       VkStructureType sType;
-       void*                   pNext;
-       deUint32                maxVariableDescriptorCount;
-};
-
 struct VkShadingRatePaletteNV
 {
        deUint32                                                        shadingRatePaletteEntryCount;
@@ -3959,13 +4167,6 @@ struct VkRenderPassFragmentDensityMapCreateInfoEXT
        VkAttachmentReference   fragmentDensityMapAttachment;
 };
 
-struct VkPhysicalDeviceScalarBlockLayoutFeaturesEXT
-{
-       VkStructureType sType;
-       void*                   pNext;
-       VkBool32                scalarBlockLayout;
-};
-
 struct VkPhysicalDeviceSubgroupSizeControlFeaturesEXT
 {
        VkStructureType sType;
@@ -4044,13 +4245,6 @@ struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT
        VkBool32                bufferDeviceAddressMultiDevice;
 };
 
-struct VkBufferDeviceAddressInfoEXT
-{
-       VkStructureType sType;
-       const void*             pNext;
-       VkBuffer                buffer;
-};
-
 struct VkBufferDeviceAddressCreateInfoEXT
 {
        VkStructureType sType;
@@ -4058,13 +4252,6 @@ struct VkBufferDeviceAddressCreateInfoEXT
        VkDeviceAddress deviceAddress;
 };
 
-struct VkImageStencilUsageCreateInfoEXT
-{
-       VkStructureType         sType;
-       const void*                     pNext;
-       VkImageUsageFlags       stencilUsage;
-};
-
 struct VkValidationFeaturesEXT
 {
        VkStructureType                                                 sType;
@@ -4181,13 +4368,6 @@ struct VkPipelineRasterizationLineStateCreateInfoEXT
        deUint16                                        lineStipplePattern;
 };
 
-struct VkPhysicalDeviceHostQueryResetFeaturesEXT
-{
-       VkStructureType sType;
-       void*                   pNext;
-       VkBool32                hostQueryReset;
-};
-
 struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT
 {
        VkStructureType sType;
@@ -4654,7 +4834,95 @@ typedef VkDescriptorSetLayoutSupport VkDescriptorSetLayoutSupportKHR;
 
 typedef VkPhysicalDeviceShaderDrawParametersFeatures VkPhysicalDeviceShaderDrawParameterFeatures;
 
-typedef VkPhysicalDeviceShaderFloat16Int8FeaturesKHR VkPhysicalDeviceFloat16Int8FeaturesKHR;
+typedef VkConformanceVersion VkConformanceVersionKHR;
+
+typedef VkImageFormatListCreateInfo VkImageFormatListCreateInfoKHR;
+
+typedef VkAttachmentDescription2 VkAttachmentDescription2KHR;
+
+typedef VkAttachmentReference2 VkAttachmentReference2KHR;
+
+typedef VkSubpassDescription2 VkSubpassDescription2KHR;
+
+typedef VkSubpassDependency2 VkSubpassDependency2KHR;
+
+typedef VkRenderPassCreateInfo2 VkRenderPassCreateInfo2KHR;
+
+typedef VkSubpassBeginInfo VkSubpassBeginInfoKHR;
+
+typedef VkSubpassEndInfo VkSubpassEndInfoKHR;
+
+typedef VkPhysicalDevice8BitStorageFeatures VkPhysicalDevice8BitStorageFeaturesKHR;
+
+typedef VkPhysicalDeviceDriverProperties VkPhysicalDeviceDriverPropertiesKHR;
+
+typedef VkPhysicalDeviceShaderAtomicInt64Features VkPhysicalDeviceShaderAtomicInt64FeaturesKHR;
+
+typedef VkPhysicalDeviceFloatControlsProperties VkPhysicalDeviceFloatControlsPropertiesKHR;
+
+typedef VkDescriptorSetLayoutBindingFlagsCreateInfo VkDescriptorSetLayoutBindingFlagsCreateInfoEXT;
+
+typedef VkPhysicalDeviceDescriptorIndexingFeatures VkPhysicalDeviceDescriptorIndexingFeaturesEXT;
+
+typedef VkPhysicalDeviceDescriptorIndexingProperties VkPhysicalDeviceDescriptorIndexingPropertiesEXT;
+
+typedef VkDescriptorSetVariableDescriptorCountAllocateInfo VkDescriptorSetVariableDescriptorCountAllocateInfoEXT;
+
+typedef VkDescriptorSetVariableDescriptorCountLayoutSupport VkDescriptorSetVariableDescriptorCountLayoutSupportEXT;
+
+typedef VkSubpassDescriptionDepthStencilResolve VkSubpassDescriptionDepthStencilResolveKHR;
+
+typedef VkPhysicalDeviceDepthStencilResolveProperties VkPhysicalDeviceDepthStencilResolvePropertiesKHR;
+
+typedef VkPhysicalDeviceScalarBlockLayoutFeatures VkPhysicalDeviceScalarBlockLayoutFeaturesEXT;
+
+typedef VkImageStencilUsageCreateInfo VkImageStencilUsageCreateInfoEXT;
+
+typedef VkSamplerReductionModeCreateInfo VkSamplerReductionModeCreateInfoEXT;
+
+typedef VkPhysicalDeviceSamplerFilterMinmaxProperties VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT;
+
+typedef VkPhysicalDeviceVulkanMemoryModelFeatures VkPhysicalDeviceVulkanMemoryModelFeaturesKHR;
+
+typedef VkPhysicalDeviceImagelessFramebufferFeatures VkPhysicalDeviceImagelessFramebufferFeaturesKHR;
+
+typedef VkFramebufferAttachmentImageInfo VkFramebufferAttachmentImageInfoKHR;
+
+typedef VkFramebufferAttachmentsCreateInfo VkFramebufferAttachmentsCreateInfoKHR;
+
+typedef VkRenderPassAttachmentBeginInfo VkRenderPassAttachmentBeginInfoKHR;
+
+typedef VkPhysicalDeviceUniformBufferStandardLayoutFeatures VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR;
+
+typedef VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR;
+
+typedef VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR;
+
+typedef VkAttachmentReferenceStencilLayout VkAttachmentReferenceStencilLayoutKHR;
+
+typedef VkAttachmentDescriptionStencilLayout VkAttachmentDescriptionStencilLayoutKHR;
+
+typedef VkPhysicalDeviceHostQueryResetFeatures VkPhysicalDeviceHostQueryResetFeaturesEXT;
+
+typedef VkPhysicalDeviceTimelineSemaphoreFeatures VkPhysicalDeviceTimelineSemaphoreFeaturesKHR;
+
+typedef VkPhysicalDeviceTimelineSemaphoreProperties VkPhysicalDeviceTimelineSemaphorePropertiesKHR;
+
+typedef VkSemaphoreTypeCreateInfo VkSemaphoreTypeCreateInfoKHR;
+
+typedef VkTimelineSemaphoreSubmitInfo VkTimelineSemaphoreSubmitInfoKHR;
+
+typedef VkSemaphoreWaitInfo VkSemaphoreWaitInfoKHR;
+
+typedef VkSemaphoreSignalInfo VkSemaphoreSignalInfoKHR;
+
+typedef VkPhysicalDeviceBufferDeviceAddressFeatures VkPhysicalDeviceBufferDeviceAddressFeaturesKHR;
+
+typedef VkBufferOpaqueCaptureAddressCreateInfo VkBufferOpaqueCaptureAddressCreateInfoKHR;
+
+typedef VkMemoryOpaqueCaptureAddressAllocateInfo VkMemoryOpaqueCaptureAddressAllocateInfoKHR;
+
+typedef VkDeviceMemoryOpaqueCaptureAddressInfo VkDeviceMemoryOpaqueCaptureAddressInfoKHR;
 
 typedef VkPhysicalDeviceBufferDeviceAddressFeaturesEXT VkPhysicalDeviceBufferAddressFeaturesEXT;
 
index 85d2bc5..0b50966 100644 (file)
@@ -4,6 +4,33 @@
 
 void getCoreDeviceExtensionsImpl (deUint32 coreVersion, ::std::vector<const char*>& dst)
 {
+       if (coreVersion >= VK_API_VERSION_1_2)
+       {
+               dst.push_back("VK_KHR_sampler_mirror_clamp_to_edge");
+               dst.push_back("VK_KHR_shader_float16_int8");
+               dst.push_back("VK_KHR_imageless_framebuffer");
+               dst.push_back("VK_KHR_create_renderpass2");
+               dst.push_back("VK_KHR_image_format_list");
+               dst.push_back("VK_KHR_draw_indirect_count");
+               dst.push_back("VK_KHR_shader_subgroup_extended_types");
+               dst.push_back("VK_KHR_8bit_storage");
+               dst.push_back("VK_KHR_shader_atomic_int64");
+               dst.push_back("VK_KHR_driver_properties");
+               dst.push_back("VK_KHR_shader_float_controls");
+               dst.push_back("VK_KHR_depth_stencil_resolve");
+               dst.push_back("VK_KHR_timeline_semaphore");
+               dst.push_back("VK_KHR_vulkan_memory_model");
+               dst.push_back("VK_KHR_spirv_1_4");
+               dst.push_back("VK_KHR_separate_depth_stencil_layouts");
+               dst.push_back("VK_KHR_uniform_buffer_standard_layout");
+               dst.push_back("VK_KHR_buffer_device_address");
+               dst.push_back("VK_EXT_sampler_filter_minmax");
+               dst.push_back("VK_EXT_descriptor_indexing");
+               dst.push_back("VK_EXT_shader_viewport_index_layer");
+               dst.push_back("VK_EXT_scalar_block_layout");
+               dst.push_back("VK_EXT_separate_stencil_usage");
+               dst.push_back("VK_EXT_host_query_reset");
+       }
        if (coreVersion >= VK_API_VERSION_1_1)
        {
                dst.push_back("VK_KHR_multiview");
index c817527..980d114 100644 (file)
@@ -398,6 +398,16 @@ inline VkExternalMemoryProperties makeExternalMemoryProperties (VkExternalMemory
        return res;
 }
 
+inline VkConformanceVersion makeConformanceVersion (deUint8 major, deUint8 minor, deUint8 subminor, deUint8 patch)
+{
+       VkConformanceVersion res;
+       res.major               = major;
+       res.minor               = minor;
+       res.subminor    = subminor;
+       res.patch               = patch;
+       return res;
+}
+
 inline VkSurfaceFormatKHR makeSurfaceFormatKHR (VkFormat format, VkColorSpaceKHR colorSpace)
 {
        VkSurfaceFormatKHR res;
@@ -422,16 +432,6 @@ inline VkPresentRegionKHR makePresentRegionKHR (deUint32 rectangleCount, const V
        return res;
 }
 
-inline VkConformanceVersionKHR makeConformanceVersionKHR (deUint8 major, deUint8 minor, deUint8 subminor, deUint8 patch)
-{
-       VkConformanceVersionKHR res;
-       res.major               = major;
-       res.minor               = minor;
-       res.subminor    = subminor;
-       res.patch               = patch;
-       return res;
-}
-
 inline VkShaderResourceUsageAMD makeShaderResourceUsageAMD (deUint32 numUsedVgprs, deUint32 numUsedSgprs, deUint32 ldsSizePerLocalWorkGroup, deUintptr ldsUsageSizeInBytes, deUintptr scratchMemUsageInBytes)
 {
        VkShaderResourceUsageAMD res;
index bc71f94..b570bde 100644 (file)
@@ -138,6 +138,19 @@ virtual VkResult                   createDescriptorUpdateTemplate                                  (VkDevice device, const Vk
 virtual void                           destroyDescriptorUpdateTemplate                                 (VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator) const = 0;
 virtual void                           updateDescriptorSetWithTemplate                                 (VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData) const = 0;
 virtual void                           getDescriptorSetLayoutSupport                                   (VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport) const = 0;
+virtual void                           cmdDrawIndirectCount                                                    (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride) const = 0;
+virtual void                           cmdDrawIndexedIndirectCount                                             (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride) const = 0;
+virtual VkResult                       createRenderPass2                                                               (VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass) const = 0;
+virtual void                           cmdBeginRenderPass2                                                             (VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfo* pSubpassBeginInfo) const = 0;
+virtual void                           cmdNextSubpass2                                                                 (VkCommandBuffer commandBuffer, const VkSubpassBeginInfo* pSubpassBeginInfo, const VkSubpassEndInfo* pSubpassEndInfo) const = 0;
+virtual void                           cmdEndRenderPass2                                                               (VkCommandBuffer commandBuffer, const VkSubpassEndInfo* pSubpassEndInfo) const = 0;
+virtual void                           resetQueryPool                                                                  (VkDevice device, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount) const = 0;
+virtual VkResult                       getSemaphoreCounterValue                                                (VkDevice device, VkSemaphore semaphore, deUint64* pValue) const = 0;
+virtual VkResult                       waitSemaphores                                                                  (VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, deUint64 timeout) const = 0;
+virtual VkResult                       signalSemaphore                                                                 (VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo) const = 0;
+virtual VkDeviceAddress                getBufferDeviceAddress                                                  (VkDevice device, const VkBufferDeviceAddressInfo* pInfo) const = 0;
+virtual uint64_t                       getBufferOpaqueCaptureAddress                                   (VkDevice device, const VkBufferDeviceAddressInfo* pInfo) const = 0;
+virtual uint64_t                       getDeviceMemoryOpaqueCaptureAddress                             (VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo) const = 0;
 virtual VkResult                       createSwapchainKHR                                                              (VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain) const = 0;
 virtual void                           destroySwapchainKHR                                                             (VkDevice device, VkSwapchainKHR swapchain, const VkAllocationCallbacks* pAllocator) const = 0;
 virtual VkResult                       getSwapchainImagesKHR                                                   (VkDevice device, VkSwapchainKHR swapchain, deUint32* pSwapchainImageCount, VkImage* pSwapchainImages) const = 0;
@@ -153,20 +166,11 @@ virtual VkResult                  importSemaphoreFdKHR                                                    (VkDevice device, const VkImportSe
 virtual VkResult                       getSemaphoreFdKHR                                                               (VkDevice device, const VkSemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd) const = 0;
 virtual void                           cmdPushDescriptorSetKHR                                                 (VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, deUint32 set, deUint32 descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites) const = 0;
 virtual void                           cmdPushDescriptorSetWithTemplateKHR                             (VkCommandBuffer commandBuffer, VkDescriptorUpdateTemplate descriptorUpdateTemplate, VkPipelineLayout layout, deUint32 set, const void* pData) const = 0;
-virtual VkResult                       createRenderPass2KHR                                                    (VkDevice device, const VkRenderPassCreateInfo2KHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass) const = 0;
-virtual void                           cmdBeginRenderPass2KHR                                                  (VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfoKHR* pSubpassBeginInfo) const = 0;
-virtual void                           cmdNextSubpass2KHR                                                              (VkCommandBuffer commandBuffer, const VkSubpassBeginInfoKHR* pSubpassBeginInfo, const VkSubpassEndInfoKHR* pSubpassEndInfo) const = 0;
-virtual void                           cmdEndRenderPass2KHR                                                    (VkCommandBuffer commandBuffer, const VkSubpassEndInfoKHR* pSubpassEndInfo) const = 0;
 virtual VkResult                       getSwapchainStatusKHR                                                   (VkDevice device, VkSwapchainKHR swapchain) const = 0;
 virtual VkResult                       importFenceFdKHR                                                                (VkDevice device, const VkImportFenceFdInfoKHR* pImportFenceFdInfo) const = 0;
 virtual VkResult                       getFenceFdKHR                                                                   (VkDevice device, const VkFenceGetFdInfoKHR* pGetFdInfo, int* pFd) const = 0;
 virtual VkResult                       acquireProfilingLockKHR                                                 (VkDevice device, const VkAcquireProfilingLockInfoKHR* pInfo) const = 0;
 virtual void                           releaseProfilingLockKHR                                                 (VkDevice device) const = 0;
-virtual void                           cmdDrawIndirectCountKHR                                                 (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride) const = 0;
-virtual void                           cmdDrawIndexedIndirectCountKHR                                  (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride) const = 0;
-virtual VkResult                       getSemaphoreCounterValueKHR                                             (VkDevice device, VkSemaphore semaphore, deUint64* pValue) const = 0;
-virtual VkResult                       waitSemaphoresKHR                                                               (VkDevice device, const VkSemaphoreWaitInfoKHR* pWaitInfo, deUint64 timeout) const = 0;
-virtual VkResult                       signalSemaphoreKHR                                                              (VkDevice device, const VkSemaphoreSignalInfoKHR* pSignalInfo) const = 0;
 virtual VkResult                       getPipelineExecutablePropertiesKHR                              (VkDevice device, const VkPipelineInfoKHR* pPipelineInfo, deUint32* pExecutableCount, VkPipelineExecutablePropertiesKHR* pProperties) const = 0;
 virtual VkResult                       getPipelineExecutableStatisticsKHR                              (VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, deUint32* pStatisticCount, VkPipelineExecutableStatisticKHR* pStatistics) const = 0;
 virtual VkResult                       getPipelineExecutableInternalRepresentationsKHR (VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, deUint32* pInternalRepresentationCount, VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations) const = 0;
@@ -252,9 +256,8 @@ virtual VkResult                    releasePerformanceConfigurationINTEL                    (VkDevice device, VkPe
 virtual VkResult                       queueSetPerformanceConfigurationINTEL                   (VkQueue queue, VkPerformanceConfigurationINTEL configuration) const = 0;
 virtual VkResult                       getPerformanceParameterINTEL                                    (VkDevice device, VkPerformanceParameterTypeINTEL parameter, VkPerformanceValueINTEL* pValue) const = 0;
 virtual void                           setLocalDimmingAMD                                                              (VkDevice device, VkSwapchainKHR swapChain, VkBool32 localDimmingEnable) const = 0;
-virtual VkDeviceAddress                getBufferDeviceAddressEXT                                               (VkDevice device, const VkBufferDeviceAddressInfoEXT* pInfo) const = 0;
+virtual VkDeviceAddress                getBufferDeviceAddressEXT                                               (VkDevice device, const VkBufferDeviceAddressInfo* pInfo) const = 0;
 virtual void                           cmdSetLineStippleEXT                                                    (VkCommandBuffer commandBuffer, deUint32 lineStippleFactor, deUint16 lineStipplePattern) const = 0;
-virtual void                           resetQueryPoolEXT                                                               (VkDevice device, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount) const = 0;
 virtual VkResult                       getAndroidHardwareBufferPropertiesANDROID               (VkDevice device, const struct pt::AndroidHardwareBufferPtr buffer, VkAndroidHardwareBufferPropertiesANDROID* pProperties) const = 0;
 virtual VkResult                       getMemoryAndroidHardwareBufferANDROID                   (VkDevice device, const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, struct pt::AndroidHardwareBufferPtr* pBuffer) const = 0;
 virtual VkResult                       getMemoryWin32HandleKHR                                                 (VkDevice device, const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, pt::Win32Handle* pHandle) const = 0;
index 3994a61..dea87db 100644 (file)
@@ -138,6 +138,8 @@ typedef enum VkResult {
     VK_ERROR_FRAGMENTED_POOL = -12,
     VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000,
     VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003,
+    VK_ERROR_FRAGMENTATION = -1000161000,
+    VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000,
     VK_ERROR_SURFACE_LOST_KHR = -1000000000,
     VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001,
     VK_SUBOPTIMAL_KHR = 1000001003,
@@ -146,12 +148,13 @@ typedef enum VkResult {
     VK_ERROR_VALIDATION_FAILED_EXT = -1000011001,
     VK_ERROR_INVALID_SHADER_NV = -1000012000,
     VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000,
-    VK_ERROR_FRAGMENTATION_EXT = -1000161000,
     VK_ERROR_NOT_PERMITTED_EXT = -1000174001,
-    VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = -1000244000,
     VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = -1000255000,
     VK_ERROR_OUT_OF_POOL_MEMORY_KHR = VK_ERROR_OUT_OF_POOL_MEMORY,
     VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = VK_ERROR_INVALID_EXTERNAL_HANDLE,
+    VK_ERROR_FRAGMENTATION_EXT = VK_ERROR_FRAGMENTATION,
+    VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS,
+    VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS,
     VK_RESULT_BEGIN_RANGE = VK_ERROR_FRAGMENTED_POOL,
     VK_RESULT_END_RANGE = VK_INCOMPLETE,
     VK_RESULT_RANGE_SIZE = (VK_INCOMPLETE - VK_ERROR_FRAGMENTED_POOL + 1),
@@ -273,6 +276,56 @@ typedef enum VkStructureType {
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000,
     VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = 1000063000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = 49,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = 50,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = 51,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = 52,
+    VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO = 1000147000,
+    VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 = 1000109000,
+    VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 = 1000109001,
+    VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 = 1000109002,
+    VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 = 1000109003,
+    VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 = 1000109004,
+    VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO = 1000109005,
+    VK_STRUCTURE_TYPE_SUBPASS_END_INFO = 1000109006,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = 1000177000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES = 1000196000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = 1000180000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = 1000082000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = 1000197000,
+    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = 1000161000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = 1000161001,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = 1000161002,
+    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = 1000161003,
+    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = 1000161004,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = 1000199000,
+    VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = 1000199001,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = 1000221000,
+    VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO = 1000246000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = 1000130000,
+    VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO = 1000130001,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = 1000211000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = 1000108000,
+    VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = 1000108001,
+    VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = 1000108002,
+    VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO = 1000108003,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = 1000253000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = 1000175000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = 1000241000,
+    VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT = 1000241001,
+    VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = 1000241002,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = 1000261000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = 1000207000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = 1000207001,
+    VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO = 1000207002,
+    VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO = 1000207003,
+    VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO = 1000207004,
+    VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO = 1000207005,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = 1000257000,
+    VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO = 1000244001,
+    VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = 1000257002,
+    VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = 1000257003,
+    VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = 1000257004,
     VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000,
     VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001,
     VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007,
@@ -332,7 +385,6 @@ typedef enum VkStructureType {
     VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001,
     VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR = 1000082000,
     VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000,
     VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX = 1000086000,
     VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX = 1000086001,
@@ -356,17 +408,6 @@ typedef enum VkStructureType {
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = 1000102000,
     VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = 1000102001,
     VK_STRUCTURE_TYPE_HDR_METADATA_EXT = 1000105000,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = 1000108000,
-    VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = 1000108001,
-    VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = 1000108002,
-    VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = 1000108003,
-    VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = 1000109000,
-    VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = 1000109001,
-    VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = 1000109002,
-    VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = 1000109003,
-    VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = 1000109004,
-    VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = 1000109005,
-    VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = 1000109006,
     VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = 1000111000,
     VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114000,
     VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114001,
@@ -401,8 +442,6 @@ typedef enum VkStructureType {
     VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129003,
     VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004,
     VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = 1000129005,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000,
-    VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT = 1000138000,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = 1000138001,
     VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = 1000138002,
@@ -412,7 +451,6 @@ typedef enum VkStructureType {
     VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT = 1000143002,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT = 1000143003,
     VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT = 1000143004,
-    VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = 1000147000,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT = 1000148000,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT = 1000148001,
     VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = 1000148002,
@@ -428,11 +466,6 @@ typedef enum VkStructureType {
     VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158005,
     VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000,
     VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001,
-    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT = 1000161000,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT = 1000161001,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT = 1000161002,
-    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT = 1000161003,
-    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT = 1000161004,
     VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = 1000164000,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = 1000164001,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = 1000164002,
@@ -453,12 +486,9 @@ typedef enum VkStructureType {
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = 1000170000,
     VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = 1000170001,
     VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = 1000174000,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = 1000175000,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = 1000177000,
     VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT = 1000178000,
     VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT = 1000178001,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT = 1000178002,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = 1000180000,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR = 1000181000,
     VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = 1000183000,
     VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000,
@@ -469,10 +499,6 @@ typedef enum VkStructureType {
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002,
     VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP = 1000191000,
     VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = 1000196000,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = 1000197000,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = 1000199000,
-    VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = 1000199001,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = 1000202000,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = 1000202001,
@@ -482,12 +508,6 @@ typedef enum VkStructureType {
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = 1000205002,
     VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV = 1000206000,
     VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = 1000207000,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = 1000207001,
-    VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR = 1000207002,
-    VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = 1000207003,
-    VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR = 1000207004,
-    VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR = 1000207005,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = 1000209000,
     VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL = 1000210000,
     VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL = 1000210001,
@@ -495,7 +515,6 @@ typedef enum VkStructureType {
     VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL = 1000210003,
     VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL = 1000210004,
     VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = 1000210005,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = 1000211000,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000,
     VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = 1000213000,
     VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = 1000213001,
@@ -504,7 +523,6 @@ typedef enum VkStructureType {
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = 1000218000,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = 1000218001,
     VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = 1000218002,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = 1000221000,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = 1000225000,
     VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = 1000225002,
@@ -515,13 +533,8 @@ typedef enum VkStructureType {
     VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001,
     VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR = 1000239000,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = 1000241000,
-    VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = 1000241001,
-    VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = 1000241002,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000,
-    VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = 1000244001,
     VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002,
-    VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = 1000246000,
     VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = 1000249000,
     VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249001,
@@ -531,7 +544,6 @@ typedef enum VkStructureType {
     VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV = 1000250002,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = 1000251000,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = 1000252000,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = 1000253000,
     VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT = 1000255000,
     VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = 1000255002,
     VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = 1000255001,
@@ -539,7 +551,6 @@ typedef enum VkStructureType {
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = 1000259000,
     VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = 1000259001,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = 1000259002,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = 1000261000,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = 1000269000,
     VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR = 1000269001,
@@ -585,10 +596,22 @@ typedef enum VkStructureType {
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO,
     VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES,
     VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES,
     VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO,
     VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES,
+    VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO,
+    VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO,
+    VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO,
+    VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2,
+    VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2,
+    VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2,
+    VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2,
+    VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2,
+    VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO,
+    VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = VK_STRUCTURE_TYPE_SUBPASS_END_INFO,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO,
     VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES,
     VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO,
@@ -600,11 +623,14 @@ typedef enum VkStructureType {
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES,
     VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS,
     VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES,
+    VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO,
     VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR = VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2,
     VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2,
     VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR = VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2,
     VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2,
     VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2,
+    VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO,
     VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO,
     VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO,
     VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR = VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO,
@@ -613,9 +639,41 @@ typedef enum VkStructureType {
     VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES,
     VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO,
     VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO,
+    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES,
+    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO,
+    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES,
     VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES,
+    VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES,
+    VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO,
+    VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO,
+    VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR = VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO,
+    VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR = VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES,
+    VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT,
+    VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT,
+    VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO,
+    VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES,
+    VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO,
+    VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO,
+    VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR = VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO,
+    VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES,
     VK_STRUCTURE_TYPE_BEGIN_RANGE = VK_STRUCTURE_TYPE_APPLICATION_INFO,
     VK_STRUCTURE_TYPE_END_RANGE = VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO,
     VK_STRUCTURE_TYPE_RANGE_SIZE = (VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO - VK_STRUCTURE_TYPE_APPLICATION_INFO + 1),
@@ -991,16 +1049,20 @@ typedef enum VkImageLayout {
     VK_IMAGE_LAYOUT_PREINITIALIZED = 8,
     VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000,
     VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001,
+    VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL = 1000241000,
+    VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL = 1000241001,
+    VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL = 1000241002,
+    VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003,
     VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002,
     VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000,
     VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = 1000164003,
     VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000,
-    VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR = 1000241000,
-    VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR = 1000241001,
-    VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000241002,
-    VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000241003,
     VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL,
     VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL,
+    VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL,
+    VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL,
+    VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL,
+    VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL,
     VK_IMAGE_LAYOUT_BEGIN_RANGE = VK_IMAGE_LAYOUT_UNDEFINED,
     VK_IMAGE_LAYOUT_END_RANGE = VK_IMAGE_LAYOUT_PREINITIALIZED,
     VK_IMAGE_LAYOUT_RANGE_SIZE = (VK_IMAGE_LAYOUT_PREINITIALIZED - VK_IMAGE_LAYOUT_UNDEFINED + 1),
@@ -1448,11 +1510,12 @@ typedef enum VkFormatFeatureFlagBits {
     VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 0x00200000,
     VK_FORMAT_FEATURE_DISJOINT_BIT = 0x00400000,
     VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 0x00800000,
+    VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 0x00010000,
     VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 0x00002000,
-    VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = 0x00010000,
     VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 0x01000000,
     VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = VK_FORMAT_FEATURE_TRANSFER_SRC_BIT,
     VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = VK_FORMAT_FEATURE_TRANSFER_DST_BIT,
+    VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT,
     VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT,
     VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT,
     VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT,
@@ -1660,7 +1723,9 @@ typedef enum VkBufferCreateFlagBits {
     VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002,
     VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 0x00000004,
     VK_BUFFER_CREATE_PROTECTED_BIT = 0x00000008,
-    VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 0x00000010,
+    VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 0x00000010,
+    VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT,
+    VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT,
     VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 } VkBufferCreateFlagBits;
 typedef VkFlags VkBufferCreateFlags;
@@ -1675,11 +1740,13 @@ typedef enum VkBufferUsageFlagBits {
     VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 0x00000040,
     VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 0x00000080,
     VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 0x00000100,
+    VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = 0x00020000,
     VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 0x00000800,
     VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 0x00001000,
     VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 0x00000200,
     VK_BUFFER_USAGE_RAY_TRACING_BIT_NV = 0x00000400,
-    VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = 0x00020000,
+    VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT,
+    VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR = VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT,
     VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 } VkBufferUsageFlagBits;
 typedef VkFlags VkBufferUsageFlags;
@@ -1776,22 +1843,25 @@ typedef enum VkSamplerCreateFlagBits {
 typedef VkFlags VkSamplerCreateFlags;
 
 typedef enum VkDescriptorSetLayoutCreateFlagBits {
+    VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = 0x00000002,
     VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = 0x00000001,
-    VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT = 0x00000002,
+    VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT = VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT,
     VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 } VkDescriptorSetLayoutCreateFlagBits;
 typedef VkFlags VkDescriptorSetLayoutCreateFlags;
 
 typedef enum VkDescriptorPoolCreateFlagBits {
     VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 0x00000001,
-    VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 0x00000002,
+    VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = 0x00000002,
+    VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT,
     VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 } VkDescriptorPoolCreateFlagBits;
 typedef VkFlags VkDescriptorPoolCreateFlags;
 typedef VkFlags VkDescriptorPoolResetFlags;
 
 typedef enum VkFramebufferCreateFlagBits {
-    VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = 0x00000001,
+    VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT = 0x00000001,
+    VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT,
     VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 } VkFramebufferCreateFlagBits;
 typedef VkFlags VkFramebufferCreateFlags;
@@ -4062,7 +4132,11 @@ typedef VkFlags VkPeerMemoryFeatureFlags;
 
 typedef enum VkMemoryAllocateFlagBits {
     VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 0x00000001,
+    VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = 0x00000002,
+    VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 0x00000004,
     VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT,
+    VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR = VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT,
+    VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT,
     VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 } VkMemoryAllocateFlagBits;
 typedef VkFlags VkMemoryAllocateFlags;
@@ -4829,6 +4903,760 @@ VKAPI_ATTR void VKAPI_CALL vkGetDescriptorSetLayoutSupport(
 #endif
 
 
+#define VK_VERSION_1_2 1
+// Vulkan 1.2 version number
+#define VK_API_VERSION_1_2 VK_MAKE_VERSION(1, 2, 0)// Patch version should always be set to 0
+
+typedef deUint64 VkDeviceAddress;
+#define VK_MAX_DRIVER_NAME_SIZE           256
+#define VK_MAX_DRIVER_INFO_SIZE           256
+
+typedef enum VkDriverId {
+    VK_DRIVER_ID_AMD_PROPRIETARY = 1,
+    VK_DRIVER_ID_AMD_OPEN_SOURCE = 2,
+    VK_DRIVER_ID_MESA_RADV = 3,
+    VK_DRIVER_ID_NVIDIA_PROPRIETARY = 4,
+    VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS = 5,
+    VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA = 6,
+    VK_DRIVER_ID_IMAGINATION_PROPRIETARY = 7,
+    VK_DRIVER_ID_QUALCOMM_PROPRIETARY = 8,
+    VK_DRIVER_ID_ARM_PROPRIETARY = 9,
+    VK_DRIVER_ID_GOOGLE_SWIFTSHADER = 10,
+    VK_DRIVER_ID_GGP_PROPRIETARY = 11,
+    VK_DRIVER_ID_BROADCOM_PROPRIETARY = 12,
+    VK_DRIVER_ID_AMD_PROPRIETARY_KHR = VK_DRIVER_ID_AMD_PROPRIETARY,
+    VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = VK_DRIVER_ID_AMD_OPEN_SOURCE,
+    VK_DRIVER_ID_MESA_RADV_KHR = VK_DRIVER_ID_MESA_RADV,
+    VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = VK_DRIVER_ID_NVIDIA_PROPRIETARY,
+    VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS,
+    VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA,
+    VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = VK_DRIVER_ID_IMAGINATION_PROPRIETARY,
+    VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = VK_DRIVER_ID_QUALCOMM_PROPRIETARY,
+    VK_DRIVER_ID_ARM_PROPRIETARY_KHR = VK_DRIVER_ID_ARM_PROPRIETARY,
+    VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR = VK_DRIVER_ID_GOOGLE_SWIFTSHADER,
+    VK_DRIVER_ID_GGP_PROPRIETARY_KHR = VK_DRIVER_ID_GGP_PROPRIETARY,
+    VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR = VK_DRIVER_ID_BROADCOM_PROPRIETARY,
+    VK_DRIVER_ID_BEGIN_RANGE = VK_DRIVER_ID_AMD_PROPRIETARY,
+    VK_DRIVER_ID_END_RANGE = VK_DRIVER_ID_BROADCOM_PROPRIETARY,
+    VK_DRIVER_ID_RANGE_SIZE = (VK_DRIVER_ID_BROADCOM_PROPRIETARY - VK_DRIVER_ID_AMD_PROPRIETARY + 1),
+    VK_DRIVER_ID_MAX_ENUM = 0x7FFFFFFF
+} VkDriverId;
+
+typedef enum VkShaderFloatControlsIndependence {
+    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = 0,
+    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = 1,
+    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = 2,
+    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY,
+    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL,
+    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE,
+    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_BEGIN_RANGE = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY,
+    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_END_RANGE = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE,
+    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_RANGE_SIZE = (VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE - VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY + 1),
+    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM = 0x7FFFFFFF
+} VkShaderFloatControlsIndependence;
+
+typedef enum VkSamplerReductionMode {
+    VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE = 0,
+    VK_SAMPLER_REDUCTION_MODE_MIN = 1,
+    VK_SAMPLER_REDUCTION_MODE_MAX = 2,
+    VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE,
+    VK_SAMPLER_REDUCTION_MODE_MIN_EXT = VK_SAMPLER_REDUCTION_MODE_MIN,
+    VK_SAMPLER_REDUCTION_MODE_MAX_EXT = VK_SAMPLER_REDUCTION_MODE_MAX,
+    VK_SAMPLER_REDUCTION_MODE_BEGIN_RANGE = VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE,
+    VK_SAMPLER_REDUCTION_MODE_END_RANGE = VK_SAMPLER_REDUCTION_MODE_MAX,
+    VK_SAMPLER_REDUCTION_MODE_RANGE_SIZE = (VK_SAMPLER_REDUCTION_MODE_MAX - VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE + 1),
+    VK_SAMPLER_REDUCTION_MODE_MAX_ENUM = 0x7FFFFFFF
+} VkSamplerReductionMode;
+
+typedef enum VkSemaphoreType {
+    VK_SEMAPHORE_TYPE_BINARY = 0,
+    VK_SEMAPHORE_TYPE_TIMELINE = 1,
+    VK_SEMAPHORE_TYPE_BINARY_KHR = VK_SEMAPHORE_TYPE_BINARY,
+    VK_SEMAPHORE_TYPE_TIMELINE_KHR = VK_SEMAPHORE_TYPE_TIMELINE,
+    VK_SEMAPHORE_TYPE_BEGIN_RANGE = VK_SEMAPHORE_TYPE_BINARY,
+    VK_SEMAPHORE_TYPE_END_RANGE = VK_SEMAPHORE_TYPE_TIMELINE,
+    VK_SEMAPHORE_TYPE_RANGE_SIZE = (VK_SEMAPHORE_TYPE_TIMELINE - VK_SEMAPHORE_TYPE_BINARY + 1),
+    VK_SEMAPHORE_TYPE_MAX_ENUM = 0x7FFFFFFF
+} VkSemaphoreType;
+
+typedef enum VkResolveModeFlagBits {
+    VK_RESOLVE_MODE_NONE = 0,
+    VK_RESOLVE_MODE_SAMPLE_ZERO_BIT = 0x00000001,
+    VK_RESOLVE_MODE_AVERAGE_BIT = 0x00000002,
+    VK_RESOLVE_MODE_MIN_BIT = 0x00000004,
+    VK_RESOLVE_MODE_MAX_BIT = 0x00000008,
+    VK_RESOLVE_MODE_NONE_KHR = VK_RESOLVE_MODE_NONE,
+    VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = VK_RESOLVE_MODE_SAMPLE_ZERO_BIT,
+    VK_RESOLVE_MODE_AVERAGE_BIT_KHR = VK_RESOLVE_MODE_AVERAGE_BIT,
+    VK_RESOLVE_MODE_MIN_BIT_KHR = VK_RESOLVE_MODE_MIN_BIT,
+    VK_RESOLVE_MODE_MAX_BIT_KHR = VK_RESOLVE_MODE_MAX_BIT,
+    VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkResolveModeFlagBits;
+typedef VkFlags VkResolveModeFlags;
+
+typedef enum VkDescriptorBindingFlagBits {
+    VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = 0x00000001,
+    VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = 0x00000002,
+    VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = 0x00000004,
+    VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = 0x00000008,
+    VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT = VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT,
+    VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT = VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT,
+    VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT = VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT,
+    VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT = VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT,
+    VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkDescriptorBindingFlagBits;
+typedef VkFlags VkDescriptorBindingFlags;
+
+typedef enum VkSemaphoreWaitFlagBits {
+    VK_SEMAPHORE_WAIT_ANY_BIT = 0x00000001,
+    VK_SEMAPHORE_WAIT_ANY_BIT_KHR = VK_SEMAPHORE_WAIT_ANY_BIT,
+    VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkSemaphoreWaitFlagBits;
+typedef VkFlags VkSemaphoreWaitFlags;
+typedef struct VkPhysicalDeviceVulkan11Features {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           storageBuffer16BitAccess;
+    VkBool32           uniformAndStorageBuffer16BitAccess;
+    VkBool32           storagePushConstant16;
+    VkBool32           storageInputOutput16;
+    VkBool32           multiview;
+    VkBool32           multiviewGeometryShader;
+    VkBool32           multiviewTessellationShader;
+    VkBool32           variablePointersStorageBuffer;
+    VkBool32           variablePointers;
+    VkBool32           protectedMemory;
+    VkBool32           samplerYcbcrConversion;
+    VkBool32           shaderDrawParameters;
+} VkPhysicalDeviceVulkan11Features;
+
+typedef struct VkPhysicalDeviceVulkan11Properties {
+    VkStructureType            sType;
+    void*                      pNext;
+    deUint8                    deviceUUID[VK_UUID_SIZE];
+    deUint8                    driverUUID[VK_UUID_SIZE];
+    deUint8                    deviceLUID[VK_LUID_SIZE];
+    deUint32                   deviceNodeMask;
+    VkBool32                   deviceLUIDValid;
+    deUint32                   subgroupSize;
+    VkShaderStageFlags         subgroupSupportedStages;
+    VkSubgroupFeatureFlags     subgroupSupportedOperations;
+    VkBool32                   subgroupQuadOperationsInAllStages;
+    VkPointClippingBehavior    pointClippingBehavior;
+    deUint32                   maxMultiviewViewCount;
+    deUint32                   maxMultiviewInstanceIndex;
+    VkBool32                   protectedNoFault;
+    deUint32                   maxPerSetDescriptors;
+    VkDeviceSize               maxMemoryAllocationSize;
+} VkPhysicalDeviceVulkan11Properties;
+
+typedef struct VkPhysicalDeviceVulkan12Features {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           samplerMirrorClampToEdge;
+    VkBool32           drawIndirectCount;
+    VkBool32           storageBuffer8BitAccess;
+    VkBool32           uniformAndStorageBuffer8BitAccess;
+    VkBool32           storagePushConstant8;
+    VkBool32           shaderBufferInt64Atomics;
+    VkBool32           shaderSharedInt64Atomics;
+    VkBool32           shaderFloat16;
+    VkBool32           shaderInt8;
+    VkBool32           descriptorIndexing;
+    VkBool32           shaderInputAttachmentArrayDynamicIndexing;
+    VkBool32           shaderUniformTexelBufferArrayDynamicIndexing;
+    VkBool32           shaderStorageTexelBufferArrayDynamicIndexing;
+    VkBool32           shaderUniformBufferArrayNonUniformIndexing;
+    VkBool32           shaderSampledImageArrayNonUniformIndexing;
+    VkBool32           shaderStorageBufferArrayNonUniformIndexing;
+    VkBool32           shaderStorageImageArrayNonUniformIndexing;
+    VkBool32           shaderInputAttachmentArrayNonUniformIndexing;
+    VkBool32           shaderUniformTexelBufferArrayNonUniformIndexing;
+    VkBool32           shaderStorageTexelBufferArrayNonUniformIndexing;
+    VkBool32           descriptorBindingUniformBufferUpdateAfterBind;
+    VkBool32           descriptorBindingSampledImageUpdateAfterBind;
+    VkBool32           descriptorBindingStorageImageUpdateAfterBind;
+    VkBool32           descriptorBindingStorageBufferUpdateAfterBind;
+    VkBool32           descriptorBindingUniformTexelBufferUpdateAfterBind;
+    VkBool32           descriptorBindingStorageTexelBufferUpdateAfterBind;
+    VkBool32           descriptorBindingUpdateUnusedWhilePending;
+    VkBool32           descriptorBindingPartiallyBound;
+    VkBool32           descriptorBindingVariableDescriptorCount;
+    VkBool32           runtimeDescriptorArray;
+    VkBool32           samplerFilterMinmax;
+    VkBool32           scalarBlockLayout;
+    VkBool32           imagelessFramebuffer;
+    VkBool32           uniformBufferStandardLayout;
+    VkBool32           shaderSubgroupExtendedTypes;
+    VkBool32           separateDepthStencilLayouts;
+    VkBool32           hostQueryReset;
+    VkBool32           timelineSemaphore;
+    VkBool32           bufferDeviceAddress;
+    VkBool32           bufferDeviceAddressCaptureReplay;
+    VkBool32           bufferDeviceAddressMultiDevice;
+    VkBool32           vulkanMemoryModel;
+    VkBool32           vulkanMemoryModelDeviceScope;
+    VkBool32           vulkanMemoryModelAvailabilityVisibilityChains;
+    VkBool32           shaderOutputViewportIndex;
+    VkBool32           shaderOutputLayer;
+    VkBool32           subgroupBroadcastDynamicId;
+} VkPhysicalDeviceVulkan12Features;
+
+typedef struct VkConformanceVersion {
+    deUint8    major;
+    deUint8    minor;
+    deUint8    subminor;
+    deUint8    patch;
+} VkConformanceVersion;
+
+typedef struct VkPhysicalDeviceVulkan12Properties {
+    VkStructureType                      sType;
+    void*                                pNext;
+    VkDriverId                           driverID;
+    char                                 driverName[VK_MAX_DRIVER_NAME_SIZE];
+    char                                 driverInfo[VK_MAX_DRIVER_INFO_SIZE];
+    VkConformanceVersion                 conformanceVersion;
+    VkShaderFloatControlsIndependence    denormBehaviorIndependence;
+    VkShaderFloatControlsIndependence    roundingModeIndependence;
+    VkBool32                             shaderSignedZeroInfNanPreserveFloat16;
+    VkBool32                             shaderSignedZeroInfNanPreserveFloat32;
+    VkBool32                             shaderSignedZeroInfNanPreserveFloat64;
+    VkBool32                             shaderDenormPreserveFloat16;
+    VkBool32                             shaderDenormPreserveFloat32;
+    VkBool32                             shaderDenormPreserveFloat64;
+    VkBool32                             shaderDenormFlushToZeroFloat16;
+    VkBool32                             shaderDenormFlushToZeroFloat32;
+    VkBool32                             shaderDenormFlushToZeroFloat64;
+    VkBool32                             shaderRoundingModeRTEFloat16;
+    VkBool32                             shaderRoundingModeRTEFloat32;
+    VkBool32                             shaderRoundingModeRTEFloat64;
+    VkBool32                             shaderRoundingModeRTZFloat16;
+    VkBool32                             shaderRoundingModeRTZFloat32;
+    VkBool32                             shaderRoundingModeRTZFloat64;
+    deUint32                             maxUpdateAfterBindDescriptorsInAllPools;
+    VkBool32                             shaderUniformBufferArrayNonUniformIndexingNative;
+    VkBool32                             shaderSampledImageArrayNonUniformIndexingNative;
+    VkBool32                             shaderStorageBufferArrayNonUniformIndexingNative;
+    VkBool32                             shaderStorageImageArrayNonUniformIndexingNative;
+    VkBool32                             shaderInputAttachmentArrayNonUniformIndexingNative;
+    VkBool32                             robustBufferAccessUpdateAfterBind;
+    VkBool32                             quadDivergentImplicitLod;
+    deUint32                             maxPerStageDescriptorUpdateAfterBindSamplers;
+    deUint32                             maxPerStageDescriptorUpdateAfterBindUniformBuffers;
+    deUint32                             maxPerStageDescriptorUpdateAfterBindStorageBuffers;
+    deUint32                             maxPerStageDescriptorUpdateAfterBindSampledImages;
+    deUint32                             maxPerStageDescriptorUpdateAfterBindStorageImages;
+    deUint32                             maxPerStageDescriptorUpdateAfterBindInputAttachments;
+    deUint32                             maxPerStageUpdateAfterBindResources;
+    deUint32                             maxDescriptorSetUpdateAfterBindSamplers;
+    deUint32                             maxDescriptorSetUpdateAfterBindUniformBuffers;
+    deUint32                             maxDescriptorSetUpdateAfterBindUniformBuffersDynamic;
+    deUint32                             maxDescriptorSetUpdateAfterBindStorageBuffers;
+    deUint32                             maxDescriptorSetUpdateAfterBindStorageBuffersDynamic;
+    deUint32                             maxDescriptorSetUpdateAfterBindSampledImages;
+    deUint32                             maxDescriptorSetUpdateAfterBindStorageImages;
+    deUint32                             maxDescriptorSetUpdateAfterBindInputAttachments;
+    VkResolveModeFlags                   supportedDepthResolveModes;
+    VkResolveModeFlags                   supportedStencilResolveModes;
+    VkBool32                             independentResolveNone;
+    VkBool32                             independentResolve;
+    VkBool32                             filterMinmaxSingleComponentFormats;
+    VkBool32                             filterMinmaxImageComponentMapping;
+    deUint64                             maxTimelineSemaphoreValueDifference;
+    VkSampleCountFlags                   framebufferIntegerColorSampleCounts;
+} VkPhysicalDeviceVulkan12Properties;
+
+typedef struct VkImageFormatListCreateInfo {
+    VkStructureType    sType;
+    const void*        pNext;
+    deUint32           viewFormatCount;
+    const VkFormat*    pViewFormats;
+} VkImageFormatListCreateInfo;
+
+typedef struct VkAttachmentDescription2 {
+    VkStructureType                 sType;
+    const void*                     pNext;
+    VkAttachmentDescriptionFlags    flags;
+    VkFormat                        format;
+    VkSampleCountFlagBits           samples;
+    VkAttachmentLoadOp              loadOp;
+    VkAttachmentStoreOp             storeOp;
+    VkAttachmentLoadOp              stencilLoadOp;
+    VkAttachmentStoreOp             stencilStoreOp;
+    VkImageLayout                   initialLayout;
+    VkImageLayout                   finalLayout;
+} VkAttachmentDescription2;
+
+typedef struct VkAttachmentReference2 {
+    VkStructureType       sType;
+    const void*           pNext;
+    deUint32              attachment;
+    VkImageLayout         layout;
+    VkImageAspectFlags    aspectMask;
+} VkAttachmentReference2;
+
+typedef struct VkSubpassDescription2 {
+    VkStructureType                  sType;
+    const void*                      pNext;
+    VkSubpassDescriptionFlags        flags;
+    VkPipelineBindPoint              pipelineBindPoint;
+    deUint32                         viewMask;
+    deUint32                         inputAttachmentCount;
+    const VkAttachmentReference2*    pInputAttachments;
+    deUint32                         colorAttachmentCount;
+    const VkAttachmentReference2*    pColorAttachments;
+    const VkAttachmentReference2*    pResolveAttachments;
+    const VkAttachmentReference2*    pDepthStencilAttachment;
+    deUint32                         preserveAttachmentCount;
+    const deUint32*                  pPreserveAttachments;
+} VkSubpassDescription2;
+
+typedef struct VkSubpassDependency2 {
+    VkStructureType         sType;
+    const void*             pNext;
+    deUint32                srcSubpass;
+    deUint32                dstSubpass;
+    VkPipelineStageFlags    srcStageMask;
+    VkPipelineStageFlags    dstStageMask;
+    VkAccessFlags           srcAccessMask;
+    VkAccessFlags           dstAccessMask;
+    VkDependencyFlags       dependencyFlags;
+    deInt32                 viewOffset;
+} VkSubpassDependency2;
+
+typedef struct VkRenderPassCreateInfo2 {
+    VkStructureType                    sType;
+    const void*                        pNext;
+    VkRenderPassCreateFlags            flags;
+    deUint32                           attachmentCount;
+    const VkAttachmentDescription2*    pAttachments;
+    deUint32                           subpassCount;
+    const VkSubpassDescription2*       pSubpasses;
+    deUint32                           dependencyCount;
+    const VkSubpassDependency2*        pDependencies;
+    deUint32                           correlatedViewMaskCount;
+    const deUint32*                    pCorrelatedViewMasks;
+} VkRenderPassCreateInfo2;
+
+typedef struct VkSubpassBeginInfo {
+    VkStructureType      sType;
+    const void*          pNext;
+    VkSubpassContents    contents;
+} VkSubpassBeginInfo;
+
+typedef struct VkSubpassEndInfo {
+    VkStructureType    sType;
+    const void*        pNext;
+} VkSubpassEndInfo;
+
+typedef struct VkPhysicalDevice8BitStorageFeatures {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           storageBuffer8BitAccess;
+    VkBool32           uniformAndStorageBuffer8BitAccess;
+    VkBool32           storagePushConstant8;
+} VkPhysicalDevice8BitStorageFeatures;
+
+typedef struct VkPhysicalDeviceDriverProperties {
+    VkStructureType         sType;
+    void*                   pNext;
+    VkDriverId              driverID;
+    char                    driverName[VK_MAX_DRIVER_NAME_SIZE];
+    char                    driverInfo[VK_MAX_DRIVER_INFO_SIZE];
+    VkConformanceVersion    conformanceVersion;
+} VkPhysicalDeviceDriverProperties;
+
+typedef struct VkPhysicalDeviceShaderAtomicInt64Features {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           shaderBufferInt64Atomics;
+    VkBool32           shaderSharedInt64Atomics;
+} VkPhysicalDeviceShaderAtomicInt64Features;
+
+typedef struct VkPhysicalDeviceShaderFloat16Int8Features {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           shaderFloat16;
+    VkBool32           shaderInt8;
+} VkPhysicalDeviceShaderFloat16Int8Features;
+
+typedef struct VkPhysicalDeviceFloatControlsProperties {
+    VkStructureType                      sType;
+    void*                                pNext;
+    VkShaderFloatControlsIndependence    denormBehaviorIndependence;
+    VkShaderFloatControlsIndependence    roundingModeIndependence;
+    VkBool32                             shaderSignedZeroInfNanPreserveFloat16;
+    VkBool32                             shaderSignedZeroInfNanPreserveFloat32;
+    VkBool32                             shaderSignedZeroInfNanPreserveFloat64;
+    VkBool32                             shaderDenormPreserveFloat16;
+    VkBool32                             shaderDenormPreserveFloat32;
+    VkBool32                             shaderDenormPreserveFloat64;
+    VkBool32                             shaderDenormFlushToZeroFloat16;
+    VkBool32                             shaderDenormFlushToZeroFloat32;
+    VkBool32                             shaderDenormFlushToZeroFloat64;
+    VkBool32                             shaderRoundingModeRTEFloat16;
+    VkBool32                             shaderRoundingModeRTEFloat32;
+    VkBool32                             shaderRoundingModeRTEFloat64;
+    VkBool32                             shaderRoundingModeRTZFloat16;
+    VkBool32                             shaderRoundingModeRTZFloat32;
+    VkBool32                             shaderRoundingModeRTZFloat64;
+} VkPhysicalDeviceFloatControlsProperties;
+
+typedef struct VkDescriptorSetLayoutBindingFlagsCreateInfo {
+    VkStructureType                    sType;
+    const void*                        pNext;
+    deUint32                           bindingCount;
+    const VkDescriptorBindingFlags*    pBindingFlags;
+} VkDescriptorSetLayoutBindingFlagsCreateInfo;
+
+typedef struct VkPhysicalDeviceDescriptorIndexingFeatures {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           shaderInputAttachmentArrayDynamicIndexing;
+    VkBool32           shaderUniformTexelBufferArrayDynamicIndexing;
+    VkBool32           shaderStorageTexelBufferArrayDynamicIndexing;
+    VkBool32           shaderUniformBufferArrayNonUniformIndexing;
+    VkBool32           shaderSampledImageArrayNonUniformIndexing;
+    VkBool32           shaderStorageBufferArrayNonUniformIndexing;
+    VkBool32           shaderStorageImageArrayNonUniformIndexing;
+    VkBool32           shaderInputAttachmentArrayNonUniformIndexing;
+    VkBool32           shaderUniformTexelBufferArrayNonUniformIndexing;
+    VkBool32           shaderStorageTexelBufferArrayNonUniformIndexing;
+    VkBool32           descriptorBindingUniformBufferUpdateAfterBind;
+    VkBool32           descriptorBindingSampledImageUpdateAfterBind;
+    VkBool32           descriptorBindingStorageImageUpdateAfterBind;
+    VkBool32           descriptorBindingStorageBufferUpdateAfterBind;
+    VkBool32           descriptorBindingUniformTexelBufferUpdateAfterBind;
+    VkBool32           descriptorBindingStorageTexelBufferUpdateAfterBind;
+    VkBool32           descriptorBindingUpdateUnusedWhilePending;
+    VkBool32           descriptorBindingPartiallyBound;
+    VkBool32           descriptorBindingVariableDescriptorCount;
+    VkBool32           runtimeDescriptorArray;
+} VkPhysicalDeviceDescriptorIndexingFeatures;
+
+typedef struct VkPhysicalDeviceDescriptorIndexingProperties {
+    VkStructureType    sType;
+    void*              pNext;
+    deUint32           maxUpdateAfterBindDescriptorsInAllPools;
+    VkBool32           shaderUniformBufferArrayNonUniformIndexingNative;
+    VkBool32           shaderSampledImageArrayNonUniformIndexingNative;
+    VkBool32           shaderStorageBufferArrayNonUniformIndexingNative;
+    VkBool32           shaderStorageImageArrayNonUniformIndexingNative;
+    VkBool32           shaderInputAttachmentArrayNonUniformIndexingNative;
+    VkBool32           robustBufferAccessUpdateAfterBind;
+    VkBool32           quadDivergentImplicitLod;
+    deUint32           maxPerStageDescriptorUpdateAfterBindSamplers;
+    deUint32           maxPerStageDescriptorUpdateAfterBindUniformBuffers;
+    deUint32           maxPerStageDescriptorUpdateAfterBindStorageBuffers;
+    deUint32           maxPerStageDescriptorUpdateAfterBindSampledImages;
+    deUint32           maxPerStageDescriptorUpdateAfterBindStorageImages;
+    deUint32           maxPerStageDescriptorUpdateAfterBindInputAttachments;
+    deUint32           maxPerStageUpdateAfterBindResources;
+    deUint32           maxDescriptorSetUpdateAfterBindSamplers;
+    deUint32           maxDescriptorSetUpdateAfterBindUniformBuffers;
+    deUint32           maxDescriptorSetUpdateAfterBindUniformBuffersDynamic;
+    deUint32           maxDescriptorSetUpdateAfterBindStorageBuffers;
+    deUint32           maxDescriptorSetUpdateAfterBindStorageBuffersDynamic;
+    deUint32           maxDescriptorSetUpdateAfterBindSampledImages;
+    deUint32           maxDescriptorSetUpdateAfterBindStorageImages;
+    deUint32           maxDescriptorSetUpdateAfterBindInputAttachments;
+} VkPhysicalDeviceDescriptorIndexingProperties;
+
+typedef struct VkDescriptorSetVariableDescriptorCountAllocateInfo {
+    VkStructureType    sType;
+    const void*        pNext;
+    deUint32           descriptorSetCount;
+    const deUint32*    pDescriptorCounts;
+} VkDescriptorSetVariableDescriptorCountAllocateInfo;
+
+typedef struct VkDescriptorSetVariableDescriptorCountLayoutSupport {
+    VkStructureType    sType;
+    void*              pNext;
+    deUint32           maxVariableDescriptorCount;
+} VkDescriptorSetVariableDescriptorCountLayoutSupport;
+
+typedef struct VkSubpassDescriptionDepthStencilResolve {
+    VkStructureType                  sType;
+    const void*                      pNext;
+    VkResolveModeFlagBits            depthResolveMode;
+    VkResolveModeFlagBits            stencilResolveMode;
+    const VkAttachmentReference2*    pDepthStencilResolveAttachment;
+} VkSubpassDescriptionDepthStencilResolve;
+
+typedef struct VkPhysicalDeviceDepthStencilResolveProperties {
+    VkStructureType       sType;
+    void*                 pNext;
+    VkResolveModeFlags    supportedDepthResolveModes;
+    VkResolveModeFlags    supportedStencilResolveModes;
+    VkBool32              independentResolveNone;
+    VkBool32              independentResolve;
+} VkPhysicalDeviceDepthStencilResolveProperties;
+
+typedef struct VkPhysicalDeviceScalarBlockLayoutFeatures {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           scalarBlockLayout;
+} VkPhysicalDeviceScalarBlockLayoutFeatures;
+
+typedef struct VkImageStencilUsageCreateInfo {
+    VkStructureType      sType;
+    const void*          pNext;
+    VkImageUsageFlags    stencilUsage;
+} VkImageStencilUsageCreateInfo;
+
+typedef struct VkSamplerReductionModeCreateInfo {
+    VkStructureType           sType;
+    const void*               pNext;
+    VkSamplerReductionMode    reductionMode;
+} VkSamplerReductionModeCreateInfo;
+
+typedef struct VkPhysicalDeviceSamplerFilterMinmaxProperties {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           filterMinmaxSingleComponentFormats;
+    VkBool32           filterMinmaxImageComponentMapping;
+} VkPhysicalDeviceSamplerFilterMinmaxProperties;
+
+typedef struct VkPhysicalDeviceVulkanMemoryModelFeatures {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           vulkanMemoryModel;
+    VkBool32           vulkanMemoryModelDeviceScope;
+    VkBool32           vulkanMemoryModelAvailabilityVisibilityChains;
+} VkPhysicalDeviceVulkanMemoryModelFeatures;
+
+typedef struct VkPhysicalDeviceImagelessFramebufferFeatures {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           imagelessFramebuffer;
+} VkPhysicalDeviceImagelessFramebufferFeatures;
+
+typedef struct VkFramebufferAttachmentImageInfo {
+    VkStructureType       sType;
+    const void*           pNext;
+    VkImageCreateFlags    flags;
+    VkImageUsageFlags     usage;
+    deUint32              width;
+    deUint32              height;
+    deUint32              layerCount;
+    deUint32              viewFormatCount;
+    const VkFormat*       pViewFormats;
+} VkFramebufferAttachmentImageInfo;
+
+typedef struct VkFramebufferAttachmentsCreateInfo {
+    VkStructureType                            sType;
+    const void*                                pNext;
+    deUint32                                   attachmentImageInfoCount;
+    const VkFramebufferAttachmentImageInfo*    pAttachmentImageInfos;
+} VkFramebufferAttachmentsCreateInfo;
+
+typedef struct VkRenderPassAttachmentBeginInfo {
+    VkStructureType       sType;
+    const void*           pNext;
+    deUint32              attachmentCount;
+    const VkImageView*    pAttachments;
+} VkRenderPassAttachmentBeginInfo;
+
+typedef struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           uniformBufferStandardLayout;
+} VkPhysicalDeviceUniformBufferStandardLayoutFeatures;
+
+typedef struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           shaderSubgroupExtendedTypes;
+} VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures;
+
+typedef struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           separateDepthStencilLayouts;
+} VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures;
+
+typedef struct VkAttachmentReferenceStencilLayout {
+    VkStructureType    sType;
+    void*              pNext;
+    VkImageLayout      stencilLayout;
+} VkAttachmentReferenceStencilLayout;
+
+typedef struct VkAttachmentDescriptionStencilLayout {
+    VkStructureType    sType;
+    void*              pNext;
+    VkImageLayout      stencilInitialLayout;
+    VkImageLayout      stencilFinalLayout;
+} VkAttachmentDescriptionStencilLayout;
+
+typedef struct VkPhysicalDeviceHostQueryResetFeatures {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           hostQueryReset;
+} VkPhysicalDeviceHostQueryResetFeatures;
+
+typedef struct VkPhysicalDeviceTimelineSemaphoreFeatures {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           timelineSemaphore;
+} VkPhysicalDeviceTimelineSemaphoreFeatures;
+
+typedef struct VkPhysicalDeviceTimelineSemaphoreProperties {
+    VkStructureType    sType;
+    void*              pNext;
+    deUint64           maxTimelineSemaphoreValueDifference;
+} VkPhysicalDeviceTimelineSemaphoreProperties;
+
+typedef struct VkSemaphoreTypeCreateInfo {
+    VkStructureType    sType;
+    const void*        pNext;
+    VkSemaphoreType    semaphoreType;
+    deUint64           initialValue;
+} VkSemaphoreTypeCreateInfo;
+
+typedef struct VkTimelineSemaphoreSubmitInfo {
+    VkStructureType    sType;
+    const void*        pNext;
+    deUint32           waitSemaphoreValueCount;
+    const deUint64*    pWaitSemaphoreValues;
+    deUint32           signalSemaphoreValueCount;
+    const deUint64*    pSignalSemaphoreValues;
+} VkTimelineSemaphoreSubmitInfo;
+
+typedef struct VkSemaphoreWaitInfo {
+    VkStructureType         sType;
+    const void*             pNext;
+    VkSemaphoreWaitFlags    flags;
+    deUint32                semaphoreCount;
+    const VkSemaphore*      pSemaphores;
+    const deUint64*         pValues;
+} VkSemaphoreWaitInfo;
+
+typedef struct VkSemaphoreSignalInfo {
+    VkStructureType    sType;
+    const void*        pNext;
+    VkSemaphore        semaphore;
+    deUint64           value;
+} VkSemaphoreSignalInfo;
+
+typedef struct VkPhysicalDeviceBufferDeviceAddressFeatures {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           bufferDeviceAddress;
+    VkBool32           bufferDeviceAddressCaptureReplay;
+    VkBool32           bufferDeviceAddressMultiDevice;
+} VkPhysicalDeviceBufferDeviceAddressFeatures;
+
+typedef struct VkBufferDeviceAddressInfo {
+    VkStructureType    sType;
+    const void*        pNext;
+    VkBuffer           buffer;
+} VkBufferDeviceAddressInfo;
+
+typedef struct VkBufferOpaqueCaptureAddressCreateInfo {
+    VkStructureType    sType;
+    const void*        pNext;
+    deUint64           opaqueCaptureAddress;
+} VkBufferOpaqueCaptureAddressCreateInfo;
+
+typedef struct VkMemoryOpaqueCaptureAddressAllocateInfo {
+    VkStructureType    sType;
+    const void*        pNext;
+    deUint64           opaqueCaptureAddress;
+} VkMemoryOpaqueCaptureAddressAllocateInfo;
+
+typedef struct VkDeviceMemoryOpaqueCaptureAddressInfo {
+    VkStructureType    sType;
+    const void*        pNext;
+    VkDeviceMemory     memory;
+} VkDeviceMemoryOpaqueCaptureAddressInfo;
+
+typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectCount)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride);
+typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirectCount)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride);
+typedef VkResult (VKAPI_PTR *PFN_vkCreateRenderPass2)(VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
+typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass2)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo*      pRenderPassBegin, const VkSubpassBeginInfo*      pSubpassBeginInfo);
+typedef void (VKAPI_PTR *PFN_vkCmdNextSubpass2)(VkCommandBuffer commandBuffer, const VkSubpassBeginInfo*      pSubpassBeginInfo, const VkSubpassEndInfo*        pSubpassEndInfo);
+typedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass2)(VkCommandBuffer commandBuffer, const VkSubpassEndInfo*        pSubpassEndInfo);
+typedef void (VKAPI_PTR *PFN_vkResetQueryPool)(VkDevice device, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount);
+typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreCounterValue)(VkDevice device, VkSemaphore semaphore, deUint64* pValue);
+typedef VkResult (VKAPI_PTR *PFN_vkWaitSemaphores)(VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, deUint64 timeout);
+typedef VkResult (VKAPI_PTR *PFN_vkSignalSemaphore)(VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo);
+typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetBufferDeviceAddress)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
+typedef deUint64 (VKAPI_PTR *PFN_vkGetBufferOpaqueCaptureAddress)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
+typedef deUint64 (VKAPI_PTR *PFN_vkGetDeviceMemoryOpaqueCaptureAddress)(VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectCount(
+    VkCommandBuffer                             commandBuffer,
+    VkBuffer                                    buffer,
+    VkDeviceSize                                offset,
+    VkBuffer                                    countBuffer,
+    VkDeviceSize                                countBufferOffset,
+    deUint32                                    maxDrawCount,
+    deUint32                                    stride);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCount(
+    VkCommandBuffer                             commandBuffer,
+    VkBuffer                                    buffer,
+    VkDeviceSize                                offset,
+    VkBuffer                                    countBuffer,
+    VkDeviceSize                                countBufferOffset,
+    deUint32                                    maxDrawCount,
+    deUint32                                    stride);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass2(
+    VkDevice                                    device,
+    const VkRenderPassCreateInfo2*              pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkRenderPass*                               pRenderPass);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass2(
+    VkCommandBuffer                             commandBuffer,
+    const VkRenderPassBeginInfo*                pRenderPassBegin,
+    const VkSubpassBeginInfo*                   pSubpassBeginInfo);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdNextSubpass2(
+    VkCommandBuffer                             commandBuffer,
+    const VkSubpassBeginInfo*                   pSubpassBeginInfo,
+    const VkSubpassEndInfo*                     pSubpassEndInfo);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass2(
+    VkCommandBuffer                             commandBuffer,
+    const VkSubpassEndInfo*                     pSubpassEndInfo);
+
+VKAPI_ATTR void VKAPI_CALL vkResetQueryPool(
+    VkDevice                                    device,
+    VkQueryPool                                 queryPool,
+    deUint32                                    firstQuery,
+    deUint32                                    queryCount);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreCounterValue(
+    VkDevice                                    device,
+    VkSemaphore                                 semaphore,
+    deUint64*                                   pValue);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkWaitSemaphores(
+    VkDevice                                    device,
+    const VkSemaphoreWaitInfo*                  pWaitInfo,
+    deUint64                                    timeout);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkSignalSemaphore(
+    VkDevice                                    device,
+    const VkSemaphoreSignalInfo*                pSignalInfo);
+
+VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetBufferDeviceAddress(
+    VkDevice                                    device,
+    const VkBufferDeviceAddressInfo*            pInfo);
+
+VKAPI_ATTR deUint64 VKAPI_CALL vkGetBufferOpaqueCaptureAddress(
+    VkDevice                                    device,
+    const VkBufferDeviceAddressInfo*            pInfo);
+
+VKAPI_ATTR deUint64 VKAPI_CALL vkGetDeviceMemoryOpaqueCaptureAddress(
+    VkDevice                                    device,
+    const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo);
+#endif
+
+
 #define VK_KHR_surface 1
 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR)
 #define VK_KHR_SURFACE_SPEC_VERSION       25
@@ -5616,14 +6444,9 @@ VKAPI_ATTR void VKAPI_CALL vkCmdPushDescriptorSetWithTemplateKHR(
 #define VK_KHR_shader_float16_int8 1
 #define VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION 1
 #define VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME "VK_KHR_shader_float16_int8"
-typedef struct VkPhysicalDeviceShaderFloat16Int8FeaturesKHR {
-    VkStructureType    sType;
-    void*              pNext;
-    VkBool32           shaderFloat16;
-    VkBool32           shaderInt8;
-} VkPhysicalDeviceShaderFloat16Int8FeaturesKHR;
+typedef VkPhysicalDeviceShaderFloat16Int8Features VkPhysicalDeviceShaderFloat16Int8FeaturesKHR;
 
-typedef VkPhysicalDeviceShaderFloat16Int8FeaturesKHR VkPhysicalDeviceFloat16Int8FeaturesKHR;
+typedef VkPhysicalDeviceShaderFloat16Int8Features VkPhysicalDeviceFloat16Int8FeaturesKHR;
 
 
 
@@ -5697,144 +6520,58 @@ VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSetWithTemplateKHR(
 #define VK_KHR_imageless_framebuffer 1
 #define VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION 1
 #define VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME "VK_KHR_imageless_framebuffer"
-typedef struct VkPhysicalDeviceImagelessFramebufferFeaturesKHR {
-    VkStructureType    sType;
-    void*              pNext;
-    VkBool32           imagelessFramebuffer;
-} VkPhysicalDeviceImagelessFramebufferFeaturesKHR;
+typedef VkPhysicalDeviceImagelessFramebufferFeatures VkPhysicalDeviceImagelessFramebufferFeaturesKHR;
 
-typedef struct VkFramebufferAttachmentImageInfoKHR {
-    VkStructureType       sType;
-    const void*           pNext;
-    VkImageCreateFlags    flags;
-    VkImageUsageFlags     usage;
-    deUint32              width;
-    deUint32              height;
-    deUint32              layerCount;
-    deUint32              viewFormatCount;
-    const VkFormat*       pViewFormats;
-} VkFramebufferAttachmentImageInfoKHR;
+typedef VkFramebufferAttachmentsCreateInfo VkFramebufferAttachmentsCreateInfoKHR;
 
-typedef struct VkFramebufferAttachmentsCreateInfoKHR {
-    VkStructureType                               sType;
-    const void*                                   pNext;
-    deUint32                                      attachmentImageInfoCount;
-    const VkFramebufferAttachmentImageInfoKHR*    pAttachmentImageInfos;
-} VkFramebufferAttachmentsCreateInfoKHR;
+typedef VkFramebufferAttachmentImageInfo VkFramebufferAttachmentImageInfoKHR;
 
-typedef struct VkRenderPassAttachmentBeginInfoKHR {
-    VkStructureType       sType;
-    const void*           pNext;
-    deUint32              attachmentCount;
-    const VkImageView*    pAttachments;
-} VkRenderPassAttachmentBeginInfoKHR;
+typedef VkRenderPassAttachmentBeginInfo VkRenderPassAttachmentBeginInfoKHR;
 
 
 
 #define VK_KHR_create_renderpass2 1
 #define VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION 1
 #define VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME "VK_KHR_create_renderpass2"
-typedef struct VkAttachmentDescription2KHR {
-    VkStructureType                 sType;
-    const void*                     pNext;
-    VkAttachmentDescriptionFlags    flags;
-    VkFormat                        format;
-    VkSampleCountFlagBits           samples;
-    VkAttachmentLoadOp              loadOp;
-    VkAttachmentStoreOp             storeOp;
-    VkAttachmentLoadOp              stencilLoadOp;
-    VkAttachmentStoreOp             stencilStoreOp;
-    VkImageLayout                   initialLayout;
-    VkImageLayout                   finalLayout;
-} VkAttachmentDescription2KHR;
+typedef VkRenderPassCreateInfo2 VkRenderPassCreateInfo2KHR;
 
-typedef struct VkAttachmentReference2KHR {
-    VkStructureType       sType;
-    const void*           pNext;
-    deUint32              attachment;
-    VkImageLayout         layout;
-    VkImageAspectFlags    aspectMask;
-} VkAttachmentReference2KHR;
+typedef VkAttachmentDescription2 VkAttachmentDescription2KHR;
 
-typedef struct VkSubpassDescription2KHR {
-    VkStructureType                     sType;
-    const void*                         pNext;
-    VkSubpassDescriptionFlags           flags;
-    VkPipelineBindPoint                 pipelineBindPoint;
-    deUint32                            viewMask;
-    deUint32                            inputAttachmentCount;
-    const VkAttachmentReference2KHR*    pInputAttachments;
-    deUint32                            colorAttachmentCount;
-    const VkAttachmentReference2KHR*    pColorAttachments;
-    const VkAttachmentReference2KHR*    pResolveAttachments;
-    const VkAttachmentReference2KHR*    pDepthStencilAttachment;
-    deUint32                            preserveAttachmentCount;
-    const deUint32*                     pPreserveAttachments;
-} VkSubpassDescription2KHR;
-
-typedef struct VkSubpassDependency2KHR {
-    VkStructureType         sType;
-    const void*             pNext;
-    deUint32                srcSubpass;
-    deUint32                dstSubpass;
-    VkPipelineStageFlags    srcStageMask;
-    VkPipelineStageFlags    dstStageMask;
-    VkAccessFlags           srcAccessMask;
-    VkAccessFlags           dstAccessMask;
-    VkDependencyFlags       dependencyFlags;
-    deInt32                 viewOffset;
-} VkSubpassDependency2KHR;
+typedef VkAttachmentReference2 VkAttachmentReference2KHR;
 
-typedef struct VkRenderPassCreateInfo2KHR {
-    VkStructureType                       sType;
-    const void*                           pNext;
-    VkRenderPassCreateFlags               flags;
-    deUint32                              attachmentCount;
-    const VkAttachmentDescription2KHR*    pAttachments;
-    deUint32                              subpassCount;
-    const VkSubpassDescription2KHR*       pSubpasses;
-    deUint32                              dependencyCount;
-    const VkSubpassDependency2KHR*        pDependencies;
-    deUint32                              correlatedViewMaskCount;
-    const deUint32*                       pCorrelatedViewMasks;
-} VkRenderPassCreateInfo2KHR;
-
-typedef struct VkSubpassBeginInfoKHR {
-    VkStructureType      sType;
-    const void*          pNext;
-    VkSubpassContents    contents;
-} VkSubpassBeginInfoKHR;
+typedef VkSubpassDescription2 VkSubpassDescription2KHR;
 
-typedef struct VkSubpassEndInfoKHR {
-    VkStructureType    sType;
-    const void*        pNext;
-} VkSubpassEndInfoKHR;
+typedef VkSubpassDependency2 VkSubpassDependency2KHR;
 
-typedef VkResult (VKAPI_PTR *PFN_vkCreateRenderPass2KHR)(VkDevice device, const VkRenderPassCreateInfo2KHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
-typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass2KHR)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo*      pRenderPassBegin, const VkSubpassBeginInfoKHR*      pSubpassBeginInfo);
-typedef void (VKAPI_PTR *PFN_vkCmdNextSubpass2KHR)(VkCommandBuffer commandBuffer, const VkSubpassBeginInfoKHR*      pSubpassBeginInfo, const VkSubpassEndInfoKHR*        pSubpassEndInfo);
-typedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass2KHR)(VkCommandBuffer commandBuffer, const VkSubpassEndInfoKHR*        pSubpassEndInfo);
+typedef VkSubpassBeginInfo VkSubpassBeginInfoKHR;
+
+typedef VkSubpassEndInfo VkSubpassEndInfoKHR;
+
+typedef VkResult (VKAPI_PTR *PFN_vkCreateRenderPass2KHR)(VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
+typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass2KHR)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo*      pRenderPassBegin, const VkSubpassBeginInfo*      pSubpassBeginInfo);
+typedef void (VKAPI_PTR *PFN_vkCmdNextSubpass2KHR)(VkCommandBuffer commandBuffer, const VkSubpassBeginInfo*      pSubpassBeginInfo, const VkSubpassEndInfo*        pSubpassEndInfo);
+typedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass2KHR)(VkCommandBuffer commandBuffer, const VkSubpassEndInfo*        pSubpassEndInfo);
 
 #ifndef VK_NO_PROTOTYPES
 VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass2KHR(
     VkDevice                                    device,
-    const VkRenderPassCreateInfo2KHR*           pCreateInfo,
+    const VkRenderPassCreateInfo2*              pCreateInfo,
     const VkAllocationCallbacks*                pAllocator,
     VkRenderPass*                               pRenderPass);
 
 VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass2KHR(
     VkCommandBuffer                             commandBuffer,
     const VkRenderPassBeginInfo*                pRenderPassBegin,
-    const VkSubpassBeginInfoKHR*                pSubpassBeginInfo);
+    const VkSubpassBeginInfo*                   pSubpassBeginInfo);
 
 VKAPI_ATTR void VKAPI_CALL vkCmdNextSubpass2KHR(
     VkCommandBuffer                             commandBuffer,
-    const VkSubpassBeginInfoKHR*                pSubpassBeginInfo,
-    const VkSubpassEndInfoKHR*                  pSubpassEndInfo);
+    const VkSubpassBeginInfo*                   pSubpassBeginInfo,
+    const VkSubpassEndInfo*                     pSubpassEndInfo);
 
 VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass2KHR(
     VkCommandBuffer                             commandBuffer,
-    const VkSubpassEndInfoKHR*                  pSubpassEndInfo);
+    const VkSubpassEndInfo*                     pSubpassEndInfo);
 #endif
 
 
@@ -6254,12 +6991,7 @@ VKAPI_ATTR void VKAPI_CALL vkGetImageSparseMemoryRequirements2KHR(
 #define VK_KHR_image_format_list 1
 #define VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION 1
 #define VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME "VK_KHR_image_format_list"
-typedef struct VkImageFormatListCreateInfoKHR {
-    VkStructureType    sType;
-    const void*        pNext;
-    deUint32           viewFormatCount;
-    const VkFormat*    pViewFormats;
-} VkImageFormatListCreateInfoKHR;
+typedef VkImageFormatListCreateInfo VkImageFormatListCreateInfoKHR;
 
 
 
@@ -6373,36 +7105,21 @@ VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCountKHR(
 #define VK_KHR_shader_subgroup_extended_types 1
 #define VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION 1
 #define VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME "VK_KHR_shader_subgroup_extended_types"
-typedef struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR {
-    VkStructureType    sType;
-    void*              pNext;
-    VkBool32           shaderSubgroupExtendedTypes;
-} VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR;
+typedef VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR;
 
 
 
 #define VK_KHR_8bit_storage 1
 #define VK_KHR_8BIT_STORAGE_SPEC_VERSION  1
 #define VK_KHR_8BIT_STORAGE_EXTENSION_NAME "VK_KHR_8bit_storage"
-typedef struct VkPhysicalDevice8BitStorageFeaturesKHR {
-    VkStructureType    sType;
-    void*              pNext;
-    VkBool32           storageBuffer8BitAccess;
-    VkBool32           uniformAndStorageBuffer8BitAccess;
-    VkBool32           storagePushConstant8;
-} VkPhysicalDevice8BitStorageFeaturesKHR;
+typedef VkPhysicalDevice8BitStorageFeatures VkPhysicalDevice8BitStorageFeaturesKHR;
 
 
 
 #define VK_KHR_shader_atomic_int64 1
 #define VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION 1
 #define VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME "VK_KHR_shader_atomic_int64"
-typedef struct VkPhysicalDeviceShaderAtomicInt64FeaturesKHR {
-    VkStructureType    sType;
-    void*              pNext;
-    VkBool32           shaderBufferInt64Atomics;
-    VkBool32           shaderSharedInt64Atomics;
-} VkPhysicalDeviceShaderAtomicInt64FeaturesKHR;
+typedef VkPhysicalDeviceShaderAtomicInt64Features VkPhysicalDeviceShaderAtomicInt64FeaturesKHR;
 
 
 
@@ -6419,113 +7136,37 @@ typedef struct VkPhysicalDeviceShaderClockFeaturesKHR {
 
 
 #define VK_KHR_driver_properties 1
-#define VK_MAX_DRIVER_NAME_SIZE_KHR       256
-#define VK_MAX_DRIVER_INFO_SIZE_KHR       256
 #define VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION 1
 #define VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME "VK_KHR_driver_properties"
+#define VK_MAX_DRIVER_NAME_SIZE_KHR       VK_MAX_DRIVER_NAME_SIZE
+#define VK_MAX_DRIVER_INFO_SIZE_KHR       VK_MAX_DRIVER_INFO_SIZE
+typedef VkDriverId VkDriverIdKHR;
 
-typedef enum VkDriverIdKHR {
-    VK_DRIVER_ID_AMD_PROPRIETARY_KHR = 1,
-    VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2,
-    VK_DRIVER_ID_MESA_RADV_KHR = 3,
-    VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = 4,
-    VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = 5,
-    VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = 6,
-    VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = 7,
-    VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = 8,
-    VK_DRIVER_ID_ARM_PROPRIETARY_KHR = 9,
-    VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR = 10,
-    VK_DRIVER_ID_GGP_PROPRIETARY_KHR = 11,
-    VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR = 12,
-    VK_DRIVER_ID_BEGIN_RANGE_KHR = VK_DRIVER_ID_AMD_PROPRIETARY_KHR,
-    VK_DRIVER_ID_END_RANGE_KHR = VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR,
-    VK_DRIVER_ID_RANGE_SIZE_KHR = (VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR - VK_DRIVER_ID_AMD_PROPRIETARY_KHR + 1),
-    VK_DRIVER_ID_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkDriverIdKHR;
-typedef struct VkConformanceVersionKHR {
-    deUint8    major;
-    deUint8    minor;
-    deUint8    subminor;
-    deUint8    patch;
-} VkConformanceVersionKHR;
+typedef VkConformanceVersion VkConformanceVersionKHR;
 
-typedef struct VkPhysicalDeviceDriverPropertiesKHR {
-    VkStructureType            sType;
-    void*                      pNext;
-    VkDriverIdKHR              driverID;
-    char                       driverName[VK_MAX_DRIVER_NAME_SIZE_KHR];
-    char                       driverInfo[VK_MAX_DRIVER_INFO_SIZE_KHR];
-    VkConformanceVersionKHR    conformanceVersion;
-} VkPhysicalDeviceDriverPropertiesKHR;
+typedef VkPhysicalDeviceDriverProperties VkPhysicalDeviceDriverPropertiesKHR;
 
 
 
 #define VK_KHR_shader_float_controls 1
 #define VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION 4
 #define VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME "VK_KHR_shader_float_controls"
+typedef VkShaderFloatControlsIndependence VkShaderFloatControlsIndependenceKHR;
 
-typedef enum VkShaderFloatControlsIndependenceKHR {
-    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = 0,
-    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = 1,
-    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = 2,
-    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_BEGIN_RANGE_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR,
-    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_END_RANGE_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR,
-    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_RANGE_SIZE_KHR = (VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR - VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR + 1),
-    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkShaderFloatControlsIndependenceKHR;
-typedef struct VkPhysicalDeviceFloatControlsPropertiesKHR {
-    VkStructureType                         sType;
-    void*                                   pNext;
-    VkShaderFloatControlsIndependenceKHR    denormBehaviorIndependence;
-    VkShaderFloatControlsIndependenceKHR    roundingModeIndependence;
-    VkBool32                                shaderSignedZeroInfNanPreserveFloat16;
-    VkBool32                                shaderSignedZeroInfNanPreserveFloat32;
-    VkBool32                                shaderSignedZeroInfNanPreserveFloat64;
-    VkBool32                                shaderDenormPreserveFloat16;
-    VkBool32                                shaderDenormPreserveFloat32;
-    VkBool32                                shaderDenormPreserveFloat64;
-    VkBool32                                shaderDenormFlushToZeroFloat16;
-    VkBool32                                shaderDenormFlushToZeroFloat32;
-    VkBool32                                shaderDenormFlushToZeroFloat64;
-    VkBool32                                shaderRoundingModeRTEFloat16;
-    VkBool32                                shaderRoundingModeRTEFloat32;
-    VkBool32                                shaderRoundingModeRTEFloat64;
-    VkBool32                                shaderRoundingModeRTZFloat16;
-    VkBool32                                shaderRoundingModeRTZFloat32;
-    VkBool32                                shaderRoundingModeRTZFloat64;
-} VkPhysicalDeviceFloatControlsPropertiesKHR;
+typedef VkPhysicalDeviceFloatControlsProperties VkPhysicalDeviceFloatControlsPropertiesKHR;
 
 
 
 #define VK_KHR_depth_stencil_resolve 1
 #define VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION 1
 #define VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME "VK_KHR_depth_stencil_resolve"
+typedef VkResolveModeFlagBits VkResolveModeFlagBitsKHR;
 
-typedef enum VkResolveModeFlagBitsKHR {
-    VK_RESOLVE_MODE_NONE_KHR = 0,
-    VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = 0x00000001,
-    VK_RESOLVE_MODE_AVERAGE_BIT_KHR = 0x00000002,
-    VK_RESOLVE_MODE_MIN_BIT_KHR = 0x00000004,
-    VK_RESOLVE_MODE_MAX_BIT_KHR = 0x00000008,
-    VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkResolveModeFlagBitsKHR;
-typedef VkFlags VkResolveModeFlagsKHR;
-typedef struct VkSubpassDescriptionDepthStencilResolveKHR {
-    VkStructureType                     sType;
-    const void*                         pNext;
-    VkResolveModeFlagBitsKHR            depthResolveMode;
-    VkResolveModeFlagBitsKHR            stencilResolveMode;
-    const VkAttachmentReference2KHR*    pDepthStencilResolveAttachment;
-} VkSubpassDescriptionDepthStencilResolveKHR;
+typedef VkResolveModeFlags VkResolveModeFlagsKHR;
 
-typedef struct VkPhysicalDeviceDepthStencilResolvePropertiesKHR {
-    VkStructureType          sType;
-    void*                    pNext;
-    VkResolveModeFlagsKHR    supportedDepthResolveModes;
-    VkResolveModeFlagsKHR    supportedStencilResolveModes;
-    VkBool32                 independentResolveNone;
-    VkBool32                 independentResolve;
-} VkPhysicalDeviceDepthStencilResolvePropertiesKHR;
+typedef VkSubpassDescriptionDepthStencilResolve VkSubpassDescriptionDepthStencilResolveKHR;
+
+typedef VkPhysicalDeviceDepthStencilResolveProperties VkPhysicalDeviceDepthStencilResolvePropertiesKHR;
 
 
 
@@ -6537,68 +7178,27 @@ typedef struct VkPhysicalDeviceDepthStencilResolvePropertiesKHR {
 #define VK_KHR_timeline_semaphore 1
 #define VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION 2
 #define VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME "VK_KHR_timeline_semaphore"
+typedef VkSemaphoreType VkSemaphoreTypeKHR;
 
-typedef enum VkSemaphoreTypeKHR {
-    VK_SEMAPHORE_TYPE_BINARY_KHR = 0,
-    VK_SEMAPHORE_TYPE_TIMELINE_KHR = 1,
-    VK_SEMAPHORE_TYPE_BEGIN_RANGE_KHR = VK_SEMAPHORE_TYPE_BINARY_KHR,
-    VK_SEMAPHORE_TYPE_END_RANGE_KHR = VK_SEMAPHORE_TYPE_TIMELINE_KHR,
-    VK_SEMAPHORE_TYPE_RANGE_SIZE_KHR = (VK_SEMAPHORE_TYPE_TIMELINE_KHR - VK_SEMAPHORE_TYPE_BINARY_KHR + 1),
-    VK_SEMAPHORE_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkSemaphoreTypeKHR;
-
-typedef enum VkSemaphoreWaitFlagBitsKHR {
-    VK_SEMAPHORE_WAIT_ANY_BIT_KHR = 0x00000001,
-    VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkSemaphoreWaitFlagBitsKHR;
-typedef VkFlags VkSemaphoreWaitFlagsKHR;
-typedef struct VkPhysicalDeviceTimelineSemaphoreFeaturesKHR {
-    VkStructureType    sType;
-    void*              pNext;
-    VkBool32           timelineSemaphore;
-} VkPhysicalDeviceTimelineSemaphoreFeaturesKHR;
+typedef VkSemaphoreWaitFlagBits VkSemaphoreWaitFlagBitsKHR;
 
-typedef struct VkPhysicalDeviceTimelineSemaphorePropertiesKHR {
-    VkStructureType    sType;
-    void*              pNext;
-    deUint64           maxTimelineSemaphoreValueDifference;
-} VkPhysicalDeviceTimelineSemaphorePropertiesKHR;
+typedef VkSemaphoreWaitFlags VkSemaphoreWaitFlagsKHR;
 
-typedef struct VkSemaphoreTypeCreateInfoKHR {
-    VkStructureType       sType;
-    const void*           pNext;
-    VkSemaphoreTypeKHR    semaphoreType;
-    deUint64              initialValue;
-} VkSemaphoreTypeCreateInfoKHR;
+typedef VkPhysicalDeviceTimelineSemaphoreFeatures VkPhysicalDeviceTimelineSemaphoreFeaturesKHR;
 
-typedef struct VkTimelineSemaphoreSubmitInfoKHR {
-    VkStructureType    sType;
-    const void*        pNext;
-    deUint32           waitSemaphoreValueCount;
-    const deUint64*    pWaitSemaphoreValues;
-    deUint32           signalSemaphoreValueCount;
-    const deUint64*    pSignalSemaphoreValues;
-} VkTimelineSemaphoreSubmitInfoKHR;
+typedef VkPhysicalDeviceTimelineSemaphoreProperties VkPhysicalDeviceTimelineSemaphorePropertiesKHR;
 
-typedef struct VkSemaphoreWaitInfoKHR {
-    VkStructureType            sType;
-    const void*                pNext;
-    VkSemaphoreWaitFlagsKHR    flags;
-    deUint32                   semaphoreCount;
-    const VkSemaphore*         pSemaphores;
-    const deUint64*            pValues;
-} VkSemaphoreWaitInfoKHR;
+typedef VkSemaphoreTypeCreateInfo VkSemaphoreTypeCreateInfoKHR;
 
-typedef struct VkSemaphoreSignalInfoKHR {
-    VkStructureType    sType;
-    const void*        pNext;
-    VkSemaphore        semaphore;
-    deUint64           value;
-} VkSemaphoreSignalInfoKHR;
+typedef VkTimelineSemaphoreSubmitInfo VkTimelineSemaphoreSubmitInfoKHR;
+
+typedef VkSemaphoreWaitInfo VkSemaphoreWaitInfoKHR;
+
+typedef VkSemaphoreSignalInfo VkSemaphoreSignalInfoKHR;
 
 typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreCounterValueKHR)(VkDevice device, VkSemaphore semaphore, deUint64* pValue);
-typedef VkResult (VKAPI_PTR *PFN_vkWaitSemaphoresKHR)(VkDevice device, const VkSemaphoreWaitInfoKHR* pWaitInfo, deUint64 timeout);
-typedef VkResult (VKAPI_PTR *PFN_vkSignalSemaphoreKHR)(VkDevice device, const VkSemaphoreSignalInfoKHR* pSignalInfo);
+typedef VkResult (VKAPI_PTR *PFN_vkWaitSemaphoresKHR)(VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, deUint64 timeout);
+typedef VkResult (VKAPI_PTR *PFN_vkSignalSemaphoreKHR)(VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo);
 
 #ifndef VK_NO_PROTOTYPES
 VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreCounterValueKHR(
@@ -6608,25 +7208,19 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreCounterValueKHR(
 
 VKAPI_ATTR VkResult VKAPI_CALL vkWaitSemaphoresKHR(
     VkDevice                                    device,
-    const VkSemaphoreWaitInfoKHR*               pWaitInfo,
+    const VkSemaphoreWaitInfo*                  pWaitInfo,
     deUint64                                    timeout);
 
 VKAPI_ATTR VkResult VKAPI_CALL vkSignalSemaphoreKHR(
     VkDevice                                    device,
-    const VkSemaphoreSignalInfoKHR*             pSignalInfo);
+    const VkSemaphoreSignalInfo*                pSignalInfo);
 #endif
 
 
 #define VK_KHR_vulkan_memory_model 1
 #define VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION 3
 #define VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME "VK_KHR_vulkan_memory_model"
-typedef struct VkPhysicalDeviceVulkanMemoryModelFeaturesKHR {
-    VkStructureType    sType;
-    void*              pNext;
-    VkBool32           vulkanMemoryModel;
-    VkBool32           vulkanMemoryModelDeviceScope;
-    VkBool32           vulkanMemoryModelAvailabilityVisibilityChains;
-} VkPhysicalDeviceVulkanMemoryModelFeaturesKHR;
+typedef VkPhysicalDeviceVulkanMemoryModelFeatures VkPhysicalDeviceVulkanMemoryModelFeaturesKHR;
 
 
 #define VK_KHR_spirv_1_4 1
@@ -6648,36 +7242,51 @@ typedef struct VkSurfaceProtectedCapabilitiesKHR {
 #define VK_KHR_separate_depth_stencil_layouts 1
 #define VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION 1
 #define VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME "VK_KHR_separate_depth_stencil_layouts"
-typedef struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR {
-    VkStructureType    sType;
-    void*              pNext;
-    VkBool32           separateDepthStencilLayouts;
-} VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR;
+typedef VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR;
 
-typedef struct VkAttachmentReferenceStencilLayoutKHR {
-    VkStructureType    sType;
-    void*              pNext;
-    VkImageLayout      stencilLayout;
-} VkAttachmentReferenceStencilLayoutKHR;
+typedef VkAttachmentReferenceStencilLayout VkAttachmentReferenceStencilLayoutKHR;
 
-typedef struct VkAttachmentDescriptionStencilLayoutKHR {
-    VkStructureType    sType;
-    void*              pNext;
-    VkImageLayout      stencilInitialLayout;
-    VkImageLayout      stencilFinalLayout;
-} VkAttachmentDescriptionStencilLayoutKHR;
+typedef VkAttachmentDescriptionStencilLayout VkAttachmentDescriptionStencilLayoutKHR;
 
 
 
 #define VK_KHR_uniform_buffer_standard_layout 1
 #define VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION 1
 #define VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME "VK_KHR_uniform_buffer_standard_layout"
-typedef struct VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR {
-    VkStructureType    sType;
-    void*              pNext;
-    VkBool32           uniformBufferStandardLayout;
-} VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR;
+typedef VkPhysicalDeviceUniformBufferStandardLayoutFeatures VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR;
+
+
+
+#define VK_KHR_buffer_device_address 1
+#define VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION 1
+#define VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME "VK_KHR_buffer_device_address"
+typedef VkPhysicalDeviceBufferDeviceAddressFeatures VkPhysicalDeviceBufferDeviceAddressFeaturesKHR;
+
+typedef VkBufferDeviceAddressInfo VkBufferDeviceAddressInfoKHR;
+
+typedef VkBufferOpaqueCaptureAddressCreateInfo VkBufferOpaqueCaptureAddressCreateInfoKHR;
+
+typedef VkMemoryOpaqueCaptureAddressAllocateInfo VkMemoryOpaqueCaptureAddressAllocateInfoKHR;
+
+typedef VkDeviceMemoryOpaqueCaptureAddressInfo VkDeviceMemoryOpaqueCaptureAddressInfoKHR;
 
+typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetBufferDeviceAddressKHR)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
+typedef deUint64 (VKAPI_PTR *PFN_vkGetBufferOpaqueCaptureAddressKHR)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
+typedef deUint64 (VKAPI_PTR *PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR)(VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetBufferDeviceAddressKHR(
+    VkDevice                                    device,
+    const VkBufferDeviceAddressInfo*            pInfo);
+
+VKAPI_ATTR deUint64 VKAPI_CALL vkGetBufferOpaqueCaptureAddressKHR(
+    VkDevice                                    device,
+    const VkBufferDeviceAddressInfo*            pInfo);
+
+VKAPI_ATTR deUint64 VKAPI_CALL vkGetDeviceMemoryOpaqueCaptureAddressKHR(
+    VkDevice                                    device,
+    const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo);
+#endif
 
 
 #define VK_KHR_pipeline_executable_properties 1
@@ -6772,7 +7381,6 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineExecutableInternalRepresentationsKHR
     VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations);
 #endif
 
-
 #define VK_EXT_debug_report 1
 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugReportCallbackEXT)
 #define VK_EXT_DEBUG_REPORT_SPEC_VERSION  9
@@ -8173,28 +8781,11 @@ VKAPI_ATTR void VKAPI_CALL vkSubmitDebugUtilsMessageEXT(
 #define VK_EXT_sampler_filter_minmax 1
 #define VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION 2
 #define VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME "VK_EXT_sampler_filter_minmax"
+typedef VkSamplerReductionMode VkSamplerReductionModeEXT;
 
-typedef enum VkSamplerReductionModeEXT {
-    VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = 0,
-    VK_SAMPLER_REDUCTION_MODE_MIN_EXT = 1,
-    VK_SAMPLER_REDUCTION_MODE_MAX_EXT = 2,
-    VK_SAMPLER_REDUCTION_MODE_BEGIN_RANGE_EXT = VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT,
-    VK_SAMPLER_REDUCTION_MODE_END_RANGE_EXT = VK_SAMPLER_REDUCTION_MODE_MAX_EXT,
-    VK_SAMPLER_REDUCTION_MODE_RANGE_SIZE_EXT = (VK_SAMPLER_REDUCTION_MODE_MAX_EXT - VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT + 1),
-    VK_SAMPLER_REDUCTION_MODE_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkSamplerReductionModeEXT;
-typedef struct VkSamplerReductionModeCreateInfoEXT {
-    VkStructureType              sType;
-    const void*                  pNext;
-    VkSamplerReductionModeEXT    reductionMode;
-} VkSamplerReductionModeCreateInfoEXT;
+typedef VkSamplerReductionModeCreateInfo VkSamplerReductionModeCreateInfoEXT;
 
-typedef struct VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT {
-    VkStructureType    sType;
-    void*              pNext;
-    VkBool32           filterMinmaxSingleComponentFormats;
-    VkBool32           filterMinmaxImageComponentMapping;
-} VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT;
+typedef VkPhysicalDeviceSamplerFilterMinmaxProperties VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT;
 
 
 
@@ -8412,7 +9003,6 @@ typedef struct VkPipelineCoverageModulationStateCreateInfoNV {
 #define VK_NV_FILL_RECTANGLE_SPEC_VERSION 1
 #define VK_NV_FILL_RECTANGLE_EXTENSION_NAME "VK_NV_fill_rectangle"
 
-
 #define VK_NV_shader_sm_builtins 1
 #define VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION 1
 #define VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME "VK_NV_shader_sm_builtins"
@@ -8429,8 +9019,6 @@ typedef struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV {
     VkBool32           shaderSMBuiltins;
 } VkPhysicalDeviceShaderSMBuiltinsFeaturesNV;
 
-
-
 #define VK_EXT_post_depth_coverage 1
 #define VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION 1
 #define VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME "VK_EXT_post_depth_coverage"
@@ -8553,87 +9141,19 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetValidationCacheDataEXT(
 #define VK_EXT_descriptor_indexing 1
 #define VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION 2
 #define VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME "VK_EXT_descriptor_indexing"
+typedef VkDescriptorBindingFlagBits VkDescriptorBindingFlagBitsEXT;
 
-typedef enum VkDescriptorBindingFlagBitsEXT {
-    VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT = 0x00000001,
-    VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT = 0x00000002,
-    VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT = 0x00000004,
-    VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT = 0x00000008,
-    VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkDescriptorBindingFlagBitsEXT;
-typedef VkFlags VkDescriptorBindingFlagsEXT;
-typedef struct VkDescriptorSetLayoutBindingFlagsCreateInfoEXT {
-    VkStructureType                       sType;
-    const void*                           pNext;
-    deUint32                              bindingCount;
-    const VkDescriptorBindingFlagsEXT*    pBindingFlags;
-} VkDescriptorSetLayoutBindingFlagsCreateInfoEXT;
+typedef VkDescriptorBindingFlags VkDescriptorBindingFlagsEXT;
 
-typedef struct VkPhysicalDeviceDescriptorIndexingFeaturesEXT {
-    VkStructureType    sType;
-    void*              pNext;
-    VkBool32           shaderInputAttachmentArrayDynamicIndexing;
-    VkBool32           shaderUniformTexelBufferArrayDynamicIndexing;
-    VkBool32           shaderStorageTexelBufferArrayDynamicIndexing;
-    VkBool32           shaderUniformBufferArrayNonUniformIndexing;
-    VkBool32           shaderSampledImageArrayNonUniformIndexing;
-    VkBool32           shaderStorageBufferArrayNonUniformIndexing;
-    VkBool32           shaderStorageImageArrayNonUniformIndexing;
-    VkBool32           shaderInputAttachmentArrayNonUniformIndexing;
-    VkBool32           shaderUniformTexelBufferArrayNonUniformIndexing;
-    VkBool32           shaderStorageTexelBufferArrayNonUniformIndexing;
-    VkBool32           descriptorBindingUniformBufferUpdateAfterBind;
-    VkBool32           descriptorBindingSampledImageUpdateAfterBind;
-    VkBool32           descriptorBindingStorageImageUpdateAfterBind;
-    VkBool32           descriptorBindingStorageBufferUpdateAfterBind;
-    VkBool32           descriptorBindingUniformTexelBufferUpdateAfterBind;
-    VkBool32           descriptorBindingStorageTexelBufferUpdateAfterBind;
-    VkBool32           descriptorBindingUpdateUnusedWhilePending;
-    VkBool32           descriptorBindingPartiallyBound;
-    VkBool32           descriptorBindingVariableDescriptorCount;
-    VkBool32           runtimeDescriptorArray;
-} VkPhysicalDeviceDescriptorIndexingFeaturesEXT;
+typedef VkDescriptorSetLayoutBindingFlagsCreateInfo VkDescriptorSetLayoutBindingFlagsCreateInfoEXT;
 
-typedef struct VkPhysicalDeviceDescriptorIndexingPropertiesEXT {
-    VkStructureType    sType;
-    void*              pNext;
-    deUint32           maxUpdateAfterBindDescriptorsInAllPools;
-    VkBool32           shaderUniformBufferArrayNonUniformIndexingNative;
-    VkBool32           shaderSampledImageArrayNonUniformIndexingNative;
-    VkBool32           shaderStorageBufferArrayNonUniformIndexingNative;
-    VkBool32           shaderStorageImageArrayNonUniformIndexingNative;
-    VkBool32           shaderInputAttachmentArrayNonUniformIndexingNative;
-    VkBool32           robustBufferAccessUpdateAfterBind;
-    VkBool32           quadDivergentImplicitLod;
-    deUint32           maxPerStageDescriptorUpdateAfterBindSamplers;
-    deUint32           maxPerStageDescriptorUpdateAfterBindUniformBuffers;
-    deUint32           maxPerStageDescriptorUpdateAfterBindStorageBuffers;
-    deUint32           maxPerStageDescriptorUpdateAfterBindSampledImages;
-    deUint32           maxPerStageDescriptorUpdateAfterBindStorageImages;
-    deUint32           maxPerStageDescriptorUpdateAfterBindInputAttachments;
-    deUint32           maxPerStageUpdateAfterBindResources;
-    deUint32           maxDescriptorSetUpdateAfterBindSamplers;
-    deUint32           maxDescriptorSetUpdateAfterBindUniformBuffers;
-    deUint32           maxDescriptorSetUpdateAfterBindUniformBuffersDynamic;
-    deUint32           maxDescriptorSetUpdateAfterBindStorageBuffers;
-    deUint32           maxDescriptorSetUpdateAfterBindStorageBuffersDynamic;
-    deUint32           maxDescriptorSetUpdateAfterBindSampledImages;
-    deUint32           maxDescriptorSetUpdateAfterBindStorageImages;
-    deUint32           maxDescriptorSetUpdateAfterBindInputAttachments;
-} VkPhysicalDeviceDescriptorIndexingPropertiesEXT;
+typedef VkPhysicalDeviceDescriptorIndexingFeatures VkPhysicalDeviceDescriptorIndexingFeaturesEXT;
 
-typedef struct VkDescriptorSetVariableDescriptorCountAllocateInfoEXT {
-    VkStructureType    sType;
-    const void*        pNext;
-    deUint32           descriptorSetCount;
-    const deUint32*    pDescriptorCounts;
-} VkDescriptorSetVariableDescriptorCountAllocateInfoEXT;
+typedef VkPhysicalDeviceDescriptorIndexingProperties VkPhysicalDeviceDescriptorIndexingPropertiesEXT;
 
-typedef struct VkDescriptorSetVariableDescriptorCountLayoutSupportEXT {
-    VkStructureType    sType;
-    void*              pNext;
-    deUint32           maxVariableDescriptorCount;
-} VkDescriptorSetVariableDescriptorCountLayoutSupportEXT;
+typedef VkDescriptorSetVariableDescriptorCountAllocateInfo VkDescriptorSetVariableDescriptorCountAllocateInfoEXT;
+
+typedef VkDescriptorSetVariableDescriptorCountLayoutSupport VkDescriptorSetVariableDescriptorCountLayoutSupportEXT;
 
 
 
@@ -9078,7 +9598,7 @@ typedef struct VkFilterCubicImageViewImageFormatPropertiesEXT {
     VkStructureType    sType;
     void*              pNext;
     VkBool32           filterCubic;
-    VkBool32           filterCubicMinmax ;
+    VkBool32           filterCubicMinmax;
 } VkFilterCubicImageViewImageFormatPropertiesEXT;
 
 
@@ -9697,11 +10217,7 @@ typedef struct VkRenderPassFragmentDensityMapCreateInfoEXT {
 #define VK_EXT_scalar_block_layout 1
 #define VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION 1
 #define VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME "VK_EXT_scalar_block_layout"
-typedef struct VkPhysicalDeviceScalarBlockLayoutFeaturesEXT {
-    VkStructureType    sType;
-    void*              pNext;
-    VkBool32           scalarBlockLayout;
-} VkPhysicalDeviceScalarBlockLayoutFeaturesEXT;
+typedef VkPhysicalDeviceScalarBlockLayoutFeatures VkPhysicalDeviceScalarBlockLayoutFeaturesEXT;
 
 
 
@@ -9811,7 +10327,6 @@ typedef struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV {
 
 
 #define VK_EXT_buffer_device_address 1
-typedef deUint64 VkDeviceAddress;
 #define VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION 2
 #define VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME "VK_EXT_buffer_device_address"
 typedef struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT {
@@ -9824,11 +10339,7 @@ typedef struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT {
 
 typedef VkPhysicalDeviceBufferDeviceAddressFeaturesEXT VkPhysicalDeviceBufferAddressFeaturesEXT;
 
-typedef struct VkBufferDeviceAddressInfoEXT {
-    VkStructureType    sType;
-    const void*        pNext;
-    VkBuffer           buffer;
-} VkBufferDeviceAddressInfoEXT;
+typedef VkBufferDeviceAddressInfo VkBufferDeviceAddressInfoEXT;
 
 typedef struct VkBufferDeviceAddressCreateInfoEXT {
     VkStructureType    sType;
@@ -9836,23 +10347,19 @@ typedef struct VkBufferDeviceAddressCreateInfoEXT {
     VkDeviceAddress    deviceAddress;
 } VkBufferDeviceAddressCreateInfoEXT;
 
-typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetBufferDeviceAddressEXT)(VkDevice device, const VkBufferDeviceAddressInfoEXT* pInfo);
+typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetBufferDeviceAddressEXT)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
 
 #ifndef VK_NO_PROTOTYPES
 VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetBufferDeviceAddressEXT(
     VkDevice                                    device,
-    const VkBufferDeviceAddressInfoEXT*         pInfo);
+    const VkBufferDeviceAddressInfo*            pInfo);
 #endif
 
 
 #define VK_EXT_separate_stencil_usage 1
 #define VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION 1
 #define VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME "VK_EXT_separate_stencil_usage"
-typedef struct VkImageStencilUsageCreateInfoEXT {
-    VkStructureType      sType;
-    const void*          pNext;
-    VkImageUsageFlags    stencilUsage;
-} VkImageStencilUsageCreateInfoEXT;
+typedef VkImageStencilUsageCreateInfo VkImageStencilUsageCreateInfoEXT;
 
 
 
@@ -10105,11 +10612,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdSetLineStippleEXT(
 #define VK_EXT_host_query_reset 1
 #define VK_EXT_HOST_QUERY_RESET_SPEC_VERSION 1
 #define VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME "VK_EXT_host_query_reset"
-typedef struct VkPhysicalDeviceHostQueryResetFeaturesEXT {
-    VkStructureType    sType;
-    void*              pNext;
-    VkBool32           hostQueryReset;
-} VkPhysicalDeviceHostQueryResetFeaturesEXT;
+typedef VkPhysicalDeviceHostQueryResetFeatures VkPhysicalDeviceHostQueryResetFeaturesEXT;
 
 typedef void (VKAPI_PTR *PFN_vkResetQueryPoolEXT)(VkDevice device, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount);
 
index c2234b0..a65120a 100644 (file)
@@ -35,8 +35,8 @@ add_subdirectory(memory_model)
 add_subdirectory(transform_feedback)
 add_subdirectory(util)
 add_subdirectory(amber)
-add_subdirectory(descriptor_indexing)
 add_subdirectory(imageless_framebuffer)
+add_subdirectory(descriptor_indexing)
 add_subdirectory(fragment_shader_interlock)
 
 include_directories(
@@ -75,8 +75,8 @@ include_directories(
        transform_feedback
        util
        amber
-       descriptor_indexing
        imageless_framebuffer
+       descriptor_indexing
        fragment_shader_interlock
        )
 
@@ -135,9 +135,9 @@ set(DEQP_VK_LIBS
        deqp-vk-protected-memory
        deqp-vk-memory-model
        deqp-vk-amber
+       deqp-vk-imageless-framebuffer
        deqp-vk-transform-feedback
        deqp-vk-descriptor-indexing
-       deqp-vk-imageless-framebuffer
        deqp-vk-fragment-shader-interlock
        )
 
index 8a04c9c..feddb98 100644 (file)
@@ -68,9 +68,8 @@ public:
        // Check that the Vulkan implementation supports this test.
        // We have the principle that client code in dEQP should independently
        // determine if the test should be supported:
-       //  - If any of the extensions registered via
-       //    |addRequiredDeviceExtension| is not supported then throw a
-       //    NotSupported exception.
+       //  - If any of the extensions registered via |addRequirement| is not
+       //    supported then throw a NotSupported exception.
        //  - Otherwise, we do a secondary sanity check depending on code inside
        //    Amber itself: if the Amber test says it is not supported, then
        //    throw an internal error exception.
index 4d4a405..a97dbcb 100644 (file)
@@ -5351,6 +5351,9 @@ void addImageToImageAllFormatsDepthStencilTests (tcu::TestCaseGroup* group, Allo
                params.dst.image.tiling                         = VK_IMAGE_TILING_OPTIMAL;
                params.allocationKind                           = allocationKind;
 
+               bool hasDepth   = tcu::hasDepthComponent(mapVkFormat(params.src.image.format).order);
+               bool hasStencil = tcu::hasStencilComponent(mapVkFormat(params.src.image.format).order);
+
                const VkImageSubresourceLayers          defaultDepthSourceLayer         = { VK_IMAGE_ASPECT_DEPTH_BIT, 0u, 0u, 1u };
                const VkImageSubresourceLayers          defaultStencilSourceLayer       = { VK_IMAGE_ASPECT_STENCIL_BIT, 0u, 0u, 1u };
 
@@ -5361,7 +5364,7 @@ void addImageToImageAllFormatsDepthStencilTests (tcu::TestCaseGroup* group, Allo
                        const VkOffset3D        dstOffset       = {i, 0, 0};
                        const VkExtent3D        extent          = {defaultFourthSize, 1, 1};
 
-                       if (tcu::hasDepthComponent(mapVkFormat(params.src.image.format).order))
+                       if (hasDepth)
                        {
                                const VkImageCopy                               testCopy        =
                                {
@@ -5375,7 +5378,7 @@ void addImageToImageAllFormatsDepthStencilTests (tcu::TestCaseGroup* group, Allo
                                copyRegion.imageCopy    = testCopy;
                                params.regions.push_back(copyRegion);
                        }
-                       if (tcu::hasStencilComponent(mapVkFormat(params.src.image.format).order))
+                       if (hasStencil)
                        {
                                const VkImageCopy                               testCopy        =
                                {
@@ -5410,12 +5413,12 @@ void addImageToImageAllFormatsDepthStencilTests (tcu::TestCaseGroup* group, Allo
                params.dst.image.tiling                         = VK_IMAGE_TILING_OPTIMAL;
                params.allocationKind                           = allocationKind;
 
-               const VkImageSubresourceLayers          defaultDepthSourceLayer         = { VK_IMAGE_ASPECT_DEPTH_BIT, 0u, 0u, 1u };
-               const VkImageSubresourceLayers          defaultStencilSourceLayer       = { VK_IMAGE_ASPECT_STENCIL_BIT, 0u, 0u, 1u };
-
                bool hasDepth   = tcu::hasDepthComponent(mapVkFormat(params.src.image.format).order);
                bool hasStencil = tcu::hasStencilComponent(mapVkFormat(params.src.image.format).order);
 
+               const VkImageSubresourceLayers          defaultDepthSourceLayer         = { VK_IMAGE_ASPECT_DEPTH_BIT, 0u, 0u, 1u };
+               const VkImageSubresourceLayers          defaultStencilSourceLayer       = { VK_IMAGE_ASPECT_STENCIL_BIT, 0u, 0u, 1u };
+
                for (deInt32 i = 0; i < defaultFourthSize; i += defaultSixteenthSize)
                {
                        CopyRegion                      copyRegion;
index 496369a..e7689cb 100644 (file)
@@ -65,24 +65,31 @@ static const deUint32 knownDriverIds[] =
 
 static const VkConformanceVersionKHR knownConformanceVersions[] =
 {
-       makeConformanceVersionKHR(1, 1, 6, 2),
-       makeConformanceVersionKHR(1, 1, 6, 1),
-       makeConformanceVersionKHR(1, 1, 6, 0),
-       makeConformanceVersionKHR(1, 1, 5, 2),
-       makeConformanceVersionKHR(1, 1, 5, 1),
-       makeConformanceVersionKHR(1, 1, 5, 0),
-       makeConformanceVersionKHR(1, 1, 4, 3),
-       makeConformanceVersionKHR(1, 1, 4, 2),
-       makeConformanceVersionKHR(1, 1, 4, 1),
-       makeConformanceVersionKHR(1, 1, 4, 0),
-       makeConformanceVersionKHR(1, 1, 3, 3),
-       makeConformanceVersionKHR(1, 1, 3, 2),
-       makeConformanceVersionKHR(1, 1, 3, 1),
-       makeConformanceVersionKHR(1, 1, 3, 0),
-       makeConformanceVersionKHR(1, 1, 2, 3),
-       makeConformanceVersionKHR(1, 1, 2, 2),
-       makeConformanceVersionKHR(1, 1, 2, 1),
-       makeConformanceVersionKHR(1, 1, 2, 0),
+       makeConformanceVersion(1, 2, 0, 2),
+       makeConformanceVersion(1, 2, 0, 1),
+       makeConformanceVersion(1, 2, 0, 0),
+       makeConformanceVersion(1, 1, 6, 2),
+       makeConformanceVersion(1, 1, 6, 1),
+       makeConformanceVersion(1, 1, 6, 0),
+       makeConformanceVersion(1, 1, 5, 2),
+       makeConformanceVersion(1, 1, 5, 1),
+       makeConformanceVersion(1, 1, 5, 0),
+       makeConformanceVersion(1, 1, 4, 3),
+       makeConformanceVersion(1, 1, 4, 2),
+       makeConformanceVersion(1, 1, 4, 1),
+       makeConformanceVersion(1, 1, 4, 0),
+       makeConformanceVersion(1, 1, 3, 3),
+       makeConformanceVersion(1, 1, 3, 2),
+       makeConformanceVersion(1, 1, 3, 1),
+       makeConformanceVersion(1, 1, 3, 0),
+       makeConformanceVersion(1, 1, 2, 3),
+       makeConformanceVersion(1, 1, 2, 2),
+       makeConformanceVersion(1, 1, 2, 1),
+       makeConformanceVersion(1, 1, 2, 0),
+       makeConformanceVersion(1, 1, 1, 3),
+       makeConformanceVersion(1, 1, 1, 2),
+       makeConformanceVersion(1, 1, 1, 1),
+       makeConformanceVersion(1, 1, 1, 0),
 };
 
 DE_INLINE bool isNullTerminated(const char* str, const deUint32 maxSize)
@@ -90,7 +97,7 @@ DE_INLINE bool isNullTerminated(const char* str, const deUint32 maxSize)
        return deStrnlen(str, maxSize) < maxSize;
 }
 
-DE_INLINE bool operator==(const VkConformanceVersionKHR& a, const VkConformanceVersionKHR& b)
+DE_INLINE bool operator==(const VkConformanceVersion& a, const VkConformanceVersion& b)
 {
        return ((a.major == b.major)            &&
                        (a.minor == b.minor)            &&
@@ -152,7 +159,7 @@ tcu::TestStatus testQueryProperties (Context& context, const TestType testType)
        const VkPhysicalDevice                          physDevice                      = context.getPhysicalDevice();
        const int                                                       memsetPattern           = 0xaa;
        VkPhysicalDeviceProperties2                     deviceProperties2;
-       VkPhysicalDeviceDriverPropertiesKHR     deviceDriverProperties;
+       VkPhysicalDeviceDriverProperties        deviceDriverProperties;
 
        deMemset(&deviceDriverProperties, memsetPattern, sizeof(deviceDriverProperties));
        deviceDriverProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR;
index 774d274..bf2afde 100644 (file)
@@ -510,6 +510,1287 @@ bool validateFeatureLimits(VkPhysicalDeviceProperties* properties, VkPhysicalDev
        return limitsOk;
 }
 
+void validateLimitsCheckSupport (Context& context)
+{
+       if (!context.contextSupports(vk::ApiVersion(1, 2, 0)))
+               TCU_THROW(NotSupportedError, "At least Vulkan 1.2 required to run test");
+}
+
+typedef struct FeatureLimitTableItem_
+{
+       const void*             cond;
+       const char*             condName;
+       const void*             ptr;
+       const char*             name;
+       deUint32                uintVal;                        //!< Format is UNSIGNED_INT
+       deInt32                 intVal;                         //!< Format is SIGNED_INT
+       deUint64                deviceSizeVal;          //!< Format is DEVICE_SIZE
+       float                   floatVal;                       //!< Format is FLOAT
+       LimitFormat             format;
+       LimitType               type;
+} FeatureLimitTableItem;
+
+template<typename T>
+bool validateNumericLimit (const T limitToCheck, const T reportedValue, const LimitType limitType, const char* limitName, TestLog& log)
+{
+       if (limitType == LIMIT_TYPE_MIN)
+       {
+               if (reportedValue < limitToCheck)
+               {
+                       log << TestLog::Message << "Limit validation failed " << limitName
+                               << " reported value is " << reportedValue
+                               << " expected MIN " << limitToCheck
+                               << TestLog::EndMessage;
+
+                       return false;
+               }
+
+               log << TestLog::Message << limitName
+                       << "=" << reportedValue
+                       << " (>=" << limitToCheck << ")"
+                       << TestLog::EndMessage;
+       }
+       else if (limitType == LIMIT_TYPE_MAX)
+       {
+               if (reportedValue > limitToCheck)
+               {
+                       log << TestLog::Message << "Limit validation failed " << limitName
+                               << " reported value is " << reportedValue
+                               << " expected MAX " << limitToCheck
+                               << TestLog::EndMessage;
+
+                       return false;
+               }
+
+               log << TestLog::Message << limitName
+                       << "=" << reportedValue
+                       << " (<=" << limitToCheck << ")"
+                       << TestLog::EndMessage;
+       }
+
+       return true;
+}
+
+template<typename T>
+bool validateBitmaskLimit (const T limitToCheck, const T reportedValue, const LimitType limitType, const char* limitName, TestLog& log)
+{
+       if (limitType == LIMIT_TYPE_MIN)
+       {
+               if ((reportedValue & limitToCheck) != limitToCheck)
+               {
+                       log << TestLog::Message << "Limit validation failed " << limitName
+                               << " reported value is " << reportedValue
+                               << " expected MIN " << limitToCheck
+                               << TestLog::EndMessage;
+
+                       return false;
+               }
+
+               log << TestLog::Message << limitName
+                       << "=" << tcu::toHex(reportedValue)
+                       << " (contains " << tcu::toHex(limitToCheck) << ")"
+                       << TestLog::EndMessage;
+       }
+
+       return true;
+}
+
+bool validateLimit (FeatureLimitTableItem limit, TestLog& log)
+{
+       if (*((VkBool32*)limit.cond) == DE_FALSE)
+       {
+               log << TestLog::Message
+                       << "Limit validation skipped '" << limit.name << "' due to "
+                       << limit.condName << " == false'"
+                       << TestLog::EndMessage;
+
+               return true;
+       }
+
+       switch (limit.format)
+       {
+               case LIMIT_FORMAT_UNSIGNED_INT:
+               {
+                       const deUint32  limitToCheck    = limit.uintVal;
+                       const deUint32  reportedValue   = *(deUint32*)limit.ptr;
+
+                       return validateNumericLimit(limitToCheck, reportedValue, limit.type, limit.name, log);
+               }
+
+               case LIMIT_FORMAT_FLOAT:
+               {
+                       const float             limitToCheck    = limit.floatVal;
+                       const float             reportedValue   = *(float*)limit.ptr;
+
+                       return validateNumericLimit(limitToCheck, reportedValue, limit.type, limit.name, log);
+               }
+
+               case LIMIT_FORMAT_SIGNED_INT:
+               {
+                       const deInt32   limitToCheck    = limit.intVal;
+                       const deInt32   reportedValue   = *(deInt32*)limit.ptr;
+
+                       return validateNumericLimit(limitToCheck, reportedValue, limit.type, limit.name, log);
+               }
+
+               case LIMIT_FORMAT_DEVICE_SIZE:
+               {
+                       const deUint64  limitToCheck    = limit.deviceSizeVal;
+                       const deUint64  reportedValue   = *(deUint64*)limit.ptr;
+
+                       return validateNumericLimit(limitToCheck, reportedValue, limit.type, limit.name, log);
+               }
+
+               case LIMIT_FORMAT_BITMASK:
+               {
+                       const deUint32  limitToCheck    = limit.uintVal;
+                       const deUint32  reportedValue   = *(deUint32*)limit.ptr;
+
+                       return validateBitmaskLimit(limitToCheck, reportedValue, limit.type, limit.name, log);
+               }
+
+               default:
+                       TCU_THROW(InternalError, "Unknown LimitFormat specified");
+       }
+}
+
+#ifdef PN
+#error PN defined
+#else
+#define PN(_X_)        &(_X_), (const char*)(#_X_)
+#endif
+
+#define LIM_MIN_UINT32(X)      deUint32(X),          0,               0,     0.0f, LIMIT_FORMAT_UNSIGNED_INT, LIMIT_TYPE_MIN
+#define LIM_MAX_UINT32(X)      deUint32(X),          0,               0,     0.0f, LIMIT_FORMAT_UNSIGNED_INT, LIMIT_TYPE_MAX
+#define LIM_NONE_UINT32                          0,          0,               0,     0.0f, LIMIT_FORMAT_UNSIGNED_INT, LIMIT_TYPE_NONE
+#define LIM_MIN_INT32(X)                 0, deInt32(X),               0,     0.0f, LIMIT_FORMAT_SIGNED_INT,   LIMIT_TYPE_MIN
+#define LIM_MAX_INT32(X)                 0, deInt32(X),               0,     0.0f, LIMIT_FORMAT_SIGNED_INT,   LIMIT_TYPE_MAX
+#define LIM_NONE_INT32                   0,          0,               0,     0.0f, LIMIT_FORMAT_SIGNED_INT,   LIMIT_TYPE_NONE
+#define LIM_MIN_DEVSIZE(X)               0,          0, VkDeviceSize(X),     0.0f, LIMIT_FORMAT_DEVICE_SIZE,  LIMIT_TYPE_MIN
+#define LIM_MAX_DEVSIZE(X)               0,          0, VkDeviceSize(X),     0.0f, LIMIT_FORMAT_DEVICE_SIZE,  LIMIT_TYPE_MAX
+#define LIM_NONE_DEVSIZE                 0,          0,               0,     0.0f, LIMIT_FORMAT_DEVICE_SIZE,  LIMIT_TYPE_NONE
+#define LIM_MIN_FLOAT(X)                 0,          0,               0, float(X), LIMIT_FORMAT_FLOAT,        LIMIT_TYPE_MIN
+#define LIM_MAX_FLOAT(X)                 0,          0,               0, float(X), LIMIT_FORMAT_FLOAT,        LIMIT_TYPE_MAX
+#define LIM_NONE_FLOAT                   0,          0,               0,     0.0f, LIMIT_FORMAT_FLOAT,        LIMIT_TYPE_NONE
+#define LIM_MIN_BITI32(X)      deUint32(X),          0,               0,     0.0f, LIMIT_FORMAT_BITMASK,      LIMIT_TYPE_MIN
+#define LIM_MAX_BITI32(X)      deUint32(X),          0,               0,     0.0f, LIMIT_FORMAT_BITMASK,      LIMIT_TYPE_MAX
+#define LIM_NONE_BITI32                          0,          0,               0,     0.0f, LIMIT_FORMAT_BITMASK,      LIMIT_TYPE_NONE
+
+tcu::TestStatus validateLimits12 (Context& context)
+{
+       const VkPhysicalDevice                                          physicalDevice                  = context.getPhysicalDevice();
+       const InstanceInterface&                                        vki                                             = context.getInstanceInterface();
+       TestLog&                                                                        log                                             = context.getTestContext().getLog();
+       bool                                                                            limitsOk                                = true;
+
+       const VkPhysicalDeviceFeatures2&                        features2                               = context.getDeviceFeatures2();
+       const VkPhysicalDeviceFeatures&                         features                                = features2.features;
+       const VkPhysicalDeviceVulkan12Features          features12                              = getPhysicalDeviceVulkan12Features(vki, physicalDevice);
+
+       const VkPhysicalDeviceProperties2&                      properties2                             = context.getDeviceProperties2();
+       const VkPhysicalDeviceVulkan12Properties        vulkan12Properties              = getPhysicalDeviceVulkan12Properties(vki, physicalDevice);
+       const VkPhysicalDeviceVulkan11Properties        vulkan11Properties              = getPhysicalDeviceVulkan11Properties(vki, physicalDevice);
+       const VkPhysicalDeviceLimits&                           limits                                  = properties2.properties.limits;
+
+       const VkBool32                                                          checkAlways                             = VK_TRUE;
+       const VkBool32                                                          checkVulkan12Limit              = VK_TRUE;
+
+       deUint32                                                                        shaderStages                    = 3;
+       deUint32                                                                        maxPerStageResourcesMin = deMin32(128,  limits.maxPerStageDescriptorUniformBuffers              +
+                                                                                                                                                                               limits.maxPerStageDescriptorStorageBuffers              +
+                                                                                                                                                                               limits.maxPerStageDescriptorSampledImages               +
+                                                                                                                                                                               limits.maxPerStageDescriptorStorageImages               +
+                                                                                                                                                                               limits.maxPerStageDescriptorInputAttachments    +
+                                                                                                                                                                               limits.maxColorAttachments);
+
+       if (features.tessellationShader)
+       {
+               shaderStages += 2;
+       }
+
+       if (features.geometryShader)
+       {
+               shaderStages++;
+       }
+
+       FeatureLimitTableItem featureLimitTable[] =
+       {
+               { PN(checkAlways),                                                              PN(limits.maxImageDimension1D),                                                                                                                                 LIM_MIN_UINT32(4096) },
+               { PN(checkAlways),                                                              PN(limits.maxImageDimension2D),                                                                                                                                 LIM_MIN_UINT32(4096) },
+               { PN(checkAlways),                                                              PN(limits.maxImageDimension3D),                                                                                                                                 LIM_MIN_UINT32(256) },
+               { PN(checkAlways),                                                              PN(limits.maxImageDimensionCube),                                                                                                                               LIM_MIN_UINT32(4096) },
+               { PN(checkAlways),                                                              PN(limits.maxImageArrayLayers),                                                                                                                                 LIM_MIN_UINT32(256) },
+               { PN(checkAlways),                                                              PN(limits.maxTexelBufferElements),                                                                                                                              LIM_MIN_UINT32(65536) },
+               { PN(checkAlways),                                                              PN(limits.maxUniformBufferRange),                                                                                                                               LIM_MIN_UINT32(16384) },
+               { PN(checkAlways),                                                              PN(limits.maxStorageBufferRange),                                                                                                                               LIM_MIN_UINT32((1<<27)) },
+               { PN(checkAlways),                                                              PN(limits.maxPushConstantsSize),                                                                                                                                LIM_MIN_UINT32(128) },
+               { PN(checkAlways),                                                              PN(limits.maxMemoryAllocationCount),                                                                                                                    LIM_MIN_UINT32(4096) },
+               { PN(checkAlways),                                                              PN(limits.maxSamplerAllocationCount),                                                                                                                   LIM_MIN_UINT32(4000) },
+               { PN(checkAlways),                                                              PN(limits.bufferImageGranularity),                                                                                                                              LIM_MIN_DEVSIZE(1) },
+               { PN(checkAlways),                                                              PN(limits.bufferImageGranularity),                                                                                                                              LIM_MAX_DEVSIZE(131072) },
+               { PN(features.sparseBinding),                                   PN(limits.sparseAddressSpaceSize),                                                                                                                              LIM_MIN_DEVSIZE((1ull<<31)) },
+               { PN(checkAlways),                                                              PN(limits.maxBoundDescriptorSets),                                                                                                                              LIM_MIN_UINT32(4) },
+               { PN(checkAlways),                                                              PN(limits.maxPerStageDescriptorSamplers),                                                                                                               LIM_MIN_UINT32(16) },
+               { PN(checkAlways),                                                              PN(limits.maxPerStageDescriptorUniformBuffers),                                                                                                 LIM_MIN_UINT32(12) },
+               { PN(checkAlways),                                                              PN(limits.maxPerStageDescriptorStorageBuffers),                                                                                                 LIM_MIN_UINT32(4) },
+               { PN(checkAlways),                                                              PN(limits.maxPerStageDescriptorSampledImages),                                                                                                  LIM_MIN_UINT32(16) },
+               { PN(checkAlways),                                                              PN(limits.maxPerStageDescriptorStorageImages),                                                                                                  LIM_MIN_UINT32(4) },
+               { PN(checkAlways),                                                              PN(limits.maxPerStageDescriptorInputAttachments),                                                                                               LIM_MIN_UINT32(4) },
+               { PN(checkAlways),                                                              PN(limits.maxPerStageResources),                                                                                                                                LIM_MIN_UINT32(maxPerStageResourcesMin) },
+               { PN(checkAlways),                                                              PN(limits.maxDescriptorSetSamplers),                                                                                                                    LIM_MIN_UINT32(shaderStages * 16) },
+               { PN(checkAlways),                                                              PN(limits.maxDescriptorSetUniformBuffers),                                                                                                              LIM_MIN_UINT32(shaderStages * 12) },
+               { PN(checkAlways),                                                              PN(limits.maxDescriptorSetUniformBuffersDynamic),                                                                                               LIM_MIN_UINT32(8) },
+               { PN(checkAlways),                                                              PN(limits.maxDescriptorSetStorageBuffers),                                                                                                              LIM_MIN_UINT32(shaderStages * 4) },
+               { PN(checkAlways),                                                              PN(limits.maxDescriptorSetStorageBuffersDynamic),                                                                                               LIM_MIN_UINT32(4) },
+               { PN(checkAlways),                                                              PN(limits.maxDescriptorSetSampledImages),                                                                                                               LIM_MIN_UINT32(shaderStages * 16) },
+               { PN(checkAlways),                                                              PN(limits.maxDescriptorSetStorageImages),                                                                                                               LIM_MIN_UINT32(shaderStages * 4) },
+               { PN(checkAlways),                                                              PN(limits.maxDescriptorSetInputAttachments),                                                                                                    LIM_MIN_UINT32(4) },
+               { PN(checkAlways),                                                              PN(limits.maxVertexInputAttributes),                                                                                                                    LIM_MIN_UINT32(16) },
+               { PN(checkAlways),                                                              PN(limits.maxVertexInputBindings),                                                                                                                              LIM_MIN_UINT32(16) },
+               { PN(checkAlways),                                                              PN(limits.maxVertexInputAttributeOffset),                                                                                                               LIM_MIN_UINT32(2047) },
+               { PN(checkAlways),                                                              PN(limits.maxVertexInputBindingStride),                                                                                                                 LIM_MIN_UINT32(2048) },
+               { PN(checkAlways),                                                              PN(limits.maxVertexOutputComponents),                                                                                                                   LIM_MIN_UINT32(64) },
+               { PN(features.tessellationShader),                              PN(limits.maxTessellationGenerationLevel),                                                                                                              LIM_MIN_UINT32(64) },
+               { PN(features.tessellationShader),                              PN(limits.maxTessellationPatchSize),                                                                                                                    LIM_MIN_UINT32(32) },
+               { PN(features.tessellationShader),                              PN(limits.maxTessellationControlPerVertexInputComponents),                                                                              LIM_MIN_UINT32(64) },
+               { PN(features.tessellationShader),                              PN(limits.maxTessellationControlPerVertexOutputComponents),                                                                             LIM_MIN_UINT32(64) },
+               { PN(features.tessellationShader),                              PN(limits.maxTessellationControlPerPatchOutputComponents),                                                                              LIM_MIN_UINT32(120) },
+               { PN(features.tessellationShader),                              PN(limits.maxTessellationControlTotalOutputComponents),                                                                                 LIM_MIN_UINT32(2048) },
+               { PN(features.tessellationShader),                              PN(limits.maxTessellationEvaluationInputComponents),                                                                                    LIM_MIN_UINT32(64) },
+               { PN(features.tessellationShader),                              PN(limits.maxTessellationEvaluationOutputComponents),                                                                                   LIM_MIN_UINT32(64) },
+               { PN(features.geometryShader),                                  PN(limits.maxGeometryShaderInvocations),                                                                                                                LIM_MIN_UINT32(32) },
+               { PN(features.geometryShader),                                  PN(limits.maxGeometryInputComponents),                                                                                                                  LIM_MIN_UINT32(64) },
+               { PN(features.geometryShader),                                  PN(limits.maxGeometryOutputComponents),                                                                                                                 LIM_MIN_UINT32(64) },
+               { PN(features.geometryShader),                                  PN(limits.maxGeometryOutputVertices),                                                                                                                   LIM_MIN_UINT32(256) },
+               { PN(features.geometryShader),                                  PN(limits.maxGeometryTotalOutputComponents),                                                                                                    LIM_MIN_UINT32(1024) },
+               { PN(checkAlways),                                                              PN(limits.maxFragmentInputComponents),                                                                                                                  LIM_MIN_UINT32(64) },
+               { PN(checkAlways),                                                              PN(limits.maxFragmentOutputAttachments),                                                                                                                LIM_MIN_UINT32(4) },
+               { PN(features.dualSrcBlend),                                    PN(limits.maxFragmentDualSrcAttachments),                                                                                                               LIM_MIN_UINT32(1) },
+               { PN(checkAlways),                                                              PN(limits.maxFragmentCombinedOutputResources),                                                                                                  LIM_MIN_UINT32(4) },
+               { PN(checkAlways),                                                              PN(limits.maxComputeSharedMemorySize),                                                                                                                  LIM_MIN_UINT32(16384) },
+               { PN(checkAlways),                                                              PN(limits.maxComputeWorkGroupCount[0]),                                                                                                                 LIM_MIN_UINT32(65535) },
+               { PN(checkAlways),                                                              PN(limits.maxComputeWorkGroupCount[1]),                                                                                                                 LIM_MIN_UINT32(65535) },
+               { PN(checkAlways),                                                              PN(limits.maxComputeWorkGroupCount[2]),                                                                                                                 LIM_MIN_UINT32(65535) },
+               { PN(checkAlways),                                                              PN(limits.maxComputeWorkGroupInvocations),                                                                                                              LIM_MIN_UINT32(128) },
+               { PN(checkAlways),                                                              PN(limits.maxComputeWorkGroupSize[0]),                                                                                                                  LIM_MIN_UINT32(128) },
+               { PN(checkAlways),                                                              PN(limits.maxComputeWorkGroupSize[1]),                                                                                                                  LIM_MIN_UINT32(128) },
+               { PN(checkAlways),                                                              PN(limits.maxComputeWorkGroupSize[2]),                                                                                                                  LIM_MIN_UINT32(64) },
+               { PN(checkAlways),                                                              PN(limits.subPixelPrecisionBits),                                                                                                                               LIM_MIN_UINT32(4) },
+               { PN(checkAlways),                                                              PN(limits.subTexelPrecisionBits),                                                                                                                               LIM_MIN_UINT32(4) },
+               { PN(checkAlways),                                                              PN(limits.mipmapPrecisionBits),                                                                                                                                 LIM_MIN_UINT32(4) },
+               { PN(features.fullDrawIndexUint32),                             PN(limits.maxDrawIndexedIndexValue),                                                                                                                    LIM_MIN_UINT32((deUint32)~0) },
+               { PN(features.multiDrawIndirect),                               PN(limits.maxDrawIndirectCount),                                                                                                                                LIM_MIN_UINT32(65535) },
+               { PN(checkAlways),                                                              PN(limits.maxSamplerLodBias),                                                                                                                                   LIM_MIN_FLOAT(2.0f) },
+               { PN(features.samplerAnisotropy),                               PN(limits.maxSamplerAnisotropy),                                                                                                                                LIM_MIN_FLOAT(16.0f) },
+               { PN(features.multiViewport),                                   PN(limits.maxViewports),                                                                                                                                                LIM_MIN_UINT32(16) },
+               { PN(checkAlways),                                                              PN(limits.maxViewportDimensions[0]),                                                                                                                    LIM_MIN_UINT32(4096) },
+               { PN(checkAlways),                                                              PN(limits.maxViewportDimensions[1]),                                                                                                                    LIM_MIN_UINT32(4096) },
+               { PN(checkAlways),                                                              PN(limits.viewportBoundsRange[0]),                                                                                                                              LIM_MAX_FLOAT(-8192.0f) },
+               { PN(checkAlways),                                                              PN(limits.viewportBoundsRange[1]),                                                                                                                              LIM_MIN_FLOAT(8191.0f) },
+               { PN(checkAlways),                                                              PN(limits.viewportSubPixelBits),                                                                                                                                LIM_MIN_UINT32(0) },
+               { PN(checkAlways),                                                              PN(limits.minMemoryMapAlignment),                                                                                                                               LIM_MIN_UINT32(64) },
+               { PN(checkAlways),                                                              PN(limits.minTexelBufferOffsetAlignment),                                                                                                               LIM_MIN_DEVSIZE(1) },
+               { PN(checkAlways),                                                              PN(limits.minTexelBufferOffsetAlignment),                                                                                                               LIM_MAX_DEVSIZE(256) },
+               { PN(checkAlways),                                                              PN(limits.minUniformBufferOffsetAlignment),                                                                                                             LIM_MIN_DEVSIZE(1) },
+               { PN(checkAlways),                                                              PN(limits.minUniformBufferOffsetAlignment),                                                                                                             LIM_MAX_DEVSIZE(256) },
+               { PN(checkAlways),                                                              PN(limits.minStorageBufferOffsetAlignment),                                                                                                             LIM_MIN_DEVSIZE(1) },
+               { PN(checkAlways),                                                              PN(limits.minStorageBufferOffsetAlignment),                                                                                                             LIM_MAX_DEVSIZE(256) },
+               { PN(checkAlways),                                                              PN(limits.minTexelOffset),                                                                                                                                              LIM_MAX_INT32(-8) },
+               { PN(checkAlways),                                                              PN(limits.maxTexelOffset),                                                                                                                                              LIM_MIN_INT32(7) },
+               { PN(features.shaderImageGatherExtended),               PN(limits.minTexelGatherOffset),                                                                                                                                LIM_MAX_INT32(-8) },
+               { PN(features.shaderImageGatherExtended),               PN(limits.maxTexelGatherOffset),                                                                                                                                LIM_MIN_INT32(7) },
+               { PN(features.sampleRateShading),                               PN(limits.minInterpolationOffset),                                                                                                                              LIM_MAX_FLOAT(-0.5f) },
+               { PN(features.sampleRateShading),                               PN(limits.maxInterpolationOffset),                                                                                                                              LIM_MIN_FLOAT(0.5f - (1.0f/deFloatPow(2.0f, (float)limits.subPixelInterpolationOffsetBits))) },
+               { PN(features.sampleRateShading),                               PN(limits.subPixelInterpolationOffsetBits),                                                                                                             LIM_MIN_UINT32(4) },
+               { PN(checkAlways),                                                              PN(limits.maxFramebufferWidth),                                                                                                                                 LIM_MIN_UINT32(4096) },
+               { PN(checkAlways),                                                              PN(limits.maxFramebufferHeight),                                                                                                                                LIM_MIN_UINT32(4096) },
+               { PN(checkAlways),                                                              PN(limits.maxFramebufferLayers),                                                                                                                                LIM_MIN_UINT32(256) },
+               { PN(checkAlways),                                                              PN(limits.framebufferColorSampleCounts),                                                                                                                LIM_MIN_BITI32(VK_SAMPLE_COUNT_1_BIT|VK_SAMPLE_COUNT_4_BIT) },
+               { PN(checkVulkan12Limit),                                               PN(vulkan12Properties.framebufferIntegerColorSampleCounts),                                                                             LIM_MIN_BITI32(VK_SAMPLE_COUNT_1_BIT) },
+               { PN(checkAlways),                                                              PN(limits.framebufferDepthSampleCounts),                                                                                                                LIM_MIN_BITI32(VK_SAMPLE_COUNT_1_BIT|VK_SAMPLE_COUNT_4_BIT) },
+               { PN(checkAlways),                                                              PN(limits.framebufferStencilSampleCounts),                                                                                                              LIM_MIN_BITI32(VK_SAMPLE_COUNT_1_BIT|VK_SAMPLE_COUNT_4_BIT) },
+               { PN(checkAlways),                                                              PN(limits.framebufferNoAttachmentsSampleCounts),                                                                                                LIM_MIN_BITI32(VK_SAMPLE_COUNT_1_BIT|VK_SAMPLE_COUNT_4_BIT) },
+               { PN(checkAlways),                                                              PN(limits.maxColorAttachments),                                                                                                                                 LIM_MIN_UINT32(4) },
+               { PN(checkAlways),                                                              PN(limits.sampledImageColorSampleCounts),                                                                                                               LIM_MIN_BITI32(VK_SAMPLE_COUNT_1_BIT|VK_SAMPLE_COUNT_4_BIT) },
+               { PN(checkAlways),                                                              PN(limits.sampledImageIntegerSampleCounts),                                                                                                             LIM_MIN_BITI32(VK_SAMPLE_COUNT_1_BIT) },
+               { PN(checkAlways),                                                              PN(limits.sampledImageDepthSampleCounts),                                                                                                               LIM_MIN_BITI32(VK_SAMPLE_COUNT_1_BIT|VK_SAMPLE_COUNT_4_BIT) },
+               { PN(checkAlways),                                                              PN(limits.sampledImageStencilSampleCounts),                                                                                                             LIM_MIN_BITI32(VK_SAMPLE_COUNT_1_BIT|VK_SAMPLE_COUNT_4_BIT) },
+               { PN(features.shaderStorageImageMultisample),   PN(limits.storageImageSampleCounts),                                                                                                                    LIM_MIN_BITI32(VK_SAMPLE_COUNT_1_BIT|VK_SAMPLE_COUNT_4_BIT) },
+               { PN(checkAlways),                                                              PN(limits.maxSampleMaskWords),                                                                                                                                  LIM_MIN_UINT32(1) },
+               { PN(checkAlways),                                                              PN(limits.timestampComputeAndGraphics),                                                                                                                 LIM_NONE_UINT32 },
+               { PN(checkAlways),                                                              PN(limits.timestampPeriod),                                                                                                                                             LIM_NONE_UINT32 },
+               { PN(features.shaderClipDistance),                              PN(limits.maxClipDistances),                                                                                                                                    LIM_MIN_UINT32(8) },
+               { PN(features.shaderClipDistance),                              PN(limits.maxCullDistances),                                                                                                                                    LIM_MIN_UINT32(8) },
+               { PN(features.shaderClipDistance),                              PN(limits.maxCombinedClipAndCullDistances),                                                                                                             LIM_MIN_UINT32(8) },
+               { PN(checkAlways),                                                              PN(limits.discreteQueuePriorities),                                                                                                                             LIM_MIN_UINT32(2) },
+               { PN(features.largePoints),                                             PN(limits.pointSizeRange[0]),                                                                                                                                   LIM_MIN_FLOAT(0.0f) },
+               { PN(features.largePoints),                                             PN(limits.pointSizeRange[0]),                                                                                                                                   LIM_MAX_FLOAT(1.0f) },
+               { PN(features.largePoints),                                             PN(limits.pointSizeRange[1]),                                                                                                                                   LIM_MIN_FLOAT(64.0f - limits.pointSizeGranularity) },
+               { PN(features.wideLines),                                               PN(limits.lineWidthRange[0]),                                                                                                                                   LIM_MIN_FLOAT(0.0f) },
+               { PN(features.wideLines),                                               PN(limits.lineWidthRange[0]),                                                                                                                                   LIM_MAX_FLOAT(1.0f) },
+               { PN(features.wideLines),                                               PN(limits.lineWidthRange[1]),                                                                                                                                   LIM_MIN_FLOAT(8.0f - limits.lineWidthGranularity) },
+               { PN(features.largePoints),                                             PN(limits.pointSizeGranularity),                                                                                                                                LIM_MIN_FLOAT(0.0f) },
+               { PN(features.largePoints),                                             PN(limits.pointSizeGranularity),                                                                                                                                LIM_MAX_FLOAT(1.0f) },
+               { PN(features.wideLines),                                               PN(limits.lineWidthGranularity),                                                                                                                                LIM_MIN_FLOAT(0.0f) },
+               { PN(features.wideLines),                                               PN(limits.lineWidthGranularity),                                                                                                                                LIM_MAX_FLOAT(1.0f) },
+               { PN(checkAlways),                                                              PN(limits.strictLines),                                                                                                                                                 LIM_NONE_UINT32 },
+               { PN(checkAlways),                                                              PN(limits.standardSampleLocations),                                                                                                                             LIM_NONE_UINT32 },
+               { PN(checkAlways),                                                              PN(limits.optimalBufferCopyOffsetAlignment),                                                                                                    LIM_NONE_DEVSIZE },
+               { PN(checkAlways),                                                              PN(limits.optimalBufferCopyRowPitchAlignment),                                                                                                  LIM_NONE_DEVSIZE },
+               { PN(checkAlways),                                                              PN(limits.nonCoherentAtomSize),                                                                                                                                 LIM_MIN_DEVSIZE(1) },
+               { PN(checkAlways),                                                              PN(limits.nonCoherentAtomSize),                                                                                                                                 LIM_MAX_DEVSIZE(256) },
+
+               // VK_KHR_multiview
+               { PN(checkVulkan12Limit),                                               PN(vulkan11Properties.maxMultiviewViewCount),                                                                                                   LIM_MIN_UINT32(6) },
+               { PN(checkVulkan12Limit),                                               PN(vulkan11Properties.maxMultiviewInstanceIndex),                                                                                               LIM_MIN_UINT32((1<<27) - 1) },
+
+               // VK_KHR_maintenance3
+               { PN(checkVulkan12Limit),                                               PN(vulkan11Properties.maxPerSetDescriptors),                                                                                                    LIM_MIN_UINT32(1024) },
+               { PN(checkVulkan12Limit),                                               PN(vulkan11Properties.maxMemoryAllocationSize),                                                                                                 LIM_MIN_DEVSIZE(1<<30) },
+
+               // VK_EXT_descriptor_indexing
+               { PN(features12.descriptorIndexing),                    PN(vulkan12Properties.maxUpdateAfterBindDescriptorsInAllPools),                                                                 LIM_MIN_UINT32(500000) },
+               { PN(features12.descriptorIndexing),                    PN(vulkan12Properties.maxPerStageDescriptorUpdateAfterBindSamplers),                                                    LIM_MIN_UINT32(500000) },
+               { PN(features12.descriptorIndexing),                    PN(vulkan12Properties.maxPerStageDescriptorUpdateAfterBindUniformBuffers),                                              LIM_MIN_UINT32(12) },
+               { PN(features12.descriptorIndexing),                    PN(vulkan12Properties.maxPerStageDescriptorUpdateAfterBindStorageBuffers),                                              LIM_MIN_UINT32(500000) },
+               { PN(features12.descriptorIndexing),                    PN(vulkan12Properties.maxPerStageDescriptorUpdateAfterBindSampledImages),                                               LIM_MIN_UINT32(500000) },
+               { PN(features12.descriptorIndexing),                    PN(vulkan12Properties.maxPerStageDescriptorUpdateAfterBindStorageImages),                                               LIM_MIN_UINT32(500000) },
+               { PN(features12.descriptorIndexing),                    PN(vulkan12Properties.maxPerStageDescriptorUpdateAfterBindInputAttachments),                                    LIM_MIN_UINT32(4) },
+               { PN(features12.descriptorIndexing),                    PN(vulkan12Properties.maxPerStageUpdateAfterBindResources),                                                                             LIM_MIN_UINT32(500000) },
+               { PN(features12.descriptorIndexing),                    PN(vulkan12Properties.maxDescriptorSetUpdateAfterBindSamplers),                                                                 LIM_MIN_UINT32(500000) },
+               { PN(features12.descriptorIndexing),                    PN(vulkan12Properties.maxDescriptorSetUpdateAfterBindUniformBuffers),                                                   LIM_MIN_UINT32(shaderStages * 12) },
+               { PN(features12.descriptorIndexing),                    PN(vulkan12Properties.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic),                                    LIM_MIN_UINT32(8) },
+               { PN(features12.descriptorIndexing),                    PN(vulkan12Properties.maxDescriptorSetUpdateAfterBindStorageBuffers),                                                   LIM_MIN_UINT32(500000) },
+               { PN(features12.descriptorIndexing),                    PN(vulkan12Properties.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic),                                    LIM_MIN_UINT32(4) },
+               { PN(features12.descriptorIndexing),                    PN(vulkan12Properties.maxDescriptorSetUpdateAfterBindSampledImages),                                                    LIM_MIN_UINT32(500000) },
+               { PN(features12.descriptorIndexing),                    PN(vulkan12Properties.maxDescriptorSetUpdateAfterBindStorageImages),                                                    LIM_MIN_UINT32(500000) },
+               { PN(features12.descriptorIndexing),                    PN(vulkan12Properties.maxDescriptorSetUpdateAfterBindInputAttachments),                                                 LIM_MIN_UINT32(4) },
+               { PN(features12.descriptorIndexing),                    PN(vulkan12Properties.maxPerStageDescriptorUpdateAfterBindSamplers),                                                    LIM_MIN_UINT32(limits.maxPerStageDescriptorSamplers) },
+               { PN(features12.descriptorIndexing),                    PN(vulkan12Properties.maxPerStageDescriptorUpdateAfterBindUniformBuffers),                                              LIM_MIN_UINT32(limits.maxPerStageDescriptorUniformBuffers) },
+               { PN(features12.descriptorIndexing),                    PN(vulkan12Properties.maxPerStageDescriptorUpdateAfterBindStorageBuffers),                                              LIM_MIN_UINT32(limits.maxPerStageDescriptorStorageBuffers) },
+               { PN(features12.descriptorIndexing),                    PN(vulkan12Properties.maxPerStageDescriptorUpdateAfterBindSampledImages),                                               LIM_MIN_UINT32(limits.maxPerStageDescriptorSampledImages) },
+               { PN(features12.descriptorIndexing),                    PN(vulkan12Properties.maxPerStageDescriptorUpdateAfterBindStorageImages),                                               LIM_MIN_UINT32(limits.maxPerStageDescriptorStorageImages) },
+               { PN(features12.descriptorIndexing),                    PN(vulkan12Properties.maxPerStageDescriptorUpdateAfterBindInputAttachments),                                    LIM_MIN_UINT32(limits.maxPerStageDescriptorInputAttachments) },
+               { PN(features12.descriptorIndexing),                    PN(vulkan12Properties.maxPerStageUpdateAfterBindResources),                                                                             LIM_MIN_UINT32(limits.maxPerStageResources) },
+               { PN(features12.descriptorIndexing),                    PN(vulkan12Properties.maxDescriptorSetUpdateAfterBindSamplers),                                                                 LIM_MIN_UINT32(limits.maxDescriptorSetSamplers) },
+               { PN(features12.descriptorIndexing),                    PN(vulkan12Properties.maxDescriptorSetUpdateAfterBindUniformBuffers),                                                   LIM_MIN_UINT32(limits.maxDescriptorSetUniformBuffers) },
+               { PN(features12.descriptorIndexing),                    PN(vulkan12Properties.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic),                                    LIM_MIN_UINT32(limits.maxDescriptorSetUniformBuffersDynamic) },
+               { PN(features12.descriptorIndexing),                    PN(vulkan12Properties.maxDescriptorSetUpdateAfterBindStorageBuffers),                                                   LIM_MIN_UINT32(limits.maxDescriptorSetStorageBuffers) },
+               { PN(features12.descriptorIndexing),                    PN(vulkan12Properties.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic),                                    LIM_MIN_UINT32(limits.maxDescriptorSetStorageBuffersDynamic) },
+               { PN(features12.descriptorIndexing),                    PN(vulkan12Properties.maxDescriptorSetUpdateAfterBindSampledImages),                                                    LIM_MIN_UINT32(limits.maxDescriptorSetSampledImages) },
+               { PN(features12.descriptorIndexing),                    PN(vulkan12Properties.maxDescriptorSetUpdateAfterBindStorageImages),                                                    LIM_MIN_UINT32(limits.maxDescriptorSetStorageImages) },
+               { PN(features12.descriptorIndexing),                    PN(vulkan12Properties.maxDescriptorSetUpdateAfterBindInputAttachments),                                                 LIM_MIN_UINT32(limits.maxDescriptorSetInputAttachments) },
+
+               // timelineSemaphore
+               { PN(checkVulkan12Limit),                                               PN(vulkan12Properties.maxTimelineSemaphoreValueDifference),                                                                             LIM_MIN_DEVSIZE((1ull<<31) - 1) },
+       };
+
+       log << TestLog::Message << limits << TestLog::EndMessage;
+
+       for (deUint32 ndx = 0; ndx < DE_LENGTH_OF_ARRAY(featureLimitTable); ndx++)
+               limitsOk = validateLimit(featureLimitTable[ndx], log) && limitsOk;
+
+       if (limits.maxFramebufferWidth > limits.maxViewportDimensions[0] ||
+               limits.maxFramebufferHeight > limits.maxViewportDimensions[1])
+       {
+               log << TestLog::Message << "limit validation failed, maxFramebufferDimension of "
+                       << "[" << limits.maxFramebufferWidth << ", " << limits.maxFramebufferHeight << "] "
+                       << "is larger than maxViewportDimension of "
+                       << "[" << limits.maxViewportDimensions[0] << ", " << limits.maxViewportDimensions[1] << "]" << TestLog::EndMessage;
+               limitsOk = false;
+       }
+
+       if (limits.viewportBoundsRange[0] > float(-2 * limits.maxViewportDimensions[0]))
+       {
+               log << TestLog::Message << "limit validation failed, viewPortBoundsRange[0] of " << limits.viewportBoundsRange[0]
+                       << "is larger than -2*maxViewportDimension[0] of " << -2*limits.maxViewportDimensions[0] << TestLog::EndMessage;
+               limitsOk = false;
+       }
+
+       if (limits.viewportBoundsRange[1] < float(2 * limits.maxViewportDimensions[1] - 1))
+       {
+               log << TestLog::Message << "limit validation failed, viewportBoundsRange[1] of " << limits.viewportBoundsRange[1]
+                       << "is less than 2*maxViewportDimension[1] of " << 2*limits.maxViewportDimensions[1] << TestLog::EndMessage;
+               limitsOk = false;
+       }
+
+       if (limitsOk)
+               return tcu::TestStatus::pass("pass");
+       else
+               return tcu::TestStatus::fail("fail");
+}
+
+void checkSupportKhrPushDescriptor (Context& context)
+{
+       context.requireDeviceFunctionality("VK_KHR_push_descriptor");
+}
+
+tcu::TestStatus validateLimitsKhrPushDescriptor (Context& context)
+{
+       const VkBool32                                                                          checkAlways                                     = VK_TRUE;
+       const VkPhysicalDevicePushDescriptorPropertiesKHR&      pushDescriptorPropertiesKHR     = context.getPushDescriptorProperties();
+       TestLog&                                                                                        log                                                     = context.getTestContext().getLog();
+       bool                                                                                            limitsOk                                        = true;
+
+       FeatureLimitTableItem featureLimitTable[] =
+       {
+               { PN(checkAlways),      PN(pushDescriptorPropertiesKHR.maxPushDescriptors),     LIM_MIN_UINT32(32) },
+       };
+
+       log << TestLog::Message << pushDescriptorPropertiesKHR << TestLog::EndMessage;
+
+       for (deUint32 ndx = 0; ndx < DE_LENGTH_OF_ARRAY(featureLimitTable); ndx++)
+               limitsOk = validateLimit(featureLimitTable[ndx], log) && limitsOk;
+
+       if (limitsOk)
+               return tcu::TestStatus::pass("pass");
+       else
+               return tcu::TestStatus::fail("fail");
+}
+
+void checkSupportKhrMultiview (Context& context)
+{
+       context.requireDeviceFunctionality("VK_KHR_multiview");
+}
+
+tcu::TestStatus validateLimitsKhrMultiview (Context& context)
+{
+       const VkBool32                                                          checkAlways                     = VK_TRUE;
+       const VkPhysicalDeviceMultiviewProperties&      multiviewProperties     = context.getMultiviewProperties();
+       TestLog&                                                                        log                                     = context.getTestContext().getLog();
+       bool                                                                            limitsOk                        = true;
+
+       FeatureLimitTableItem featureLimitTable[] =
+       {
+               // VK_KHR_multiview
+               { PN(checkAlways),      PN(multiviewProperties.maxMultiviewViewCount),          LIM_MIN_UINT32(6) },
+               { PN(checkAlways),      PN(multiviewProperties.maxMultiviewInstanceIndex),      LIM_MIN_UINT32((1<<27) - 1) },
+       };
+
+       log << TestLog::Message << multiviewProperties << TestLog::EndMessage;
+
+       for (deUint32 ndx = 0; ndx < DE_LENGTH_OF_ARRAY(featureLimitTable); ndx++)
+               limitsOk = validateLimit(featureLimitTable[ndx], log) && limitsOk;
+
+       if (limitsOk)
+               return tcu::TestStatus::pass("pass");
+       else
+               return tcu::TestStatus::fail("fail");
+}
+
+void checkSupportExtDiscardRectangles (Context& context)
+{
+       context.requireDeviceFunctionality("VK_EXT_discard_rectangles");
+}
+
+tcu::TestStatus validateLimitsExtDiscardRectangles (Context& context)
+{
+       const VkBool32                                                                                  checkAlways                                             = VK_TRUE;
+       const VkPhysicalDeviceDiscardRectanglePropertiesEXT&    discardRectanglePropertiesEXT   = context.getDiscardRectanglePropertiesEXT();
+       TestLog&                                                                                                log                                                             = context.getTestContext().getLog();
+       bool                                                                                                    limitsOk                                                = true;
+
+       FeatureLimitTableItem featureLimitTable[] =
+       {
+               { PN(checkAlways),      PN(discardRectanglePropertiesEXT.maxDiscardRectangles), LIM_MIN_UINT32(4) },
+       };
+
+       log << TestLog::Message << discardRectanglePropertiesEXT << TestLog::EndMessage;
+
+       for (deUint32 ndx = 0; ndx < DE_LENGTH_OF_ARRAY(featureLimitTable); ndx++)
+               limitsOk = validateLimit(featureLimitTable[ndx], log) && limitsOk;
+
+       if (limitsOk)
+               return tcu::TestStatus::pass("pass");
+       else
+               return tcu::TestStatus::fail("fail");
+}
+
+void checkSupportExtSampleLocations (Context& context)
+{
+       context.requireDeviceFunctionality("VK_EXT_sample_locations");
+}
+
+tcu::TestStatus validateLimitsExtSampleLocations (Context& context)
+{
+       const VkBool32                                                                          checkAlways                                             = VK_TRUE;
+       const VkPhysicalDeviceSampleLocationsPropertiesEXT&     sampleLocationsPropertiesEXT    = context.getSampleLocationsPropertiesEXT();
+       TestLog&                                                                                        log                                                             = context.getTestContext().getLog();
+       bool                                                                                            limitsOk                                                = true;
+
+       FeatureLimitTableItem featureLimitTable[] =
+       {
+               { PN(checkAlways),      PN(sampleLocationsPropertiesEXT.sampleLocationSampleCounts),            LIM_MIN_BITI32(VK_SAMPLE_COUNT_4_BIT) },
+               { PN(checkAlways),      PN(sampleLocationsPropertiesEXT.maxSampleLocationGridSize.width),       LIM_MIN_FLOAT(0.0f) },
+               { PN(checkAlways),      PN(sampleLocationsPropertiesEXT.maxSampleLocationGridSize.height),      LIM_MIN_FLOAT(0.0f) },
+               { PN(checkAlways),      PN(sampleLocationsPropertiesEXT.sampleLocationCoordinateRange[0]),      LIM_MAX_FLOAT(0.0f) },
+               { PN(checkAlways),      PN(sampleLocationsPropertiesEXT.sampleLocationCoordinateRange[1]),      LIM_MIN_FLOAT(0.9375f) },
+               { PN(checkAlways),      PN(sampleLocationsPropertiesEXT.sampleLocationSubPixelBits),            LIM_MIN_UINT32(4) },
+       };
+
+       log << TestLog::Message << sampleLocationsPropertiesEXT << TestLog::EndMessage;
+
+       for (deUint32 ndx = 0; ndx < DE_LENGTH_OF_ARRAY(featureLimitTable); ndx++)
+               limitsOk = validateLimit(featureLimitTable[ndx], log) && limitsOk;
+
+       if (limitsOk)
+               return tcu::TestStatus::pass("pass");
+       else
+               return tcu::TestStatus::fail("fail");
+}
+
+void checkSupportExtExternalMemoryHost (Context& context)
+{
+       context.requireDeviceFunctionality("VK_EXT_external_memory_host");
+}
+
+tcu::TestStatus validateLimitsExtExternalMemoryHost (Context& context)
+{
+       const VkBool32                                                                                  checkAlways                                             = VK_TRUE;
+       const VkPhysicalDeviceExternalMemoryHostPropertiesEXT&  externalMemoryHostPropertiesEXT = context.getExternalMemoryHostPropertiesEXT();
+       TestLog&                                                                                                log                                                             = context.getTestContext().getLog();
+       bool                                                                                                    limitsOk                                                = true;
+
+       FeatureLimitTableItem featureLimitTable[] =
+       {
+               { PN(checkAlways),      PN(externalMemoryHostPropertiesEXT.minImportedHostPointerAlignment),    LIM_MAX_DEVSIZE(65536) },
+       };
+
+       log << TestLog::Message << externalMemoryHostPropertiesEXT << TestLog::EndMessage;
+
+       for (deUint32 ndx = 0; ndx < DE_LENGTH_OF_ARRAY(featureLimitTable); ndx++)
+               limitsOk = validateLimit(featureLimitTable[ndx], log) && limitsOk;
+
+       if (limitsOk)
+               return tcu::TestStatus::pass("pass");
+       else
+               return tcu::TestStatus::fail("fail");
+}
+
+void checkSupportExtBlendOperationAdvanced (Context& context)
+{
+       context.requireDeviceFunctionality("VK_EXT_blend_operation_advanced");
+}
+
+tcu::TestStatus validateLimitsExtBlendOperationAdvanced (Context& context)
+{
+       const VkBool32                                                                                          checkAlways                                                     = VK_TRUE;
+       const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT&      blendOperationAdvancedPropertiesEXT     = context.getBlendOperationAdvancedPropertiesEXT();
+       TestLog&                                                                                                        log                                                                     = context.getTestContext().getLog();
+       bool                                                                                                            limitsOk                                                        = true;
+
+       FeatureLimitTableItem featureLimitTable[] =
+       {
+               { PN(checkAlways),      PN(blendOperationAdvancedPropertiesEXT.advancedBlendMaxColorAttachments),       LIM_MIN_UINT32(1) },
+       };
+
+       log << TestLog::Message << blendOperationAdvancedPropertiesEXT << TestLog::EndMessage;
+
+       for (deUint32 ndx = 0; ndx < DE_LENGTH_OF_ARRAY(featureLimitTable); ndx++)
+               limitsOk = validateLimit(featureLimitTable[ndx], log) && limitsOk;
+
+       if (limitsOk)
+               return tcu::TestStatus::pass("pass");
+       else
+               return tcu::TestStatus::fail("fail");
+}
+
+void checkSupportKhrMaintenance3 (Context& context)
+{
+       context.requireDeviceFunctionality("VK_KHR_maintenance3");
+}
+
+tcu::TestStatus validateLimitsKhrMaintenance3 (Context& context)
+{
+       const VkBool32                                                                  checkAlways                             = VK_TRUE;
+       const VkPhysicalDeviceMaintenance3Properties&   maintenance3Properties  = context.getMaintenance3Properties();
+       TestLog&                                                                                log                                             = context.getTestContext().getLog();
+       bool                                                                                    limitsOk                                = true;
+
+       FeatureLimitTableItem featureLimitTable[] =
+       {
+               { PN(checkAlways),      PN(maintenance3Properties.maxPerSetDescriptors),        LIM_MIN_UINT32(1024) },
+               { PN(checkAlways),      PN(maintenance3Properties.maxMemoryAllocationSize),     LIM_MIN_DEVSIZE(1<<30) },
+       };
+
+       log << TestLog::Message << maintenance3Properties << TestLog::EndMessage;
+
+       for (deUint32 ndx = 0; ndx < DE_LENGTH_OF_ARRAY(featureLimitTable); ndx++)
+               limitsOk = validateLimit(featureLimitTable[ndx], log) && limitsOk;
+
+       if (limitsOk)
+               return tcu::TestStatus::pass("pass");
+       else
+               return tcu::TestStatus::fail("fail");
+}
+
+void checkSupportExtConservativeRasterization (Context& context)
+{
+       context.requireDeviceFunctionality("VK_EXT_conservative_rasterization");
+}
+
+tcu::TestStatus validateLimitsExtConservativeRasterization (Context& context)
+{
+       const VkBool32                                                                                                  checkAlways                                                             = VK_TRUE;
+       const VkPhysicalDeviceConservativeRasterizationPropertiesEXT&   conservativeRasterizationPropertiesEXT  = context.getConservativeRasterizationPropertiesEXT();
+       TestLog&                                                                                                                log                                                                             = context.getTestContext().getLog();
+       bool                                                                                                                    limitsOk                                                                = true;
+
+       FeatureLimitTableItem featureLimitTable[] =
+       {
+               { PN(checkAlways),      PN(conservativeRasterizationPropertiesEXT.primitiveOverestimationSize),                                 LIM_MIN_FLOAT(0.0f) },
+               { PN(checkAlways),      PN(conservativeRasterizationPropertiesEXT.maxExtraPrimitiveOverestimationSize),                 LIM_MIN_FLOAT(0.0f) },
+               { PN(checkAlways),      PN(conservativeRasterizationPropertiesEXT.extraPrimitiveOverestimationSizeGranularity), LIM_MIN_FLOAT(0.0f) },
+       };
+
+       log << TestLog::Message << conservativeRasterizationPropertiesEXT << TestLog::EndMessage;
+
+       for (deUint32 ndx = 0; ndx < DE_LENGTH_OF_ARRAY(featureLimitTable); ndx++)
+               limitsOk = validateLimit(featureLimitTable[ndx], log) && limitsOk;
+
+       if (limitsOk)
+               return tcu::TestStatus::pass("pass");
+       else
+               return tcu::TestStatus::fail("fail");
+}
+
+void checkSupportExtDescriptorIndexing (Context& context)
+{
+       const std::string&                                                      requiredDeviceExtension         = "VK_EXT_descriptor_indexing";
+       const VkPhysicalDevice                                          physicalDevice                          = context.getPhysicalDevice();
+       const InstanceInterface&                                        vki                                                     = context.getInstanceInterface();
+       const std::vector<VkExtensionProperties>        deviceExtensionProperties       = enumerateDeviceExtensionProperties(vki, physicalDevice, DE_NULL);
+
+       if (!isExtensionSupported(deviceExtensionProperties, RequiredExtension(requiredDeviceExtension)))
+               TCU_THROW(NotSupportedError, requiredDeviceExtension + " is not supported");
+
+       // Extension string is present, then extension is really supported and should have been added into chain in DefaultDevice properties and features
+}
+
+tcu::TestStatus validateLimitsExtDescriptorIndexing (Context& context)
+{
+       const VkBool32                                                                                  checkAlways                                             = VK_TRUE;
+       const VkPhysicalDeviceProperties2&                                              properties2                                             = context.getDeviceProperties2();
+       const VkPhysicalDeviceLimits&                                                   limits                                                  = properties2.properties.limits;
+       const VkPhysicalDeviceDescriptorIndexingPropertiesEXT&  descriptorIndexingPropertiesEXT = context.getDescriptorIndexingProperties();
+       const VkPhysicalDeviceFeatures&                                                 features                                                = context.getDeviceFeatures();
+       const deUint32                                                                                  tessellationShaderCount                 = (features.tessellationShader) ? 2 : 0;
+       const deUint32                                                                                  geometryShaderCount                             = (features.geometryShader) ? 1 : 0;
+       const deUint32                                                                                  shaderStages                                    = 3 + tessellationShaderCount + geometryShaderCount;
+       TestLog&                                                                                                log                                                             = context.getTestContext().getLog();
+       bool                                                                                                    limitsOk                                                = true;
+
+       FeatureLimitTableItem featureLimitTable[] =
+       {
+               { PN(checkAlways),      PN(descriptorIndexingPropertiesEXT.maxUpdateAfterBindDescriptorsInAllPools),                            LIM_MIN_UINT32(500000) },
+               { PN(checkAlways),      PN(descriptorIndexingPropertiesEXT.maxPerStageDescriptorUpdateAfterBindSamplers),                       LIM_MIN_UINT32(500000) },
+               { PN(checkAlways),      PN(descriptorIndexingPropertiesEXT.maxPerStageDescriptorUpdateAfterBindUniformBuffers),         LIM_MIN_UINT32(12) },
+               { PN(checkAlways),      PN(descriptorIndexingPropertiesEXT.maxPerStageDescriptorUpdateAfterBindStorageBuffers),         LIM_MIN_UINT32(500000) },
+               { PN(checkAlways),      PN(descriptorIndexingPropertiesEXT.maxPerStageDescriptorUpdateAfterBindSampledImages),          LIM_MIN_UINT32(500000) },
+               { PN(checkAlways),      PN(descriptorIndexingPropertiesEXT.maxPerStageDescriptorUpdateAfterBindStorageImages),          LIM_MIN_UINT32(500000) },
+               { PN(checkAlways),      PN(descriptorIndexingPropertiesEXT.maxPerStageDescriptorUpdateAfterBindInputAttachments),       LIM_MIN_UINT32(4) },
+               { PN(checkAlways),      PN(descriptorIndexingPropertiesEXT.maxPerStageUpdateAfterBindResources),                                        LIM_MIN_UINT32(500000) },
+               { PN(checkAlways),      PN(descriptorIndexingPropertiesEXT.maxDescriptorSetUpdateAfterBindSamplers),                            LIM_MIN_UINT32(500000) },
+               { PN(checkAlways),      PN(descriptorIndexingPropertiesEXT.maxDescriptorSetUpdateAfterBindUniformBuffers),                      LIM_MIN_UINT32(shaderStages * 12) },
+               { PN(checkAlways),      PN(descriptorIndexingPropertiesEXT.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic),       LIM_MIN_UINT32(8) },
+               { PN(checkAlways),      PN(descriptorIndexingPropertiesEXT.maxDescriptorSetUpdateAfterBindStorageBuffers),                      LIM_MIN_UINT32(500000) },
+               { PN(checkAlways),      PN(descriptorIndexingPropertiesEXT.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic),       LIM_MIN_UINT32(4) },
+               { PN(checkAlways),      PN(descriptorIndexingPropertiesEXT.maxDescriptorSetUpdateAfterBindSampledImages),                       LIM_MIN_UINT32(500000) },
+               { PN(checkAlways),      PN(descriptorIndexingPropertiesEXT.maxDescriptorSetUpdateAfterBindStorageImages),                       LIM_MIN_UINT32(500000) },
+               { PN(checkAlways),      PN(descriptorIndexingPropertiesEXT.maxDescriptorSetUpdateAfterBindInputAttachments),            LIM_MIN_UINT32(4) },
+               { PN(checkAlways),      PN(descriptorIndexingPropertiesEXT.maxPerStageDescriptorUpdateAfterBindSamplers),                       LIM_MIN_UINT32(limits.maxPerStageDescriptorSamplers) },
+               { PN(checkAlways),      PN(descriptorIndexingPropertiesEXT.maxPerStageDescriptorUpdateAfterBindUniformBuffers),         LIM_MIN_UINT32(limits.maxPerStageDescriptorUniformBuffers) },
+               { PN(checkAlways),      PN(descriptorIndexingPropertiesEXT.maxPerStageDescriptorUpdateAfterBindStorageBuffers),         LIM_MIN_UINT32(limits.maxPerStageDescriptorStorageBuffers) },
+               { PN(checkAlways),      PN(descriptorIndexingPropertiesEXT.maxPerStageDescriptorUpdateAfterBindSampledImages),          LIM_MIN_UINT32(limits.maxPerStageDescriptorSampledImages) },
+               { PN(checkAlways),      PN(descriptorIndexingPropertiesEXT.maxPerStageDescriptorUpdateAfterBindStorageImages),          LIM_MIN_UINT32(limits.maxPerStageDescriptorStorageImages) },
+               { PN(checkAlways),      PN(descriptorIndexingPropertiesEXT.maxPerStageDescriptorUpdateAfterBindInputAttachments),       LIM_MIN_UINT32(limits.maxPerStageDescriptorInputAttachments) },
+               { PN(checkAlways),      PN(descriptorIndexingPropertiesEXT.maxPerStageUpdateAfterBindResources),                                        LIM_MIN_UINT32(limits.maxPerStageResources) },
+               { PN(checkAlways),      PN(descriptorIndexingPropertiesEXT.maxDescriptorSetUpdateAfterBindSamplers),                            LIM_MIN_UINT32(limits.maxDescriptorSetSamplers) },
+               { PN(checkAlways),      PN(descriptorIndexingPropertiesEXT.maxDescriptorSetUpdateAfterBindUniformBuffers),                      LIM_MIN_UINT32(limits.maxDescriptorSetUniformBuffers) },
+               { PN(checkAlways),      PN(descriptorIndexingPropertiesEXT.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic),       LIM_MIN_UINT32(limits.maxDescriptorSetUniformBuffersDynamic) },
+               { PN(checkAlways),      PN(descriptorIndexingPropertiesEXT.maxDescriptorSetUpdateAfterBindStorageBuffers),                      LIM_MIN_UINT32(limits.maxDescriptorSetStorageBuffers) },
+               { PN(checkAlways),      PN(descriptorIndexingPropertiesEXT.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic),       LIM_MIN_UINT32(limits.maxDescriptorSetStorageBuffersDynamic) },
+               { PN(checkAlways),      PN(descriptorIndexingPropertiesEXT.maxDescriptorSetUpdateAfterBindSampledImages),                       LIM_MIN_UINT32(limits.maxDescriptorSetSampledImages) },
+               { PN(checkAlways),      PN(descriptorIndexingPropertiesEXT.maxDescriptorSetUpdateAfterBindStorageImages),                       LIM_MIN_UINT32(limits.maxDescriptorSetStorageImages) },
+               { PN(checkAlways),      PN(descriptorIndexingPropertiesEXT.maxDescriptorSetUpdateAfterBindInputAttachments),            LIM_MIN_UINT32(limits.maxDescriptorSetInputAttachments) },
+       };
+
+       log << TestLog::Message << descriptorIndexingPropertiesEXT << TestLog::EndMessage;
+
+       for (deUint32 ndx = 0; ndx < DE_LENGTH_OF_ARRAY(featureLimitTable); ndx++)
+               limitsOk = validateLimit(featureLimitTable[ndx], log) && limitsOk;
+
+       if (limitsOk)
+               return tcu::TestStatus::pass("pass");
+       else
+               return tcu::TestStatus::fail("fail");
+}
+
+void checkSupportExtInlineUniformBlock (Context& context)
+{
+       context.requireDeviceFunctionality("VK_EXT_inline_uniform_block");
+}
+
+tcu::TestStatus validateLimitsExtInlineUniformBlock (Context& context)
+{
+       const VkBool32                                                                                  checkAlways                                             = VK_TRUE;
+       const VkPhysicalDeviceInlineUniformBlockPropertiesEXT&  inlineUniformBlockPropertiesEXT = context.getInlineUniformBlockPropertiesEXT();
+       TestLog&                                                                                                log                                                             = context.getTestContext().getLog();
+       bool                                                                                                    limitsOk                                                = true;
+
+       FeatureLimitTableItem featureLimitTable[] =
+       {
+               { PN(checkAlways),      PN(inlineUniformBlockPropertiesEXT.maxInlineUniformBlockSize),                                                                  LIM_MIN_UINT32(256) },
+               { PN(checkAlways),      PN(inlineUniformBlockPropertiesEXT.maxPerStageDescriptorInlineUniformBlocks),                                   LIM_MIN_UINT32(4) },
+               { PN(checkAlways),      PN(inlineUniformBlockPropertiesEXT.maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks),    LIM_MIN_UINT32(4) },
+               { PN(checkAlways),      PN(inlineUniformBlockPropertiesEXT.maxDescriptorSetInlineUniformBlocks),                                                LIM_MIN_UINT32(4) },
+               { PN(checkAlways),      PN(inlineUniformBlockPropertiesEXT.maxDescriptorSetUpdateAfterBindInlineUniformBlocks),                 LIM_MIN_UINT32(4) },
+       };
+
+       log << TestLog::Message << inlineUniformBlockPropertiesEXT << TestLog::EndMessage;
+
+       for (deUint32 ndx = 0; ndx < DE_LENGTH_OF_ARRAY(featureLimitTable); ndx++)
+               limitsOk = validateLimit(featureLimitTable[ndx], log) && limitsOk;
+
+       if (limitsOk)
+               return tcu::TestStatus::pass("pass");
+       else
+               return tcu::TestStatus::fail("fail");
+}
+
+void checkSupportExtVertexAttributeDivisor (Context& context)
+{
+       context.requireDeviceFunctionality("VK_EXT_vertex_attribute_divisor");
+}
+
+tcu::TestStatus validateLimitsExtVertexAttributeDivisor (Context& context)
+{
+       const VkBool32                                                                                          checkAlways                                                     = VK_TRUE;
+       const VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT&      vertexAttributeDivisorPropertiesEXT     = context.getVertexAttributeDivisorPropertiesEXT();
+       TestLog&                                                                                                        log                                                                     = context.getTestContext().getLog();
+       bool                                                                                                            limitsOk                                                        = true;
+
+       FeatureLimitTableItem featureLimitTable[] =
+       {
+               { PN(checkAlways),      PN(vertexAttributeDivisorPropertiesEXT.maxVertexAttribDivisor), LIM_MIN_UINT32((1<<16) - 1) },
+       };
+
+       log << TestLog::Message << vertexAttributeDivisorPropertiesEXT << TestLog::EndMessage;
+
+       for (deUint32 ndx = 0; ndx < DE_LENGTH_OF_ARRAY(featureLimitTable); ndx++)
+               limitsOk = validateLimit(featureLimitTable[ndx], log) && limitsOk;
+
+       if (limitsOk)
+               return tcu::TestStatus::pass("pass");
+       else
+               return tcu::TestStatus::fail("fail");
+}
+
+void checkSupportNvMeshShader (Context& context)
+{
+       const std::string&                                                      requiredDeviceExtension         = "VK_NV_mesh_shader";
+       const VkPhysicalDevice                                          physicalDevice                          = context.getPhysicalDevice();
+       const InstanceInterface&                                        vki                                                     = context.getInstanceInterface();
+       const std::vector<VkExtensionProperties>        deviceExtensionProperties       = enumerateDeviceExtensionProperties(vki, physicalDevice, DE_NULL);
+
+       if (!isExtensionSupported(deviceExtensionProperties, RequiredExtension(requiredDeviceExtension)))
+               TCU_THROW(NotSupportedError, requiredDeviceExtension + " is not supported");
+}
+
+tcu::TestStatus validateLimitsNvMeshShader (Context& context)
+{
+       const VkBool32                                                  checkAlways                             = VK_TRUE;
+       const VkPhysicalDevice                                  physicalDevice                  = context.getPhysicalDevice();
+       const InstanceInterface&                                vki                                             = context.getInstanceInterface();
+       TestLog&                                                                log                                             = context.getTestContext().getLog();
+       bool                                                                    limitsOk                                = true;
+       VkPhysicalDeviceMeshShaderPropertiesNV  meshShaderPropertiesNV  = initVulkanStructure();
+       VkPhysicalDeviceProperties2                             properties2                             = initVulkanStructure(&meshShaderPropertiesNV);
+
+       vki.getPhysicalDeviceProperties2(physicalDevice, &properties2);
+
+       FeatureLimitTableItem featureLimitTable[] =
+       {
+               { PN(checkAlways),      PN(meshShaderPropertiesNV.maxDrawMeshTasksCount),               LIM_MIN_UINT32(deUint32((1ull<<16) - 1)) },
+               { PN(checkAlways),      PN(meshShaderPropertiesNV.maxTaskWorkGroupInvocations), LIM_MIN_UINT32(32) },
+               { PN(checkAlways),      PN(meshShaderPropertiesNV.maxTaskWorkGroupSize[0]),             LIM_MIN_UINT32(32) },
+               { PN(checkAlways),      PN(meshShaderPropertiesNV.maxTaskWorkGroupSize[1]),             LIM_MIN_UINT32(1) },
+               { PN(checkAlways),      PN(meshShaderPropertiesNV.maxTaskWorkGroupSize[2]),             LIM_MIN_UINT32(1) },
+               { PN(checkAlways),      PN(meshShaderPropertiesNV.maxTaskTotalMemorySize),              LIM_MIN_UINT32(16384) },
+               { PN(checkAlways),      PN(meshShaderPropertiesNV.maxTaskOutputCount),                  LIM_MIN_UINT32((1<<16) - 1) },
+               { PN(checkAlways),      PN(meshShaderPropertiesNV.maxMeshWorkGroupInvocations), LIM_MIN_UINT32(32) },
+               { PN(checkAlways),      PN(meshShaderPropertiesNV.maxMeshWorkGroupSize[0]),             LIM_MIN_UINT32(32) },
+               { PN(checkAlways),      PN(meshShaderPropertiesNV.maxMeshWorkGroupSize[1]),             LIM_MIN_UINT32(1) },
+               { PN(checkAlways),      PN(meshShaderPropertiesNV.maxMeshWorkGroupSize[2]),             LIM_MIN_UINT32(1) },
+               { PN(checkAlways),      PN(meshShaderPropertiesNV.maxMeshTotalMemorySize),              LIM_MIN_UINT32(16384) },
+               { PN(checkAlways),      PN(meshShaderPropertiesNV.maxMeshOutputVertices),               LIM_MIN_UINT32(256) },
+               { PN(checkAlways),      PN(meshShaderPropertiesNV.maxMeshOutputPrimitives),             LIM_MIN_UINT32(256) },
+               { PN(checkAlways),      PN(meshShaderPropertiesNV.maxMeshMultiviewViewCount),   LIM_MIN_UINT32(1) },
+       };
+
+       log << TestLog::Message << meshShaderPropertiesNV << TestLog::EndMessage;
+
+       for (deUint32 ndx = 0; ndx < DE_LENGTH_OF_ARRAY(featureLimitTable); ndx++)
+               limitsOk = validateLimit(featureLimitTable[ndx], log) && limitsOk;
+
+       if (limitsOk)
+               return tcu::TestStatus::pass("pass");
+       else
+               return tcu::TestStatus::fail("fail");
+}
+
+void checkSupportExtTransformFeedback (Context& context)
+{
+       context.requireDeviceFunctionality("VK_EXT_transform_feedback");
+}
+
+tcu::TestStatus validateLimitsExtTransformFeedback (Context& context)
+{
+       const VkBool32                                                                                  checkAlways                                             = VK_TRUE;
+       const VkPhysicalDeviceTransformFeedbackPropertiesEXT&   transformFeedbackPropertiesEXT  = context.getTransformFeedbackPropertiesEXT();
+       TestLog&                                                                                                log                                                             = context.getTestContext().getLog();
+       bool                                                                                                    limitsOk                                                = true;
+
+       FeatureLimitTableItem featureLimitTable[] =
+       {
+               { PN(checkAlways),      PN(transformFeedbackPropertiesEXT.maxTransformFeedbackStreams),                         LIM_MIN_UINT32(1) },
+               { PN(checkAlways),      PN(transformFeedbackPropertiesEXT.maxTransformFeedbackBuffers),                         LIM_MIN_UINT32(1) },
+               { PN(checkAlways),      PN(transformFeedbackPropertiesEXT.maxTransformFeedbackBufferSize),                      LIM_MIN_DEVSIZE(1ull<<27) },
+               { PN(checkAlways),      PN(transformFeedbackPropertiesEXT.maxTransformFeedbackStreamDataSize),          LIM_MIN_UINT32(512) },
+               { PN(checkAlways),      PN(transformFeedbackPropertiesEXT.maxTransformFeedbackBufferDataSize),          LIM_MIN_UINT32(512) },
+               { PN(checkAlways),      PN(transformFeedbackPropertiesEXT.maxTransformFeedbackBufferDataStride),        LIM_MIN_UINT32(512) },
+       };
+
+       log << TestLog::Message << transformFeedbackPropertiesEXT << TestLog::EndMessage;
+
+       for (deUint32 ndx = 0; ndx < DE_LENGTH_OF_ARRAY(featureLimitTable); ndx++)
+               limitsOk = validateLimit(featureLimitTable[ndx], log) && limitsOk;
+
+       if (limitsOk)
+               return tcu::TestStatus::pass("pass");
+       else
+               return tcu::TestStatus::fail("fail");
+}
+
+void checkSupportExtFragmentDensityMap (Context& context)
+{
+       context.requireDeviceFunctionality("VK_EXT_fragment_density_map");
+}
+
+tcu::TestStatus validateLimitsExtFragmentDensityMap (Context& context)
+{
+       const VkBool32                                                                                  checkAlways                                             = VK_TRUE;
+       const VkPhysicalDeviceFragmentDensityMapPropertiesEXT&  fragmentDensityMapPropertiesEXT = context.getFragmentDensityMapPropertiesEXT();
+       TestLog&                                                                                                log                                                             = context.getTestContext().getLog();
+       bool                                                                                                    limitsOk                                                = true;
+
+       FeatureLimitTableItem featureLimitTable[] =
+       {
+               { PN(checkAlways),      PN(fragmentDensityMapPropertiesEXT.minFragmentDensityTexelSize.width),                                                  LIM_MIN_UINT32(1) },
+               { PN(checkAlways),      PN(fragmentDensityMapPropertiesEXT.minFragmentDensityTexelSize.height),                                                 LIM_MIN_UINT32(1) },
+               { PN(checkAlways),      PN(fragmentDensityMapPropertiesEXT.maxFragmentDensityTexelSize.width),                                                  LIM_MIN_UINT32(1) },
+               { PN(checkAlways),      PN(fragmentDensityMapPropertiesEXT.maxFragmentDensityTexelSize.height),                                                 LIM_MIN_UINT32(1) },
+       };
+
+       log << TestLog::Message << fragmentDensityMapPropertiesEXT << TestLog::EndMessage;
+
+       for (deUint32 ndx = 0; ndx < DE_LENGTH_OF_ARRAY(featureLimitTable); ndx++)
+               limitsOk = validateLimit(featureLimitTable[ndx], log) && limitsOk;
+
+       if (limitsOk)
+               return tcu::TestStatus::pass("pass");
+       else
+               return tcu::TestStatus::fail("fail");
+}
+
+void checkSupportNvRayTracing (Context& context)
+{
+       const std::string&                                                      requiredDeviceExtension         = "VK_NV_ray_tracing";
+       const VkPhysicalDevice                                          physicalDevice                          = context.getPhysicalDevice();
+       const InstanceInterface&                                        vki                                                     = context.getInstanceInterface();
+       const std::vector<VkExtensionProperties>        deviceExtensionProperties       = enumerateDeviceExtensionProperties(vki, physicalDevice, DE_NULL);
+
+       if (!isExtensionSupported(deviceExtensionProperties, RequiredExtension(requiredDeviceExtension)))
+               TCU_THROW(NotSupportedError, requiredDeviceExtension + " is not supported");
+}
+
+tcu::TestStatus validateLimitsNvRayTracing (Context& context)
+{
+       const VkBool32                                                  checkAlways                             = VK_TRUE;
+       const VkPhysicalDevice                                  physicalDevice                  = context.getPhysicalDevice();
+       const InstanceInterface&                                vki                                             = context.getInstanceInterface();
+       TestLog&                                                                log                                             = context.getTestContext().getLog();
+       bool                                                                    limitsOk                                = true;
+       VkPhysicalDeviceRayTracingPropertiesNV  rayTracingPropertiesNV  = initVulkanStructure();
+       VkPhysicalDeviceProperties2                             properties2                             = initVulkanStructure(&rayTracingPropertiesNV);
+
+       vki.getPhysicalDeviceProperties2(physicalDevice, &properties2);
+
+       FeatureLimitTableItem featureLimitTable[] =
+       {
+               { PN(checkAlways),      PN(rayTracingPropertiesNV.shaderGroupHandleSize),                                       LIM_MIN_UINT32(16) },
+               { PN(checkAlways),      PN(rayTracingPropertiesNV.maxRecursionDepth),                                           LIM_MIN_UINT32(31) },
+               { PN(checkAlways),      PN(rayTracingPropertiesNV.shaderGroupBaseAlignment),                            LIM_MIN_UINT32(64) },
+               { PN(checkAlways),      PN(rayTracingPropertiesNV.maxGeometryCount),                                            LIM_MIN_UINT32((1<<24) - 1) },
+               { PN(checkAlways),      PN(rayTracingPropertiesNV.maxInstanceCount),                                            LIM_MIN_UINT32((1<<24) - 1) },
+               { PN(checkAlways),      PN(rayTracingPropertiesNV.maxTriangleCount),                                            LIM_MIN_UINT32((1<<29) - 1) },
+               { PN(checkAlways),      PN(rayTracingPropertiesNV.maxDescriptorSetAccelerationStructures),      LIM_MIN_UINT32(16) },
+       };
+
+       log << TestLog::Message << rayTracingPropertiesNV << TestLog::EndMessage;
+
+       for (deUint32 ndx = 0; ndx < DE_LENGTH_OF_ARRAY(featureLimitTable); ndx++)
+               limitsOk = validateLimit(featureLimitTable[ndx], log) && limitsOk;
+
+       if (limitsOk)
+               return tcu::TestStatus::pass("pass");
+       else
+               return tcu::TestStatus::fail("fail");
+}
+
+void checkSupportKhrTimelineSemaphore (Context& context)
+{
+       context.requireDeviceFunctionality("VK_KHR_timeline_semaphore");
+}
+
+tcu::TestStatus validateLimitsKhrTimelineSemaphore (Context& context)
+{
+       const VkBool32                                                                                  checkAlways                                             = VK_TRUE;
+       const VkPhysicalDeviceTimelineSemaphorePropertiesKHR&   timelineSemaphorePropertiesKHR  = context.getTimelineSemaphoreProperties();
+       bool                                                                                                    limitsOk                                                = true;
+       TestLog&                                                                                                log                                                             = context.getTestContext().getLog();
+
+       FeatureLimitTableItem featureLimitTable[] =
+       {
+               { PN(checkAlways),      PN(timelineSemaphorePropertiesKHR.maxTimelineSemaphoreValueDifference), LIM_MIN_DEVSIZE((1ull<<31) - 1) },
+       };
+
+       log << TestLog::Message << timelineSemaphorePropertiesKHR << TestLog::EndMessage;
+
+       for (deUint32 ndx = 0; ndx < DE_LENGTH_OF_ARRAY(featureLimitTable); ndx++)
+               limitsOk = validateLimit(featureLimitTable[ndx], log) && limitsOk;
+
+       if (limitsOk)
+               return tcu::TestStatus::pass("pass");
+       else
+               return tcu::TestStatus::fail("fail");
+}
+
+void checkSupportExtLineRasterization (Context& context)
+{
+       context.requireDeviceFunctionality("VK_EXT_line_rasterization");
+}
+
+tcu::TestStatus validateLimitsExtLineRasterization (Context& context)
+{
+       const VkBool32                                                                                  checkAlways                                             = VK_TRUE;
+       const VkPhysicalDeviceLineRasterizationPropertiesEXT&   lineRasterizationPropertiesEXT  = context.getLineRasterizationPropertiesEXT();
+       TestLog&                                                                                                log                                                             = context.getTestContext().getLog();
+       bool                                                                                                    limitsOk                                                = true;
+
+       FeatureLimitTableItem featureLimitTable[] =
+       {
+               { PN(checkAlways),      PN(lineRasterizationPropertiesEXT.lineSubPixelPrecisionBits),   LIM_MIN_UINT32(4) },
+       };
+
+       log << TestLog::Message << lineRasterizationPropertiesEXT << TestLog::EndMessage;
+
+       for (deUint32 ndx = 0; ndx < DE_LENGTH_OF_ARRAY(featureLimitTable); ndx++)
+               limitsOk = validateLimit(featureLimitTable[ndx], log) && limitsOk;
+
+       if (limitsOk)
+               return tcu::TestStatus::pass("pass");
+       else
+               return tcu::TestStatus::fail("fail");
+}
+
+void checkSupportFeatureBitInfluence (Context& context)
+{
+       if (!context.contextSupports(vk::ApiVersion(1, 2, 0)))
+               TCU_THROW(NotSupportedError, "At least Vulkan 1.2 required to run test");
+}
+
+void createDevice (Context& context, void* pNext, const char* const* ppEnabledExtensionNames, deUint32 enabledExtensionCount)
+{
+       const PlatformInterface&                                platformInterface               = context.getPlatformInterface();
+       const Unique<VkInstance>                                instance                                (createDefaultInstance(platformInterface, context.getUsedApiVersion()));
+       const InstanceDriver                                    instanceDriver                  (platformInterface, instance.get());
+       const VkPhysicalDevice                                  physicalDevice                  = chooseDevice(instanceDriver, instance.get(), context.getTestContext().getCommandLine());
+       const deUint32                                                  queueFamilyIndex                = 0;
+       const deUint32                                                  queueCount                              = 1;
+       const deUint32                                                  queueIndex                              = 0;
+       const float                                                             queuePriority                   = 1.0f;
+       const vector<VkQueueFamilyProperties>   queueFamilyProperties   = getPhysicalDeviceQueueFamilyProperties(instanceDriver, physicalDevice);
+       const VkDeviceQueueCreateInfo                   deviceQueueCreateInfo   =
+       {
+               VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO,     //  VkStructureType                             sType;
+               DE_NULL,                                                                        //  const void*                                 pNext;
+               (VkDeviceQueueCreateFlags)0u,                           //  VkDeviceQueueCreateFlags    flags;
+               queueFamilyIndex,                                                       //  deUint32                                    queueFamilyIndex;
+               queueCount,                                                                     //  deUint32                                    queueCount;
+               &queuePriority,                                                         //  const float*                                pQueuePriorities;
+       };
+       const VkDeviceCreateInfo                                deviceCreateInfo                =
+       {
+               VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO,           //  VkStructureType                                     sType;
+               pNext,                                                                          //  const void*                                         pNext;
+               (VkDeviceCreateFlags)0u,                                        //  VkDeviceCreateFlags                         flags;
+               1,                                                                                      //  deUint32                                            queueCreateInfoCount;
+               &deviceQueueCreateInfo,                                         //  const VkDeviceQueueCreateInfo*      pQueueCreateInfos;
+               0,                                                                                      //  deUint32                                            enabledLayerCount;
+               DE_NULL,                                                                        //  const char* const*                          ppEnabledLayerNames;
+               enabledExtensionCount,                                          //  deUint32                                            enabledExtensionCount;
+               ppEnabledExtensionNames,                                        //  const char* const*                          ppEnabledExtensionNames;
+               DE_NULL,                                                                        //  const VkPhysicalDeviceFeatures*     pEnabledFeatures;
+       };
+       const Unique<VkDevice>                                  device                                  (createDevice(platformInterface, *instance, instanceDriver, physicalDevice, &deviceCreateInfo));
+       const DeviceDriver                                              deviceDriver                    (platformInterface, instance.get(), device.get());
+       const VkQueue                                                   queue                                   = getDeviceQueue(deviceDriver, *device,  queueFamilyIndex, queueIndex);
+
+       VK_CHECK(deviceDriver.queueWaitIdle(queue));
+}
+
+void cleanVulkanStruct (void* structPtr, size_t structSize)
+{
+       struct StructureBase
+       {
+               VkStructureType         sType;
+               void*                           pNext;
+       };
+
+       VkStructureType         sType = ((StructureBase*)structPtr)->sType;
+
+       deMemset(structPtr, 0, structSize);
+
+       ((StructureBase*)structPtr)->sType = sType;
+}
+
+tcu::TestStatus featureBitInfluenceOnDeviceCreate (Context& context)
+{
+#define FEATURE_TABLE_ITEM(CORE, EXT, FIELD, STR) { &(CORE), sizeof(CORE), &(CORE.FIELD), #CORE "." #FIELD, &(EXT), sizeof(EXT), &(EXT.FIELD), #EXT "." #FIELD, STR }
+#define DEPENDENCY_DUAL_ITEM(CORE, EXT, FIELD, PARENT) { &(CORE.FIELD), &(CORE.PARENT) }, { &(EXT.FIELD), &(EXT.PARENT) }
+#define DEPENDENCY_SINGLE_ITEM(CORE, FIELD, PARENT) { &(CORE.FIELD), &(CORE.PARENT) }
+
+       const VkPhysicalDevice                                                          physicalDevice                                          = context.getPhysicalDevice();
+       const InstanceInterface&                                                        vki                                                                     = context.getInstanceInterface();
+       TestLog&                                                                                        log                                                                     = context.getTestContext().getLog();
+       const std::vector<VkExtensionProperties>                        deviceExtensionProperties                       = enumerateDeviceExtensionProperties(vki, physicalDevice, DE_NULL);
+
+       VkPhysicalDeviceFeatures2                                                       features2                                                       = initVulkanStructure();
+       VkPhysicalDeviceVulkan11Features                                        vulkan11Features                                        = initVulkanStructure();
+       VkPhysicalDeviceVulkan12Features                                        vulkan12Features                                        = initVulkanStructure();
+       VkPhysicalDevice16BitStorageFeaturesKHR                         sixteenBitStorageFeatures                       = initVulkanStructure();
+       VkPhysicalDeviceMultiviewFeatures                                       multiviewFeatures                                       = initVulkanStructure();
+       VkPhysicalDeviceVariablePointersFeatures                        variablePointersFeatures                        = initVulkanStructure();
+       VkPhysicalDeviceProtectedMemoryFeatures                         protectedMemoryFeatures                         = initVulkanStructure();
+       VkPhysicalDeviceSamplerYcbcrConversionFeatures          samplerYcbcrConversionFeatures          = initVulkanStructure();
+       VkPhysicalDeviceShaderDrawParametersFeatures            shaderDrawParametersFeatures            = initVulkanStructure();
+       VkPhysicalDevice8BitStorageFeatures                                     eightBitStorageFeatures                         = initVulkanStructure();
+       VkPhysicalDeviceShaderAtomicInt64Features                       shaderAtomicInt64Features                       = initVulkanStructure();
+       VkPhysicalDeviceShaderFloat16Int8Features                       shaderFloat16Int8Features                       = initVulkanStructure();
+       VkPhysicalDeviceDescriptorIndexingFeatures                      descriptorIndexingFeatures                      = initVulkanStructure();
+       VkPhysicalDeviceScalarBlockLayoutFeatures                       scalarBlockLayoutFeatures                       = initVulkanStructure();
+       VkPhysicalDeviceImagelessFramebufferFeatures            imagelessFramebufferFeatures            = initVulkanStructure();
+       VkPhysicalDeviceUniformBufferStandardLayoutFeatures     uniformBufferStandardLayoutFeatures     = initVulkanStructure();
+       VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures     shaderSubgroupExtendedTypesFeatures     = initVulkanStructure();
+       VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures     separateDepthStencilLayoutsFeatures     = initVulkanStructure();
+       VkPhysicalDeviceHostQueryResetFeatures                          hostQueryResetFeatures                          = initVulkanStructure();
+       VkPhysicalDeviceTimelineSemaphoreFeatures                       timelineSemaphoreFeatures                       = initVulkanStructure();
+       VkPhysicalDeviceBufferDeviceAddressFeatures                     bufferDeviceAddressFeatures                     = initVulkanStructure();
+       VkPhysicalDeviceVulkanMemoryModelFeatures                       vulkanMemoryModelFeatures                       = initVulkanStructure();
+
+       struct DummyExtensionFeatures
+       {
+               VkStructureType         sType;
+               void*                           pNext;
+               VkBool32                        descriptorIndexing;
+               VkBool32                        samplerFilterMinmax;
+       } dummyExtensionFeatures;
+
+       struct FeatureTable
+       {
+               void*           coreStructPtr;
+               size_t          coreStructSize;
+               VkBool32*       coreFieldPtr;
+               const char*     coreFieldName;
+               void*           extStructPtr;
+               size_t          extStructSize;
+               VkBool32*       extFieldPtr;
+               const char*     extFieldName;
+               const char*     extString;
+       }
+       featureTable[] =
+       {
+               FEATURE_TABLE_ITEM(vulkan11Features,    sixteenBitStorageFeatures,                              storageBuffer16BitAccess,                                                       "VK_KHR_16bit_storage"),
+               FEATURE_TABLE_ITEM(vulkan11Features,    sixteenBitStorageFeatures,                              uniformAndStorageBuffer16BitAccess,                                     "VK_KHR_16bit_storage"),
+               FEATURE_TABLE_ITEM(vulkan11Features,    sixteenBitStorageFeatures,                              storagePushConstant16,                                                          "VK_KHR_16bit_storage"),
+               FEATURE_TABLE_ITEM(vulkan11Features,    sixteenBitStorageFeatures,                              storageInputOutput16,                                                           "VK_KHR_16bit_storage"),
+               FEATURE_TABLE_ITEM(vulkan11Features,    multiviewFeatures,                                              multiview,                                                                                      "VK_KHR_multiview"),
+               FEATURE_TABLE_ITEM(vulkan11Features,    multiviewFeatures,                                              multiviewGeometryShader,                                                        "VK_KHR_multiview"),
+               FEATURE_TABLE_ITEM(vulkan11Features,    multiviewFeatures,                                              multiviewTessellationShader,                                            "VK_KHR_multiview"),
+               FEATURE_TABLE_ITEM(vulkan11Features,    variablePointersFeatures,                               variablePointersStorageBuffer,                                          "VK_KHR_variable_pointers"),
+               FEATURE_TABLE_ITEM(vulkan11Features,    variablePointersFeatures,                               variablePointers,                                                                       "VK_KHR_variable_pointers"),
+               FEATURE_TABLE_ITEM(vulkan11Features,    protectedMemoryFeatures,                                protectedMemory,                                                                        DE_NULL),
+               FEATURE_TABLE_ITEM(vulkan11Features,    samplerYcbcrConversionFeatures,                 samplerYcbcrConversion,                                                         "VK_KHR_sampler_ycbcr_conversion"),
+               FEATURE_TABLE_ITEM(vulkan11Features,    shaderDrawParametersFeatures,                   shaderDrawParameters,                                                           DE_NULL),
+               FEATURE_TABLE_ITEM(vulkan12Features,    eightBitStorageFeatures,                                storageBuffer8BitAccess,                                                        "VK_KHR_8bit_storage"),
+               FEATURE_TABLE_ITEM(vulkan12Features,    eightBitStorageFeatures,                                uniformAndStorageBuffer8BitAccess,                                      "VK_KHR_8bit_storage"),
+               FEATURE_TABLE_ITEM(vulkan12Features,    eightBitStorageFeatures,                                storagePushConstant8,                                                           "VK_KHR_8bit_storage"),
+               FEATURE_TABLE_ITEM(vulkan12Features,    shaderAtomicInt64Features,                              shaderBufferInt64Atomics,                                                       "VK_KHR_shader_atomic_int64"),
+               FEATURE_TABLE_ITEM(vulkan12Features,    shaderAtomicInt64Features,                              shaderSharedInt64Atomics,                                                       "VK_KHR_shader_atomic_int64"),
+               FEATURE_TABLE_ITEM(vulkan12Features,    shaderFloat16Int8Features,                              shaderFloat16,                                                                          "VK_KHR_shader_float16_int8"),
+               FEATURE_TABLE_ITEM(vulkan12Features,    shaderFloat16Int8Features,                              shaderInt8,                                                                                     "VK_KHR_shader_float16_int8"),
+               FEATURE_TABLE_ITEM(vulkan12Features,    dummyExtensionFeatures,                                 descriptorIndexing,                                                                     DE_NULL),
+               FEATURE_TABLE_ITEM(vulkan12Features,    descriptorIndexingFeatures,                             shaderInputAttachmentArrayDynamicIndexing,                      "VK_EXT_descriptor_indexing"),
+               FEATURE_TABLE_ITEM(vulkan12Features,    descriptorIndexingFeatures,                             shaderUniformTexelBufferArrayDynamicIndexing,           "VK_EXT_descriptor_indexing"),
+               FEATURE_TABLE_ITEM(vulkan12Features,    descriptorIndexingFeatures,                             shaderStorageTexelBufferArrayDynamicIndexing,           "VK_EXT_descriptor_indexing"),
+               FEATURE_TABLE_ITEM(vulkan12Features,    descriptorIndexingFeatures,                             shaderUniformBufferArrayNonUniformIndexing,                     "VK_EXT_descriptor_indexing"),
+               FEATURE_TABLE_ITEM(vulkan12Features,    descriptorIndexingFeatures,                             shaderSampledImageArrayNonUniformIndexing,                      "VK_EXT_descriptor_indexing"),
+               FEATURE_TABLE_ITEM(vulkan12Features,    descriptorIndexingFeatures,                             shaderStorageBufferArrayNonUniformIndexing,                     "VK_EXT_descriptor_indexing"),
+               FEATURE_TABLE_ITEM(vulkan12Features,    descriptorIndexingFeatures,                             shaderStorageImageArrayNonUniformIndexing,                      "VK_EXT_descriptor_indexing"),
+               FEATURE_TABLE_ITEM(vulkan12Features,    descriptorIndexingFeatures,                             shaderInputAttachmentArrayNonUniformIndexing,           "VK_EXT_descriptor_indexing"),
+               FEATURE_TABLE_ITEM(vulkan12Features,    descriptorIndexingFeatures,                             shaderUniformTexelBufferArrayNonUniformIndexing,        "VK_EXT_descriptor_indexing"),
+               FEATURE_TABLE_ITEM(vulkan12Features,    descriptorIndexingFeatures,                             shaderStorageTexelBufferArrayNonUniformIndexing,        "VK_EXT_descriptor_indexing"),
+               FEATURE_TABLE_ITEM(vulkan12Features,    descriptorIndexingFeatures,                             descriptorBindingUniformBufferUpdateAfterBind,          "VK_EXT_descriptor_indexing"),
+               FEATURE_TABLE_ITEM(vulkan12Features,    descriptorIndexingFeatures,                             descriptorBindingSampledImageUpdateAfterBind,           "VK_EXT_descriptor_indexing"),
+               FEATURE_TABLE_ITEM(vulkan12Features,    descriptorIndexingFeatures,                             descriptorBindingStorageImageUpdateAfterBind,           "VK_EXT_descriptor_indexing"),
+               FEATURE_TABLE_ITEM(vulkan12Features,    descriptorIndexingFeatures,                             descriptorBindingStorageBufferUpdateAfterBind,          "VK_EXT_descriptor_indexing"),
+               FEATURE_TABLE_ITEM(vulkan12Features,    descriptorIndexingFeatures,                             descriptorBindingUniformTexelBufferUpdateAfterBind,     "VK_EXT_descriptor_indexing"),
+               FEATURE_TABLE_ITEM(vulkan12Features,    descriptorIndexingFeatures,                             descriptorBindingStorageTexelBufferUpdateAfterBind,     "VK_EXT_descriptor_indexing"),
+               FEATURE_TABLE_ITEM(vulkan12Features,    descriptorIndexingFeatures,                             descriptorBindingUpdateUnusedWhilePending,                      "VK_EXT_descriptor_indexing"),
+               FEATURE_TABLE_ITEM(vulkan12Features,    descriptorIndexingFeatures,                             descriptorBindingPartiallyBound,                                        "VK_EXT_descriptor_indexing"),
+               FEATURE_TABLE_ITEM(vulkan12Features,    descriptorIndexingFeatures,                             descriptorBindingVariableDescriptorCount,                       "VK_EXT_descriptor_indexing"),
+               FEATURE_TABLE_ITEM(vulkan12Features,    descriptorIndexingFeatures,                             runtimeDescriptorArray,                                                         "VK_EXT_descriptor_indexing"),
+               FEATURE_TABLE_ITEM(vulkan12Features,    dummyExtensionFeatures,                                 samplerFilterMinmax,                                                            "VK_EXT_sampler_filter_minmax"),
+               FEATURE_TABLE_ITEM(vulkan12Features,    scalarBlockLayoutFeatures,                              scalarBlockLayout,                                                                      "VK_EXT_scalar_block_layout"),
+               FEATURE_TABLE_ITEM(vulkan12Features,    imagelessFramebufferFeatures,                   imagelessFramebuffer,                                                           "VK_KHR_imageless_framebuffer"),
+               FEATURE_TABLE_ITEM(vulkan12Features,    uniformBufferStandardLayoutFeatures,    uniformBufferStandardLayout,                                            "VK_KHR_uniform_buffer_standard_layout"),
+               FEATURE_TABLE_ITEM(vulkan12Features,    shaderSubgroupExtendedTypesFeatures,    shaderSubgroupExtendedTypes,                                            "VK_KHR_shader_subgroup_extended_types"),
+               FEATURE_TABLE_ITEM(vulkan12Features,    separateDepthStencilLayoutsFeatures,    separateDepthStencilLayouts,                                            "VK_KHR_separate_depth_stencil_layouts"),
+               FEATURE_TABLE_ITEM(vulkan12Features,    hostQueryResetFeatures,                                 hostQueryReset,                                                                         "VK_EXT_host_query_reset"),
+               FEATURE_TABLE_ITEM(vulkan12Features,    timelineSemaphoreFeatures,                              timelineSemaphore,                                                                      "VK_KHR_timeline_semaphore"),
+               FEATURE_TABLE_ITEM(vulkan12Features,    bufferDeviceAddressFeatures,                    bufferDeviceAddress,                                                            "VK_EXT_buffer_device_address"),
+               FEATURE_TABLE_ITEM(vulkan12Features,    bufferDeviceAddressFeatures,                    bufferDeviceAddressCaptureReplay,                                       "VK_EXT_buffer_device_address"),
+               FEATURE_TABLE_ITEM(vulkan12Features,    bufferDeviceAddressFeatures,                    bufferDeviceAddressMultiDevice,                                         "VK_EXT_buffer_device_address"),
+               FEATURE_TABLE_ITEM(vulkan12Features,    vulkanMemoryModelFeatures,                              vulkanMemoryModel,                                                                      "VK_KHR_vulkan_memory_model"),
+               FEATURE_TABLE_ITEM(vulkan12Features,    vulkanMemoryModelFeatures,                              vulkanMemoryModelDeviceScope,                                           "VK_KHR_vulkan_memory_model"),
+               FEATURE_TABLE_ITEM(vulkan12Features,    vulkanMemoryModelFeatures,                              vulkanMemoryModelAvailabilityVisibilityChains,          "VK_KHR_vulkan_memory_model"),
+       };
+       struct FeatureDependencyTable
+       {
+               VkBool32*       featurePtr;
+               VkBool32*       dependOnPtr;
+       }
+       featureDependencyTable[] =
+       {
+               DEPENDENCY_DUAL_ITEM    (vulkan11Features,      multiviewFeatures,                              multiviewGeometryShader,                                                        multiview),
+               DEPENDENCY_DUAL_ITEM    (vulkan11Features,      multiviewFeatures,                              multiviewTessellationShader,                                            multiview),
+               DEPENDENCY_SINGLE_ITEM  (vulkan12Features,                                                                      shaderInputAttachmentArrayDynamicIndexing,                      descriptorIndexing),
+               DEPENDENCY_SINGLE_ITEM  (vulkan12Features,                                                                      shaderUniformTexelBufferArrayDynamicIndexing,           descriptorIndexing),
+               DEPENDENCY_SINGLE_ITEM  (vulkan12Features,                                                                      shaderStorageTexelBufferArrayDynamicIndexing,           descriptorIndexing),
+               DEPENDENCY_SINGLE_ITEM  (vulkan12Features,                                                                      shaderUniformBufferArrayNonUniformIndexing,                     descriptorIndexing),
+               DEPENDENCY_SINGLE_ITEM  (vulkan12Features,                                                                      shaderSampledImageArrayNonUniformIndexing,                      descriptorIndexing),
+               DEPENDENCY_SINGLE_ITEM  (vulkan12Features,                                                                      shaderStorageBufferArrayNonUniformIndexing,                     descriptorIndexing),
+               DEPENDENCY_SINGLE_ITEM  (vulkan12Features,                                                                      shaderStorageImageArrayNonUniformIndexing,                      descriptorIndexing),
+               DEPENDENCY_SINGLE_ITEM  (vulkan12Features,                                                                      shaderInputAttachmentArrayNonUniformIndexing,           descriptorIndexing),
+               DEPENDENCY_SINGLE_ITEM  (vulkan12Features,                                                                      shaderUniformTexelBufferArrayNonUniformIndexing,        descriptorIndexing),
+               DEPENDENCY_SINGLE_ITEM  (vulkan12Features,                                                                      shaderStorageTexelBufferArrayNonUniformIndexing,        descriptorIndexing),
+               DEPENDENCY_SINGLE_ITEM  (vulkan12Features,                                                                      descriptorBindingUniformBufferUpdateAfterBind,          descriptorIndexing),
+               DEPENDENCY_SINGLE_ITEM  (vulkan12Features,                                                                      descriptorBindingSampledImageUpdateAfterBind,           descriptorIndexing),
+               DEPENDENCY_SINGLE_ITEM  (vulkan12Features,                                                                      descriptorBindingStorageImageUpdateAfterBind,           descriptorIndexing),
+               DEPENDENCY_SINGLE_ITEM  (vulkan12Features,                                                                      descriptorBindingStorageBufferUpdateAfterBind,          descriptorIndexing),
+               DEPENDENCY_SINGLE_ITEM  (vulkan12Features,                                                                      descriptorBindingUniformTexelBufferUpdateAfterBind,     descriptorIndexing),
+               DEPENDENCY_SINGLE_ITEM  (vulkan12Features,                                                                      descriptorBindingStorageTexelBufferUpdateAfterBind,     descriptorIndexing),
+               DEPENDENCY_SINGLE_ITEM  (vulkan12Features,                                                                      descriptorBindingUpdateUnusedWhilePending,                      descriptorIndexing),
+               DEPENDENCY_SINGLE_ITEM  (vulkan12Features,                                                                      descriptorBindingPartiallyBound,                                        descriptorIndexing),
+               DEPENDENCY_SINGLE_ITEM  (vulkan12Features,                                                                      descriptorBindingVariableDescriptorCount,                       descriptorIndexing),
+               DEPENDENCY_SINGLE_ITEM  (vulkan12Features,                                                                      runtimeDescriptorArray,                                                         descriptorIndexing),
+               DEPENDENCY_DUAL_ITEM    (vulkan12Features,      bufferDeviceAddressFeatures,    bufferDeviceAddressCaptureReplay,                                       bufferDeviceAddress),
+               DEPENDENCY_DUAL_ITEM    (vulkan12Features,      bufferDeviceAddressFeatures,    bufferDeviceAddressMultiDevice,                                         bufferDeviceAddress),
+               DEPENDENCY_DUAL_ITEM    (vulkan12Features,      vulkanMemoryModelFeatures,              vulkanMemoryModelDeviceScope,                                           vulkanMemoryModel),
+               DEPENDENCY_DUAL_ITEM    (vulkan12Features,      vulkanMemoryModelFeatures,              vulkanMemoryModelAvailabilityVisibilityChains,          vulkanMemoryModel),
+       };
+
+       deMemset(&dummyExtensionFeatures, 0, sizeof(dummyExtensionFeatures));
+
+       for (size_t featureTableNdx = 0; featureTableNdx < DE_LENGTH_OF_ARRAY(featureTable); ++featureTableNdx)
+       {
+               FeatureTable&   testedFeature   = featureTable[featureTableNdx];
+               VkBool32                coreFeatureState= DE_FALSE;
+               VkBool32                extFeatureState = DE_FALSE;
+
+               // Core test
+               {
+                       void*           structPtr       = testedFeature.coreStructPtr;
+                       size_t          structSize      = testedFeature.coreStructSize;
+                       VkBool32*       featurePtr      = testedFeature.coreFieldPtr;
+
+                       if (structPtr != &dummyExtensionFeatures)
+                               features2.pNext = structPtr;
+
+                       vki.getPhysicalDeviceFeatures2(physicalDevice, &features2);
+
+                       coreFeatureState = featurePtr[0];
+
+                       log << TestLog::Message
+                               << "Feature status "
+                               << testedFeature.coreFieldName << "=" << coreFeatureState
+                               << TestLog::EndMessage;
+
+                       if (coreFeatureState)
+                       {
+                               cleanVulkanStruct(structPtr, structSize);
+
+                               featurePtr[0] = DE_TRUE;
+
+                               for (size_t featureDependencyTableNdx = 0; featureDependencyTableNdx < DE_LENGTH_OF_ARRAY(featureDependencyTable); ++featureDependencyTableNdx)
+                                       if (featureDependencyTable[featureDependencyTableNdx].featurePtr == featurePtr)
+                                               featureDependencyTable[featureDependencyTableNdx].dependOnPtr[0] = DE_TRUE;
+
+                               createDevice(context, &features2, DE_NULL, 0u);
+                       }
+               }
+
+               // ext test
+               {
+                       void*           structPtr               = testedFeature.extStructPtr;
+                       size_t          structSize              = testedFeature.extStructSize;
+                       VkBool32*       featurePtr              = testedFeature.extFieldPtr;
+                       const char*     extStringPtr    = testedFeature.extString;
+
+                       if (structPtr != &dummyExtensionFeatures)
+                               features2.pNext = structPtr;
+
+                       if (extStringPtr == DE_NULL || isExtensionSupported(deviceExtensionProperties, RequiredExtension(extStringPtr)))
+                       {
+                               vki.getPhysicalDeviceFeatures2(physicalDevice, &features2);
+
+                               extFeatureState = *featurePtr;
+
+                               log << TestLog::Message
+                                       << "Feature status "
+                                       << testedFeature.extFieldName << "=" << extFeatureState
+                                       << TestLog::EndMessage;
+
+                               if (extFeatureState)
+                               {
+                                       cleanVulkanStruct(structPtr, structSize);
+
+                                       featurePtr[0] = DE_TRUE;
+
+                                       for (size_t featureDependencyTableNdx = 0; featureDependencyTableNdx < DE_LENGTH_OF_ARRAY(featureDependencyTable); ++featureDependencyTableNdx)
+                                               if (featureDependencyTable[featureDependencyTableNdx].featurePtr == featurePtr)
+                                                       featureDependencyTable[featureDependencyTableNdx].dependOnPtr[0] = DE_TRUE;
+
+                                       createDevice(context, &features2, &extStringPtr, (extStringPtr == DE_NULL) ? 0u : 1u );
+                               }
+                       }
+               }
+       }
+
+       return tcu::TestStatus::pass("pass");
+}
+
 template<typename T>
 class CheckIncompleteResult
 {
@@ -1235,7 +2516,7 @@ tcu::TestStatus deviceProperties (Context& context)
 
        {
                const ApiVersion deviceVersion = unpackVersion(props->apiVersion);
-               const ApiVersion deqpVersion = unpackVersion(VK_API_VERSION_1_1);
+               const ApiVersion deqpVersion = unpackVersion(VK_API_VERSION_1_2);
 
                if (deviceVersion.majorNum != deqpVersion.majorNum)
                {
@@ -1680,7 +2961,7 @@ VkFormatFeatureFlags getRequiredOptimalExtendedTilingFeatures (Context& context,
                {
                        if (de::contains(DE_ARRAY_BEGIN(s_requiredSampledImageFilterMinMaxFormats), DE_ARRAY_END(s_requiredSampledImageFilterMinMaxFormats), format))
                        {
-                               VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT        physicalDeviceSamplerMinMaxProperties =
+                               VkPhysicalDeviceSamplerFilterMinmaxProperties           physicalDeviceSamplerMinMaxProperties =
                                {
                                        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT,
                                        DE_NULL,
@@ -2662,7 +3943,7 @@ bool checkExtension (vector<VkExtensionProperties>& properties, const char* exte
 {
        for (size_t ndx = 0; ndx < properties.size(); ++ndx)
        {
-               if (strcmp(properties[ndx].extensionName, extension) == 0)
+               if (strncmp(properties[ndx].extensionName, extension, VK_MAX_EXTENSION_NAME_SIZE) == 0)
                        return true;
        }
        return false;
@@ -2695,99 +3976,140 @@ tcu::TestStatus deviceFeatures2 (Context& context)
 
        log << TestLog::Message << extFeatures << TestLog::EndMessage;
 
-       vector<VkExtensionProperties>   properties = enumerateDeviceExtensionProperties(vki, physicalDevice, DE_NULL);
-       const bool khr_8bit_storage                             = checkExtension(properties,"VK_KHR_8bit_storage");
-       const bool ext_conditional_rendering    = checkExtension(properties,"VK_EXT_conditional_rendering");
-       const bool scalar_block_layout                  = checkExtension(properties,"VK_EXT_scalar_block_layout");
-       const bool khr_performance_counter              = checkExtension(properties,"VK_KHR_performance_query");
-       bool khr_16bit_storage                                  = true;
-       bool khr_multiview                                              = true;
-       bool deviceProtectedMemory                              = true;
-       bool sampler_ycbcr_conversion                   = true;
-       bool variable_pointers                                  = true;
-       if (getPhysicalDeviceProperties(vki, physicalDevice).apiVersion < VK_API_VERSION_1_1)
-       {
-               khr_16bit_storage = checkExtension(properties,"VK_KHR_16bit_storage");
-               khr_multiview = checkExtension(properties,"VK_KHR_multiview");
-               deviceProtectedMemory = false;
-               sampler_ycbcr_conversion = checkExtension(properties,"VK_KHR_sampler_ycbcr_conversion");
-               variable_pointers = checkExtension(properties,"VK_KHR_variable_pointers");
-       }
+       vector<VkExtensionProperties> properties        = enumerateDeviceExtensionProperties(vki, physicalDevice, DE_NULL);
+       const bool ext_conditional_rendering            = checkExtension(properties, "VK_EXT_conditional_rendering");
+       const bool ext_scalar_block_layout                      = checkExtension(properties, "VK_EXT_scalar_block_layout");
+       const bool khr_performance_counter                      = checkExtension(properties, "VK_KHR_performance_query");
+       const bool khr_16bit_storage                            = checkExtension(properties, "VK_KHR_16bit_storage")                    ||      context.contextSupports(vk::ApiVersion(1, 1, 0));
+       const bool khr_multiview                                        = checkExtension(properties, "VK_KHR_multiview")                                ||      context.contextSupports(vk::ApiVersion(1, 1, 0));
+       const bool khr_device_protected_memory          =                                                                                                                                       context.contextSupports(vk::ApiVersion(1, 1, 0));
+       const bool khr_sampler_ycbcr_conversion         = checkExtension(properties, "VK_KHR_sampler_ycbcr_conversion") ||      context.contextSupports(vk::ApiVersion(1, 1, 0));
+       const bool khr_variable_pointers                        = checkExtension(properties, "VK_KHR_variable_pointers")                ||      context.contextSupports(vk::ApiVersion(1, 1, 0));
+       const bool khr_8bit_storage                                     = checkExtension(properties, "VK_KHR_8bit_storage")                             ||      context.contextSupports(vk::ApiVersion(1, 2, 0));
+       const bool khr_shader_atomic_int64                      = checkExtension(properties, "VK_KHR_shader_atomic_int64")              ||      context.contextSupports(vk::ApiVersion(1, 2, 0));
+       const bool khr_shader_float16_int8                      = checkExtension(properties, "VK_KHR_shader_float16_int8")              ||      context.contextSupports(vk::ApiVersion(1, 2, 0));
+       const bool khr_buffer_device_address            = checkExtension(properties, "VK_KHR_buffer_device_address")    ||      context.contextSupports(vk::ApiVersion(1, 2, 0));
+       const bool ext_descriptor_indexing                      = checkExtension(properties, "VK_EXT_descriptor_indexing")              ||      context.contextSupports(vk::ApiVersion(1, 2, 0));
+       const bool ext_buffer_device_address            = checkExtension(properties, "VK_EXT_buffer_device_address");
 
        const int count = 2u;
-       VkPhysicalDevice8BitStorageFeaturesKHR                          device8BitStorageFeatures[count];
-       VkPhysicalDeviceConditionalRenderingFeaturesEXT         deviceConditionalRenderingFeatures[count];
-       VkPhysicalDevice16BitStorageFeatures                            device16BitStorageFeatures[count];
-       VkPhysicalDeviceMultiviewFeatures                                       deviceMultiviewFeatures[count];
-       VkPhysicalDeviceProtectedMemoryFeatures                         protectedMemoryFeatures[count];
-       VkPhysicalDeviceSamplerYcbcrConversionFeatures          samplerYcbcrConversionFeatures[count];
-       VkPhysicalDeviceVariablePointersFeatures                        variablePointerFeatures[count];
-       VkPhysicalDeviceScalarBlockLayoutFeaturesEXT            scalarBlockLayoutFeatures[count];
-       VkPhysicalDeviceTimelineSemaphoreFeaturesKHR            timelineSemaphoreFeatures[count];
-       VkPhysicalDevicePerformanceQueryFeaturesKHR                     performanceQueryFeatures[count];
+       VkPhysicalDeviceConditionalRenderingFeaturesEXT deviceConditionalRenderingFeatures[count];
+       VkPhysicalDeviceScalarBlockLayoutFeatures               scalarBlockLayoutFeatures[count];
+       VkPhysicalDevicePerformanceQueryFeaturesKHR             performanceQueryFeatures[count];
+       VkPhysicalDevice16BitStorageFeatures                    device16BitStorageFeatures[count];
+       VkPhysicalDeviceMultiviewFeatures                               deviceMultiviewFeatures[count];
+       VkPhysicalDeviceProtectedMemoryFeatures                 protectedMemoryFeatures[count];
+       VkPhysicalDeviceSamplerYcbcrConversionFeatures  samplerYcbcrConversionFeatures[count];
+       VkPhysicalDeviceVariablePointersFeatures                variablePointerFeatures[count];
+       VkPhysicalDevice8BitStorageFeatures                             device8BitStorageFeatures[count];
+       VkPhysicalDeviceShaderAtomicInt64Features               deviceShaderAtomicInt64Features[count];
+       VkPhysicalDeviceShaderFloat16Int8Features               deviceShaderFloat16Int8Features[count];
+       VkPhysicalDeviceBufferDeviceAddressFeaturesEXT  deviceBufferDeviceAddressFeaturesEXT[count];
+       VkPhysicalDeviceBufferDeviceAddressFeatures             deviceBufferDeviceAddressFeatures[count];
+       VkPhysicalDeviceDescriptorIndexingFeatures              deviceDescriptorIndexingFeatures[count];
+       VkPhysicalDeviceTimelineSemaphoreFeatures               timelineSemaphoreFeatures[count];
 
        for (int ndx = 0; ndx < count; ++ndx)
        {
-               deMemset(&device8BitStorageFeatures[ndx],                       0xFF*ndx, sizeof(VkPhysicalDevice8BitStorageFeaturesKHR));
-               deMemset(&deviceConditionalRenderingFeatures[ndx],      0xFF*ndx, sizeof(VkPhysicalDeviceConditionalRenderingFeaturesEXT));
-               deMemset(&device16BitStorageFeatures[ndx],                      0xFF*ndx, sizeof(VkPhysicalDevice16BitStorageFeatures));
-               deMemset(&deviceMultiviewFeatures[ndx],                         0xFF*ndx, sizeof(VkPhysicalDeviceMultiviewFeatures));
-               deMemset(&protectedMemoryFeatures[ndx],                         0xFF*ndx, sizeof(VkPhysicalDeviceProtectedMemoryFeatures));
-               deMemset(&samplerYcbcrConversionFeatures[ndx],          0xFF*ndx, sizeof(VkPhysicalDeviceSamplerYcbcrConversionFeatures));
-               deMemset(&variablePointerFeatures[ndx],                         0xFF*ndx, sizeof(VkPhysicalDeviceVariablePointersFeatures));
-               deMemset(&scalarBlockLayoutFeatures[ndx],                       0xFF*ndx, sizeof(VkPhysicalDeviceScalarBlockLayoutFeaturesEXT));
-               deMemset(&performanceQueryFeatures[ndx],                        0xFF*ndx, sizeof(VkPhysicalDevicePerformanceQueryFeaturesKHR));
+               deMemset(&deviceConditionalRenderingFeatures[ndx],      0xFF * ndx, sizeof(VkPhysicalDeviceConditionalRenderingFeaturesEXT));
+               deMemset(&scalarBlockLayoutFeatures[ndx],                       0xFF * ndx, sizeof(VkPhysicalDeviceScalarBlockLayoutFeatures));
+               deMemset(&performanceQueryFeatures[ndx],                        0xFF * ndx, sizeof(VkPhysicalDevicePerformanceQueryFeaturesKHR));
+               deMemset(&device16BitStorageFeatures[ndx],                      0xFF * ndx, sizeof(VkPhysicalDevice16BitStorageFeatures));
+               deMemset(&deviceMultiviewFeatures[ndx],                         0xFF * ndx, sizeof(VkPhysicalDeviceMultiviewFeatures));
+               deMemset(&protectedMemoryFeatures[ndx],                         0xFF * ndx, sizeof(VkPhysicalDeviceProtectedMemoryFeatures));
+               deMemset(&samplerYcbcrConversionFeatures[ndx],          0xFF * ndx, sizeof(VkPhysicalDeviceSamplerYcbcrConversionFeatures));
+               deMemset(&variablePointerFeatures[ndx],                         0xFF * ndx, sizeof(VkPhysicalDeviceVariablePointersFeatures));
+               deMemset(&device8BitStorageFeatures[ndx],                       0xFF * ndx, sizeof(VkPhysicalDevice8BitStorageFeaturesKHR));
+               deMemset(&deviceShaderAtomicInt64Features[ndx],         0xFF * ndx, sizeof(VkPhysicalDeviceShaderAtomicInt64Features));
+               deMemset(&deviceShaderFloat16Int8Features[ndx],         0xFF * ndx, sizeof(VkPhysicalDeviceShaderFloat16Int8Features));
+               deMemset(&deviceBufferDeviceAddressFeatures[ndx],       0xFF * ndx, sizeof(VkPhysicalDeviceBufferDeviceAddressFeatures));
+               deMemset(&deviceBufferDeviceAddressFeaturesEXT[ndx],0xFF * ndx, sizeof(VkPhysicalDeviceBufferDeviceAddressFeaturesEXT));
+               deMemset(&deviceDescriptorIndexingFeatures[ndx],        0xFF * ndx, sizeof(VkPhysicalDeviceDescriptorIndexingFeatures));
+
+               deviceConditionalRenderingFeatures[ndx].sType   = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT;
+               deviceConditionalRenderingFeatures[ndx].pNext   = &scalarBlockLayoutFeatures[ndx];
 
-               device8BitStorageFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR;
-               device8BitStorageFeatures[ndx].pNext = &deviceConditionalRenderingFeatures[ndx];
+               scalarBlockLayoutFeatures[ndx].sType                    = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT;
+               scalarBlockLayoutFeatures[ndx].pNext                    = &performanceQueryFeatures[ndx];
 
-               deviceConditionalRenderingFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT;
-               deviceConditionalRenderingFeatures[ndx].pNext = &device16BitStorageFeatures[ndx];
+               performanceQueryFeatures[ndx].sType                             = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR;
+               performanceQueryFeatures[ndx].pNext                             = &device16BitStorageFeatures[ndx];
 
-               device16BitStorageFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES;
-               device16BitStorageFeatures[ndx].pNext = &deviceMultiviewFeatures[ndx];
+               device16BitStorageFeatures[ndx].sType                   = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES;
+               device16BitStorageFeatures[ndx].pNext                   = &deviceMultiviewFeatures[ndx];
 
-               deviceMultiviewFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES;
-               deviceMultiviewFeatures[ndx].pNext = &protectedMemoryFeatures[ndx];
+               deviceMultiviewFeatures[ndx].sType                              = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES;
+               deviceMultiviewFeatures[ndx].pNext                              = &protectedMemoryFeatures[ndx];
 
-               protectedMemoryFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES;
-               protectedMemoryFeatures[ndx].pNext = &samplerYcbcrConversionFeatures[ndx];
+               protectedMemoryFeatures[ndx].sType                              = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES;
+               protectedMemoryFeatures[ndx].pNext                              = &samplerYcbcrConversionFeatures[ndx];
 
-               samplerYcbcrConversionFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES;
-               samplerYcbcrConversionFeatures[ndx].pNext = &variablePointerFeatures[ndx];
+               samplerYcbcrConversionFeatures[ndx].sType               = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES;
+               samplerYcbcrConversionFeatures[ndx].pNext               = &variablePointerFeatures[ndx];
 
-               variablePointerFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES;
-               variablePointerFeatures[ndx].pNext = &scalarBlockLayoutFeatures[ndx];
+               variablePointerFeatures[ndx].sType                              = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES;
+               variablePointerFeatures[ndx].pNext                              = &device8BitStorageFeatures[ndx];
 
-               scalarBlockLayoutFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT;
-               scalarBlockLayoutFeatures[ndx].pNext = &timelineSemaphoreFeatures[ndx];
+               device8BitStorageFeatures[ndx].sType                    = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR;
+               device8BitStorageFeatures[ndx].pNext                    = &deviceShaderAtomicInt64Features[ndx];
 
-               timelineSemaphoreFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR;
-               timelineSemaphoreFeatures[ndx].pNext = &performanceQueryFeatures[ndx];
+               deviceShaderAtomicInt64Features[ndx].sType              = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES;
+               deviceShaderAtomicInt64Features[ndx].pNext              = &deviceShaderFloat16Int8Features[ndx];
 
-               performanceQueryFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR;
-               performanceQueryFeatures[ndx].pNext = DE_NULL;
+               deviceShaderFloat16Int8Features[ndx].sType              = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES;
+               deviceShaderFloat16Int8Features[ndx].pNext              = &deviceBufferDeviceAddressFeatures[ndx];
+
+               deviceBufferDeviceAddressFeatures[ndx].sType    = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES;
+               deviceBufferDeviceAddressFeatures[ndx].pNext    = &deviceBufferDeviceAddressFeaturesEXT[ndx];
+
+               deviceBufferDeviceAddressFeaturesEXT[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT;
+               deviceBufferDeviceAddressFeaturesEXT[ndx].pNext = &deviceDescriptorIndexingFeatures[ndx];
+
+               deviceDescriptorIndexingFeatures[ndx].sType             = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES;
+               deviceDescriptorIndexingFeatures[ndx].pNext             = &timelineSemaphoreFeatures[ndx];
+
+               timelineSemaphoreFeatures[ndx].sType                    = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES;
+               timelineSemaphoreFeatures[ndx].pNext                    = DE_NULL;
 
                deMemset(&extFeatures.features, 0xcd, sizeof(extFeatures.features));
                extFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2;
-               extFeatures.pNext = &device8BitStorageFeatures[ndx];
+               extFeatures.pNext = &deviceConditionalRenderingFeatures[ndx];
 
                vki.getPhysicalDeviceFeatures2(physicalDevice, &extFeatures);
        }
 
-       if ( khr_8bit_storage &&
-               (device8BitStorageFeatures[0].storageBuffer8BitAccess                           != device8BitStorageFeatures[1].storageBuffer8BitAccess ||
-               device8BitStorageFeatures[0].uniformAndStorageBuffer8BitAccess          != device8BitStorageFeatures[1].uniformAndStorageBuffer8BitAccess ||
-               device8BitStorageFeatures[0].storagePushConstant8                                       != device8BitStorageFeatures[1].storagePushConstant8 )
-               )
-       {
-               TCU_FAIL("Mismatch between VkPhysicalDevice8BitStorageFeatures");
-       }
+       if (ext_conditional_rendering)
+               log << TestLog::Message << deviceConditionalRenderingFeatures[0] << TestLog::EndMessage;
+       if (ext_scalar_block_layout)
+               log << TestLog::Message << scalarBlockLayoutFeatures[0] << TestLog::EndMessage;
+       if (khr_performance_counter)
+               log << TestLog::Message << performanceQueryFeatures[0] << TestLog::EndMessage;
+       if (khr_16bit_storage)
+               log << TestLog::Message << device16BitStorageFeatures[0] << TestLog::EndMessage;
+       if (khr_multiview)
+               log << TestLog::Message << deviceMultiviewFeatures[0] << TestLog::EndMessage;
+       if (khr_device_protected_memory)
+               log << TestLog::Message << protectedMemoryFeatures[0] << TestLog::EndMessage;
+       if (khr_sampler_ycbcr_conversion)
+               log << TestLog::Message << samplerYcbcrConversionFeatures[0] << TestLog::EndMessage;
+       if (khr_variable_pointers)
+               log << TestLog::Message << variablePointerFeatures[0] << TestLog::EndMessage;
+       if (khr_8bit_storage)
+               log << TestLog::Message << device8BitStorageFeatures[0] << TestLog::EndMessage;
+       if (khr_shader_atomic_int64)
+               log << TestLog::Message << deviceShaderAtomicInt64Features[0] << TestLog::EndMessage;
+       if (khr_shader_float16_int8)
+               log << TestLog::Message << deviceShaderFloat16Int8Features[0] << TestLog::EndMessage;
+       if (khr_buffer_device_address)
+               log << TestLog::Message << deviceBufferDeviceAddressFeatures[0] << TestLog::EndMessage;
+       if (ext_buffer_device_address)
+               log << TestLog::Message << deviceBufferDeviceAddressFeaturesEXT[0] << TestLog::EndMessage;
+       if (ext_descriptor_indexing)
+               log << TestLog::Message << deviceDescriptorIndexingFeatures[0] << TestLog::EndMessage;
 
        if ( ext_conditional_rendering &&
-               (deviceConditionalRenderingFeatures[0].conditionalRendering                             != deviceConditionalRenderingFeatures[1].conditionalRendering ||
-               deviceConditionalRenderingFeatures[0].inheritedConditionalRendering             != deviceConditionalRenderingFeatures[1].inheritedConditionalRendering )
-               )
+               (       deviceConditionalRenderingFeatures[0].conditionalRendering                              != deviceConditionalRenderingFeatures[1].conditionalRendering ||
+                       deviceConditionalRenderingFeatures[0].inheritedConditionalRendering             != deviceConditionalRenderingFeatures[1].inheritedConditionalRendering ))
        {
                TCU_FAIL("Mismatch between VkPhysicalDeviceConditionalRenderingFeaturesEXT");
        }
@@ -2798,66 +4120,115 @@ tcu::TestStatus deviceFeatures2 (Context& context)
                TCU_FAIL("Mismatch between VkPhysicalDevicePerformancQueryFeaturesKHR");
        }
 
+       if ( ext_scalar_block_layout &&
+               (       scalarBlockLayoutFeatures[0].scalarBlockLayout != scalarBlockLayoutFeatures[1].scalarBlockLayout ))
+       {
+               TCU_FAIL("Mismatch between VkPhysicalDeviceScalarBlockLayoutFeatures");
+       }
+
+       if ( khr_performance_counter &&
+               (       performanceQueryFeatures[0].performanceCounterQueryPools                        != performanceQueryFeatures[1].performanceCounterQueryPools ||
+                       performanceQueryFeatures[0].performanceCounterMultipleQueryPools        != performanceQueryFeatures[1].performanceCounterMultipleQueryPools ))
+       {
+               TCU_FAIL("Mismatch between VkPhysicalDevicePerformancQueryFeaturesKHR");
+       }
+
        if ( khr_16bit_storage &&
-               (device16BitStorageFeatures[0].storageBuffer16BitAccess                         != device16BitStorageFeatures[1].storageBuffer16BitAccess ||
-               device16BitStorageFeatures[0].uniformAndStorageBuffer16BitAccess        != device16BitStorageFeatures[1].uniformAndStorageBuffer16BitAccess ||
-               device16BitStorageFeatures[0].storagePushConstant16                                     != device16BitStorageFeatures[1].storagePushConstant16 ||
-               device16BitStorageFeatures[0].storageInputOutput16                                      != device16BitStorageFeatures[1].storageInputOutput16)
-               )
+               (       device16BitStorageFeatures[0].storageBuffer16BitAccess                          != device16BitStorageFeatures[1].storageBuffer16BitAccess ||
+                       device16BitStorageFeatures[0].uniformAndStorageBuffer16BitAccess        != device16BitStorageFeatures[1].uniformAndStorageBuffer16BitAccess ||
+                       device16BitStorageFeatures[0].storagePushConstant16                                     != device16BitStorageFeatures[1].storagePushConstant16 ||
+                       device16BitStorageFeatures[0].storageInputOutput16                                      != device16BitStorageFeatures[1].storageInputOutput16 ))
        {
                TCU_FAIL("Mismatch between VkPhysicalDevice16BitStorageFeatures");
        }
 
-       if (khr_multiview &&
-               (deviceMultiviewFeatures[0].multiview                                   != deviceMultiviewFeatures[1].multiview ||
-               deviceMultiviewFeatures[0].multiviewGeometryShader              != deviceMultiviewFeatures[1].multiviewGeometryShader ||
-               deviceMultiviewFeatures[0].multiviewTessellationShader  != deviceMultiviewFeatures[1].multiviewTessellationShader)
-               )
+       if ( khr_multiview &&
+               (       deviceMultiviewFeatures[0].multiview                                    != deviceMultiviewFeatures[1].multiview ||
+                       deviceMultiviewFeatures[0].multiviewGeometryShader              != deviceMultiviewFeatures[1].multiviewGeometryShader ||
+                       deviceMultiviewFeatures[0].multiviewTessellationShader  != deviceMultiviewFeatures[1].multiviewTessellationShader ))
        {
                TCU_FAIL("Mismatch between VkPhysicalDeviceMultiviewFeatures");
        }
 
-       if (deviceProtectedMemory && protectedMemoryFeatures[0].protectedMemory != protectedMemoryFeatures[1].protectedMemory)
+       if ( khr_device_protected_memory && protectedMemoryFeatures[0].protectedMemory != protectedMemoryFeatures[1].protectedMemory )
        {
                TCU_FAIL("Mismatch between VkPhysicalDeviceProtectedMemoryFeatures");
        }
 
-       if (sampler_ycbcr_conversion && samplerYcbcrConversionFeatures[0].samplerYcbcrConversion != samplerYcbcrConversionFeatures[1].samplerYcbcrConversion)
+       if ( khr_sampler_ycbcr_conversion && samplerYcbcrConversionFeatures[0].samplerYcbcrConversion != samplerYcbcrConversionFeatures[1].samplerYcbcrConversion )
        {
                TCU_FAIL("Mismatch between VkPhysicalDeviceSamplerYcbcrConversionFeatures");
        }
 
-       if (variable_pointers &&
-               (variablePointerFeatures[0].variablePointersStorageBuffer       != variablePointerFeatures[1].variablePointersStorageBuffer ||
-               variablePointerFeatures[0].variablePointers                                     != variablePointerFeatures[1].variablePointers)
-               )
+       if ( khr_variable_pointers &&
+               (       variablePointerFeatures[0].variablePointersStorageBuffer        != variablePointerFeatures[1].variablePointersStorageBuffer ||
+                       variablePointerFeatures[0].variablePointers                                     != variablePointerFeatures[1].variablePointers))
        {
                TCU_FAIL("Mismatch between VkPhysicalDeviceVariablePointersFeatures");
        }
-       if (scalar_block_layout &&
-               (scalarBlockLayoutFeatures[0].scalarBlockLayout != scalarBlockLayoutFeatures[1].scalarBlockLayout))
+
+       if ( khr_8bit_storage &&
+               (       device8BitStorageFeatures[0].storageBuffer8BitAccess                    != device8BitStorageFeatures[1].storageBuffer8BitAccess ||
+                       device8BitStorageFeatures[0].uniformAndStorageBuffer8BitAccess  != device8BitStorageFeatures[1].uniformAndStorageBuffer8BitAccess ||
+                       device8BitStorageFeatures[0].storagePushConstant8                               != device8BitStorageFeatures[1].storagePushConstant8 ))
        {
-               TCU_FAIL("Mismatch between VkPhysicalDeviceScalarBlockLayoutFeaturesEXT");
+               TCU_FAIL("Mismatch between VkPhysicalDevice8BitStorageFeatures");
        }
 
-       if (khr_8bit_storage)
-               log << TestLog::Message << device8BitStorageFeatures[0]         << TestLog::EndMessage;
-       if (ext_conditional_rendering)
-               log << TestLog::Message << deviceConditionalRenderingFeatures[0]                << TestLog::EndMessage;
-       if (khr_16bit_storage)
-               log << TestLog::Message << device16BitStorageFeatures[0]                << TestLog::EndMessage;
-       if (khr_multiview)
-               log << TestLog::Message << deviceMultiviewFeatures[0]                   << TestLog::EndMessage;
-       if (deviceProtectedMemory)
-               log << TestLog::Message << protectedMemoryFeatures[0]                   << TestLog::EndMessage;
-       if (sampler_ycbcr_conversion)
-               log << TestLog::Message << samplerYcbcrConversionFeatures[0]    << TestLog::EndMessage;
-       if (variable_pointers)
-               log << TestLog::Message << variablePointerFeatures[0]                   << TestLog::EndMessage;
-       if (scalar_block_layout)
-               log << TestLog::Message << scalarBlockLayoutFeatures[0]                 << TestLog::EndMessage;
-       if (khr_performance_counter)
-               log << TestLog::Message << performanceQueryFeatures[0]          << TestLog::EndMessage;
+       if ( khr_shader_atomic_int64 &&
+               (       deviceShaderAtomicInt64Features[0].shaderBufferInt64Atomics != deviceShaderAtomicInt64Features[1].shaderBufferInt64Atomics ||
+                       deviceShaderAtomicInt64Features[0].shaderSharedInt64Atomics != deviceShaderAtomicInt64Features[1].shaderSharedInt64Atomics ))
+       {
+               TCU_FAIL("Mismatch between VkPhysicalDeviceShaderAtomicInt64Features");
+       }
+
+       if ( khr_shader_float16_int8 &&
+               (       deviceShaderFloat16Int8Features[0].shaderFloat16        != deviceShaderFloat16Int8Features[1].shaderFloat16 ||
+                       deviceShaderFloat16Int8Features[0].shaderInt8           != deviceShaderFloat16Int8Features[1].shaderInt8 ))
+       {
+               TCU_FAIL("Mismatch between VkPhysicalDeviceShaderFloat16Int8Features");
+       }
+
+       if ( khr_buffer_device_address &&
+               (       deviceBufferDeviceAddressFeatures[0].bufferDeviceAddress                                != deviceBufferDeviceAddressFeatures[1].bufferDeviceAddress ||
+                       deviceBufferDeviceAddressFeatures[0].bufferDeviceAddressCaptureReplay   != deviceBufferDeviceAddressFeatures[1].bufferDeviceAddressCaptureReplay ||
+                       deviceBufferDeviceAddressFeatures[0].bufferDeviceAddressMultiDevice             != deviceBufferDeviceAddressFeatures[1].bufferDeviceAddressMultiDevice ))
+       {
+               TCU_FAIL("Mismatch between VkPhysicalDeviceBufferDeviceAddressFeatures");
+       }
+
+       if ( ext_buffer_device_address &&
+               (       deviceBufferDeviceAddressFeaturesEXT[0].bufferDeviceAddress                                     != deviceBufferDeviceAddressFeaturesEXT[1].bufferDeviceAddress ||
+                       deviceBufferDeviceAddressFeaturesEXT[0].bufferDeviceAddressCaptureReplay        != deviceBufferDeviceAddressFeaturesEXT[1].bufferDeviceAddressCaptureReplay ||
+                       deviceBufferDeviceAddressFeaturesEXT[0].bufferDeviceAddressMultiDevice          != deviceBufferDeviceAddressFeaturesEXT[1].bufferDeviceAddressMultiDevice ))
+       {
+               TCU_FAIL("Mismatch between VkPhysicalDeviceBufferDeviceAddressFeaturesEXT");
+       }
+
+       if ( ext_descriptor_indexing &&
+               (       deviceDescriptorIndexingFeatures[0].shaderInputAttachmentArrayDynamicIndexing                   != deviceDescriptorIndexingFeatures[1].shaderInputAttachmentArrayDynamicIndexing ||
+                       deviceDescriptorIndexingFeatures[0].shaderUniformTexelBufferArrayDynamicIndexing                != deviceDescriptorIndexingFeatures[1].shaderUniformTexelBufferArrayDynamicIndexing ||
+                       deviceDescriptorIndexingFeatures[0].shaderStorageTexelBufferArrayDynamicIndexing                != deviceDescriptorIndexingFeatures[1].shaderStorageTexelBufferArrayDynamicIndexing ||
+                       deviceDescriptorIndexingFeatures[0].shaderUniformBufferArrayNonUniformIndexing                  != deviceDescriptorIndexingFeatures[1].shaderUniformBufferArrayNonUniformIndexing ||
+                       deviceDescriptorIndexingFeatures[0].shaderSampledImageArrayNonUniformIndexing                   != deviceDescriptorIndexingFeatures[1].shaderSampledImageArrayNonUniformIndexing ||
+                       deviceDescriptorIndexingFeatures[0].shaderStorageBufferArrayNonUniformIndexing                  != deviceDescriptorIndexingFeatures[1].shaderStorageBufferArrayNonUniformIndexing ||
+                       deviceDescriptorIndexingFeatures[0].shaderStorageImageArrayNonUniformIndexing                   != deviceDescriptorIndexingFeatures[1].shaderStorageImageArrayNonUniformIndexing ||
+                       deviceDescriptorIndexingFeatures[0].shaderInputAttachmentArrayNonUniformIndexing                != deviceDescriptorIndexingFeatures[1].shaderInputAttachmentArrayNonUniformIndexing ||
+                       deviceDescriptorIndexingFeatures[0].shaderUniformTexelBufferArrayNonUniformIndexing             != deviceDescriptorIndexingFeatures[1].shaderUniformTexelBufferArrayNonUniformIndexing ||
+                       deviceDescriptorIndexingFeatures[0].shaderStorageTexelBufferArrayNonUniformIndexing             != deviceDescriptorIndexingFeatures[1].shaderStorageTexelBufferArrayNonUniformIndexing ||
+                       deviceDescriptorIndexingFeatures[0].descriptorBindingUniformBufferUpdateAfterBind               != deviceDescriptorIndexingFeatures[1].descriptorBindingUniformBufferUpdateAfterBind ||
+                       deviceDescriptorIndexingFeatures[0].descriptorBindingSampledImageUpdateAfterBind                != deviceDescriptorIndexingFeatures[1].descriptorBindingSampledImageUpdateAfterBind ||
+                       deviceDescriptorIndexingFeatures[0].descriptorBindingStorageImageUpdateAfterBind                != deviceDescriptorIndexingFeatures[1].descriptorBindingStorageImageUpdateAfterBind ||
+                       deviceDescriptorIndexingFeatures[0].descriptorBindingStorageBufferUpdateAfterBind               != deviceDescriptorIndexingFeatures[1].descriptorBindingStorageBufferUpdateAfterBind ||
+                       deviceDescriptorIndexingFeatures[0].descriptorBindingUniformTexelBufferUpdateAfterBind  != deviceDescriptorIndexingFeatures[1].descriptorBindingUniformTexelBufferUpdateAfterBind ||
+                       deviceDescriptorIndexingFeatures[0].descriptorBindingStorageTexelBufferUpdateAfterBind  != deviceDescriptorIndexingFeatures[1].descriptorBindingStorageTexelBufferUpdateAfterBind ||
+                       deviceDescriptorIndexingFeatures[0].descriptorBindingUpdateUnusedWhilePending                   != deviceDescriptorIndexingFeatures[1].descriptorBindingUpdateUnusedWhilePending ||
+                       deviceDescriptorIndexingFeatures[0].descriptorBindingPartiallyBound                                             != deviceDescriptorIndexingFeatures[1].descriptorBindingPartiallyBound ||
+                       deviceDescriptorIndexingFeatures[0].descriptorBindingVariableDescriptorCount                    != deviceDescriptorIndexingFeatures[1].descriptorBindingVariableDescriptorCount ||
+                       deviceDescriptorIndexingFeatures[0].runtimeDescriptorArray                                                              != deviceDescriptorIndexingFeatures[1].runtimeDescriptorArray ))
+       {
+               TCU_FAIL("Mismatch between VkPhysicalDeviceDescriptorIndexingFeatures");
+       }
 
        return tcu::TestStatus::pass("Querying device features succeeded");
 }
@@ -2899,142 +4270,238 @@ tcu::TestStatus deviceProperties2 (Context& context)
 
        const int count = 2u;
 
-       bool khr_external_memory_capabilities           = true;
-       bool khr_multiview                                                      = true;
-       bool khr_maintenance2                                           = true;
-       bool khr_maintenance3                                           = true;
-       bool apiVersionSmallerThen_1_1                          = (getPhysicalDeviceProperties(vki, physicalDevice).apiVersion < VK_API_VERSION_1_1);
-       if (apiVersionSmallerThen_1_1)
-       {
-               vector<VkExtensionProperties> properties        = enumerateDeviceExtensionProperties(vki, physicalDevice, DE_NULL);
-               khr_external_memory_capabilities                        = checkExtension(properties,"VK_KHR_external_memory_capabilities");
-               khr_multiview                                                           = checkExtension(properties,"VK_KHR_multiview");
-               khr_maintenance2                                                        = checkExtension(properties,"VK_KHR_maintenance2");
-               khr_maintenance3                                                        = checkExtension(properties,"VK_KHR_maintenance3");
-       }
-
-       VkPhysicalDeviceIDProperties                            IDProperties[count];
-       VkPhysicalDeviceMaintenance3Properties          maintenance3Properties[count];
-       VkPhysicalDeviceMultiviewProperties                     multiviewProperties[count];
-       VkPhysicalDevicePointClippingProperties         pointClippingProperties[count];
-       VkPhysicalDeviceProtectedMemoryProperties       protectedMemoryPropertiesKHR[count];
-       VkPhysicalDeviceSubgroupProperties                      subgroupProperties[count];
+       vector<VkExtensionProperties> properties                = enumerateDeviceExtensionProperties(vki, physicalDevice, DE_NULL);
+       const bool khr_external_fence_capabilities              = checkExtension(properties, "VK_KHR_external_fence_capabilities")              ||      context.contextSupports(vk::ApiVersion(1, 1, 0));
+       const bool khr_external_memory_capabilities             = checkExtension(properties, "VK_KHR_external_memory_capabilities")             ||      context.contextSupports(vk::ApiVersion(1, 1, 0));
+       const bool khr_external_semaphore_capabilities  = checkExtension(properties, "VK_KHR_external_semaphore_capabilities")  ||      context.contextSupports(vk::ApiVersion(1, 1, 0));
+       const bool khr_multiview                                                = checkExtension(properties, "VK_KHR_multiview")                                                ||      context.contextSupports(vk::ApiVersion(1, 1, 0));
+       const bool khr_device_protected_memory                  =                                                                                                                                                       context.contextSupports(vk::ApiVersion(1, 1, 0));
+       const bool khr_device_subgroup                                  =                                                                                                                                                       context.contextSupports(vk::ApiVersion(1, 1, 0));
+       const bool khr_maintenance2                                             = checkExtension(properties, "VK_KHR_maintenance2")                                             ||      context.contextSupports(vk::ApiVersion(1, 1, 0));
+       const bool khr_maintenance3                                             = checkExtension(properties, "VK_KHR_maintenance3")                                             ||      context.contextSupports(vk::ApiVersion(1, 1, 0));
+       const bool khr_depth_stencil_resolve                    = checkExtension(properties, "VK_KHR_depth_stencil_resolve")                    ||      context.contextSupports(vk::ApiVersion(1, 2, 0));
+       const bool khr_driver_properties                                = checkExtension(properties, "VK_KHR_driver_properties")                                ||      context.contextSupports(vk::ApiVersion(1, 2, 0));
+       const bool khr_shader_float_controls                    = checkExtension(properties, "VK_KHR_shader_float_controls")                    ||      context.contextSupports(vk::ApiVersion(1, 2, 0));
+       const bool khr_descriptor_indexing                              = checkExtension(properties, "VK_EXT_descriptor_indexing")                              ||      context.contextSupports(vk::ApiVersion(1, 2, 0));
+       const bool khr_sampler_filter_minmax                    = checkExtension(properties, "VK_EXT_sampler_filter_minmax")                    ||      context.contextSupports(vk::ApiVersion(1, 2, 0));
+
+       VkPhysicalDeviceIDProperties                                    idProperties[count];
+       VkPhysicalDeviceMultiviewProperties                             multiviewProperties[count];
+       VkPhysicalDeviceProtectedMemoryProperties               protectedMemoryPropertiesKHR[count];
+       VkPhysicalDeviceSubgroupProperties                              subgroupProperties[count];
+       VkPhysicalDevicePointClippingProperties                 pointClippingProperties[count];
+       VkPhysicalDeviceMaintenance3Properties                  maintenance3Properties[count];
+       VkPhysicalDeviceDepthStencilResolveProperties   depthStencilResolveProperties[count];
+       VkPhysicalDeviceDriverProperties                                driverProperties[count];
+       VkPhysicalDeviceFloatControlsProperties                 floatControlsProperties[count];
+       VkPhysicalDeviceDescriptorIndexingProperties    descriptorIndexingProperties[count];
+       VkPhysicalDeviceSamplerFilterMinmaxProperties   samplerFilterMinmaxProperties[count];
 
        for (int ndx = 0; ndx < count; ++ndx)
        {
-               deMemset(&IDProperties[ndx],                                    0xFF*ndx, sizeof(VkPhysicalDeviceIDProperties                           ));
-               deMemset(&maintenance3Properties[ndx],                  0xFF*ndx, sizeof(VkPhysicalDeviceMaintenance3Properties         ));
-               deMemset(&multiviewProperties[ndx],                             0xFF*ndx, sizeof(VkPhysicalDeviceMultiviewProperties            ));
-               deMemset(&pointClippingProperties[ndx],                 0xFF*ndx, sizeof(VkPhysicalDevicePointClippingProperties        ));
-               deMemset(&protectedMemoryPropertiesKHR[ndx],    0xFF*ndx, sizeof(VkPhysicalDeviceProtectedMemoryProperties      ));
-               deMemset(&subgroupProperties[ndx],                              0xFF*ndx, sizeof(VkPhysicalDeviceSubgroupProperties                     ));
+               deMemset(&idProperties[ndx],                                    0xFF*ndx, sizeof(VkPhysicalDeviceIDProperties                                   ));
+               deMemset(&multiviewProperties[ndx],                             0xFF*ndx, sizeof(VkPhysicalDeviceMultiviewProperties                    ));
+               deMemset(&protectedMemoryPropertiesKHR[ndx],    0xFF*ndx, sizeof(VkPhysicalDeviceProtectedMemoryProperties              ));
+               deMemset(&subgroupProperties[ndx],                              0xFF*ndx, sizeof(VkPhysicalDeviceSubgroupProperties                             ));
+               deMemset(&pointClippingProperties[ndx],                 0xFF*ndx, sizeof(VkPhysicalDevicePointClippingProperties                ));
+               deMemset(&maintenance3Properties[ndx],                  0xFF*ndx, sizeof(VkPhysicalDeviceMaintenance3Properties                 ));
+               deMemset(&depthStencilResolveProperties[ndx],   0xFF*ndx, sizeof(VkPhysicalDeviceDepthStencilResolveProperties  ));
+               deMemset(&driverProperties[ndx],                                0xFF*ndx, sizeof(VkPhysicalDeviceDriverProperties                               ));
+               deMemset(&floatControlsProperties[ndx],                 0xFF*ndx, sizeof(VkPhysicalDeviceFloatControlsProperties                ));
+               deMemset(&descriptorIndexingProperties[ndx],    0xFF*ndx, sizeof(VkPhysicalDeviceDescriptorIndexingProperties   ));
+               deMemset(&samplerFilterMinmaxProperties[ndx],   0xFF*ndx, sizeof(VkPhysicalDeviceSamplerFilterMinmaxProperties  ));
 
-               IDProperties[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES;
-               IDProperties[ndx].pNext = &maintenance3Properties[ndx];
+               idProperties[ndx].sType                                         = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES;
+               idProperties[ndx].pNext                                         = &multiviewProperties[ndx];
 
-               maintenance3Properties[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES;
-               maintenance3Properties[ndx].pNext = &multiviewProperties[ndx];
+               multiviewProperties[ndx].sType                          = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES;
+               multiviewProperties[ndx].pNext                          = &protectedMemoryPropertiesKHR[ndx];
 
-               multiviewProperties[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES;
-               multiviewProperties[ndx].pNext = &pointClippingProperties[ndx];
+               protectedMemoryPropertiesKHR[ndx].sType         = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES;
+               protectedMemoryPropertiesKHR[ndx].pNext         = &subgroupProperties[ndx];
 
-               pointClippingProperties[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES;
-               pointClippingProperties[ndx].pNext = &protectedMemoryPropertiesKHR[ndx];
+               subgroupProperties[ndx].sType                           = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES;
+               subgroupProperties[ndx].pNext                           = &pointClippingProperties[ndx];
 
-               protectedMemoryPropertiesKHR[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES;
-               protectedMemoryPropertiesKHR[ndx].pNext = &subgroupProperties[ndx];
+               pointClippingProperties[ndx].sType                      = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES;
+               pointClippingProperties[ndx].pNext                      = &maintenance3Properties[ndx];
 
-               subgroupProperties[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES;
-               subgroupProperties[ndx].pNext = DE_NULL;
+               maintenance3Properties[ndx].sType                       = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES;
+               maintenance3Properties[ndx].pNext                       = &depthStencilResolveProperties[ndx];
 
-               extProperties.pNext = &IDProperties[ndx];
+               depthStencilResolveProperties[ndx].sType        = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES;
+               depthStencilResolveProperties[ndx].pNext        = &driverProperties[ndx];
 
-               vki.getPhysicalDeviceProperties2(physicalDevice, &extProperties);
+               driverProperties[ndx].sType                                     = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES;
+               driverProperties[ndx].pNext                                     = &floatControlsProperties[ndx];
+
+               floatControlsProperties[ndx].sType                      = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR;
+               floatControlsProperties[ndx].pNext                      = &descriptorIndexingProperties[ndx];
+
+               descriptorIndexingProperties[ndx].sType         = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES;
+               descriptorIndexingProperties[ndx].pNext         = &samplerFilterMinmaxProperties[ndx];
+
+               samplerFilterMinmaxProperties[ndx].sType        = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES;
+               samplerFilterMinmaxProperties[ndx].pNext        = DE_NULL;
 
-               IDProperties[ndx].pNext                                         = DE_NULL;
-               maintenance3Properties[ndx].pNext                       = DE_NULL;
-               multiviewProperties[ndx].pNext                          = DE_NULL;
-               pointClippingProperties[ndx].pNext                      = DE_NULL;
-               protectedMemoryPropertiesKHR[ndx].pNext         = DE_NULL;
-               subgroupProperties[ndx].pNext                           = DE_NULL;
+               extProperties.pNext                                                     = &idProperties[ndx];
+
+               vki.getPhysicalDeviceProperties2(physicalDevice, &extProperties);
        }
 
-       if (khr_external_memory_capabilities)
-       {
-               if ((deMemCmp(IDProperties[0].deviceUUID, IDProperties[1].deviceUUID, VK_UUID_SIZE) != 0) ||
-                       (deMemCmp(IDProperties[0].driverUUID, IDProperties[1].driverUUID, VK_UUID_SIZE) != 0) ||
-                       (IDProperties[0].deviceLUIDValid        != IDProperties[1].deviceLUIDValid))
+       if ( khr_external_fence_capabilities || khr_external_memory_capabilities || khr_external_semaphore_capabilities )
+               log << TestLog::Message << idProperties[0]                                      << TestLog::EndMessage;
+       if (khr_multiview)
+               log << TestLog::Message << multiviewProperties[0]                       << TestLog::EndMessage;
+       if (khr_device_protected_memory)
+               log << TestLog::Message << protectedMemoryPropertiesKHR[0]      << TestLog::EndMessage;
+       if (khr_device_subgroup)
+               log << TestLog::Message << subgroupProperties[0]                        << TestLog::EndMessage;
+       if (khr_maintenance2)
+               log << TestLog::Message << pointClippingProperties[0]           << TestLog::EndMessage;
+       if (khr_maintenance3)
+               log << TestLog::Message << maintenance3Properties[0]            << TestLog::EndMessage;
+       if (khr_depth_stencil_resolve)
+               log << TestLog::Message << depthStencilResolveProperties[0] << TestLog::EndMessage;
+       if (khr_driver_properties)
+               log << TestLog::Message << driverProperties[0]                          << TestLog::EndMessage;
+       if (khr_shader_float_controls)
+               log << TestLog::Message << floatControlsProperties[0]           << TestLog::EndMessage;
+       if (khr_descriptor_indexing)
+               log << TestLog::Message << descriptorIndexingProperties[0] << TestLog::EndMessage;
+       if (khr_sampler_filter_minmax)
+               log << TestLog::Message << samplerFilterMinmaxProperties[0] << TestLog::EndMessage;
+
+       if ( khr_external_fence_capabilities || khr_external_memory_capabilities || khr_external_semaphore_capabilities )
+       {
+               if ((deMemCmp(idProperties[0].deviceUUID, idProperties[1].deviceUUID, VK_UUID_SIZE) != 0) ||
+                       (deMemCmp(idProperties[0].driverUUID, idProperties[1].driverUUID, VK_UUID_SIZE) != 0) ||
+                       (idProperties[0].deviceLUIDValid        != idProperties[1].deviceLUIDValid))
                {
                        TCU_FAIL("Mismatch between VkPhysicalDeviceIDProperties");
                }
-               else if (IDProperties[0].deviceLUIDValid)
+               else if (idProperties[0].deviceLUIDValid)
                {
                        // If deviceLUIDValid is VK_FALSE, the contents of deviceLUID and deviceNodeMask are undefined
                        // so thay can only be compared when deviceLUIDValid is VK_TRUE.
-                       if ((deMemCmp(IDProperties[0].deviceLUID, IDProperties[1].deviceLUID, VK_UUID_SIZE) != 0) ||
-                               (IDProperties[0].deviceNodeMask         != IDProperties[1].deviceNodeMask))
+                       if ((deMemCmp(idProperties[0].deviceLUID, idProperties[1].deviceLUID, VK_UUID_SIZE) != 0) ||
+                               (idProperties[0].deviceNodeMask         != idProperties[1].deviceNodeMask))
                        {
                                TCU_FAIL("Mismatch between VkPhysicalDeviceIDProperties");
                        }
                }
        }
-       if (khr_maintenance3 &&
-               ((maintenance3Properties[0].maxPerSetDescriptors        != maintenance3Properties[1].maxPerSetDescriptors) ||
-               (maintenance3Properties[0].maxMemoryAllocationSize      != maintenance3Properties[1].maxMemoryAllocationSize))
-               )
-       {
-               TCU_FAIL("Mismatch between VkPhysicalDeviceMaintenance3Properties");
-       }
        if (khr_multiview &&
-               ((multiviewProperties[0].maxMultiviewViewCount          != multiviewProperties[1].maxMultiviewViewCount) ||
-               (multiviewProperties[0].maxMultiviewInstanceIndex       != multiviewProperties[1].maxMultiviewInstanceIndex))
-               )
+               (multiviewProperties[0].maxMultiviewViewCount           != multiviewProperties[1].maxMultiviewViewCount ||
+                multiviewProperties[0].maxMultiviewInstanceIndex       != multiviewProperties[1].maxMultiviewInstanceIndex))
        {
                TCU_FAIL("Mismatch between VkPhysicalDeviceMultiviewProperties");
        }
+       if (khr_device_protected_memory &&
+               (protectedMemoryPropertiesKHR[0].protectedNoFault       != protectedMemoryPropertiesKHR[1].protectedNoFault))
+       {
+               TCU_FAIL("Mismatch between VkPhysicalDeviceProtectedMemoryProperties");
+       }
+       if (khr_device_subgroup &&
+               (subgroupProperties[0].subgroupSize                                     != subgroupProperties[1].subgroupSize ||
+                subgroupProperties[0].supportedStages                          != subgroupProperties[1].supportedStages ||
+                subgroupProperties[0].supportedOperations                      != subgroupProperties[1].supportedOperations ||
+                subgroupProperties[0].quadOperationsInAllStages        != subgroupProperties[1].quadOperationsInAllStages ))
+       {
+               TCU_FAIL("Mismatch between VkPhysicalDeviceSubgroupProperties");
+       }
        if (khr_maintenance2 &&
-               (pointClippingProperties[0].pointClippingBehavior != pointClippingProperties[1].pointClippingBehavior))
+               (pointClippingProperties[0].pointClippingBehavior       != pointClippingProperties[1].pointClippingBehavior))
        {
                TCU_FAIL("Mismatch between VkPhysicalDevicePointClippingProperties");
        }
-       if (!apiVersionSmallerThen_1_1)
+       if (khr_maintenance3 &&
+               (maintenance3Properties[0].maxPerSetDescriptors         != maintenance3Properties[1].maxPerSetDescriptors ||
+                maintenance3Properties[0].maxMemoryAllocationSize      != maintenance3Properties[1].maxMemoryAllocationSize))
        {
-               if(protectedMemoryPropertiesKHR[0].protectedNoFault != protectedMemoryPropertiesKHR[1].protectedNoFault)
-               {
-                       TCU_FAIL("Mismatch between VkPhysicalDeviceProtectedMemoryProperties");
-               }
-               if ((subgroupProperties[0].subgroupSize                                 != subgroupProperties[1].subgroupSize) ||
-                       (subgroupProperties[0].supportedStages                          != subgroupProperties[1].supportedStages) ||
-                       (subgroupProperties[0].supportedOperations                      != subgroupProperties[1].supportedOperations) ||
-                       (subgroupProperties[0].quadOperationsInAllStages        != subgroupProperties[1].quadOperationsInAllStages))
-               {
-                       TCU_FAIL("Mismatch between VkPhysicalDeviceSubgroupProperties");
-               }
+               TCU_FAIL("Mismatch between VkPhysicalDeviceMaintenance3Properties");
        }
-
-       if (khr_external_memory_capabilities)
-               log << TestLog::Message << IDProperties[0]                                      << TestLog::EndMessage;
-       if (khr_maintenance3)
-               log << TestLog::Message << maintenance3Properties[0]                    << TestLog::EndMessage;
-       if (khr_multiview)
-               log << TestLog::Message << multiviewProperties[0]                               << TestLog::EndMessage;
-       if (khr_maintenance2)
-               log << TestLog::Message << pointClippingProperties[0]                   << TestLog::EndMessage;
-       if (!apiVersionSmallerThen_1_1)
+       if (khr_depth_stencil_resolve &&
+               (depthStencilResolveProperties[0].supportedDepthResolveModes    != depthStencilResolveProperties[1].supportedDepthResolveModes ||
+                depthStencilResolveProperties[0].supportedStencilResolveModes  != depthStencilResolveProperties[1].supportedStencilResolveModes ||
+                depthStencilResolveProperties[0].independentResolveNone                != depthStencilResolveProperties[1].independentResolveNone ||
+                depthStencilResolveProperties[0].independentResolve                    != depthStencilResolveProperties[1].independentResolve))
+       {
+               TCU_FAIL("Mismatch between VkPhysicalDeviceDepthStencilResolveProperties");
+       }
+       if (khr_driver_properties &&
+               (driverProperties[0].driverID                                                                                           != driverProperties[1].driverID ||
+                strncmp(driverProperties[0].driverName, driverProperties[1].driverName, VK_MAX_DRIVER_NAME_SIZE)       != 0 ||
+                strncmp(driverProperties[0].driverInfo, driverProperties[1].driverInfo, VK_MAX_DRIVER_INFO_SIZE)               != 0 ||
+                driverProperties[0].conformanceVersion.major                                                           != driverProperties[1].conformanceVersion.major ||
+                driverProperties[0].conformanceVersion.minor                                                           != driverProperties[1].conformanceVersion.minor ||
+                driverProperties[0].conformanceVersion.subminor                                                        != driverProperties[1].conformanceVersion.subminor ||
+                driverProperties[0].conformanceVersion.patch                                                           != driverProperties[1].conformanceVersion.patch))
+       {
+               TCU_FAIL("Mismatch between VkPhysicalDeviceDriverProperties");
+       }
+       if (khr_shader_float_controls &&
+               (floatControlsProperties[0].denormBehaviorIndependence                          != floatControlsProperties[1].denormBehaviorIndependence ||
+                floatControlsProperties[0].roundingModeIndependence                            != floatControlsProperties[1].roundingModeIndependence ||
+                floatControlsProperties[0].shaderSignedZeroInfNanPreserveFloat16       != floatControlsProperties[1].shaderSignedZeroInfNanPreserveFloat16 ||
+                floatControlsProperties[0].shaderSignedZeroInfNanPreserveFloat32       != floatControlsProperties[1].shaderSignedZeroInfNanPreserveFloat32 ||
+                floatControlsProperties[0].shaderSignedZeroInfNanPreserveFloat64       != floatControlsProperties[1].shaderSignedZeroInfNanPreserveFloat64 ||
+                floatControlsProperties[0].shaderDenormPreserveFloat16                         != floatControlsProperties[1].shaderDenormPreserveFloat16 ||
+                floatControlsProperties[0].shaderDenormPreserveFloat32                         != floatControlsProperties[1].shaderDenormPreserveFloat32 ||
+                floatControlsProperties[0].shaderDenormPreserveFloat64                         != floatControlsProperties[1].shaderDenormPreserveFloat64 ||
+                floatControlsProperties[0].shaderDenormFlushToZeroFloat16                      != floatControlsProperties[1].shaderDenormFlushToZeroFloat16 ||
+                floatControlsProperties[0].shaderDenormFlushToZeroFloat32                      != floatControlsProperties[1].shaderDenormFlushToZeroFloat32 ||
+                floatControlsProperties[0].shaderDenormFlushToZeroFloat64                      != floatControlsProperties[1].shaderDenormFlushToZeroFloat64 ||
+                floatControlsProperties[0].shaderRoundingModeRTEFloat16                        != floatControlsProperties[1].shaderRoundingModeRTEFloat16 ||
+                floatControlsProperties[0].shaderRoundingModeRTEFloat32                        != floatControlsProperties[1].shaderRoundingModeRTEFloat32 ||
+                floatControlsProperties[0].shaderRoundingModeRTEFloat64                        != floatControlsProperties[1].shaderRoundingModeRTEFloat64 ||
+                floatControlsProperties[0].shaderRoundingModeRTZFloat16                        != floatControlsProperties[1].shaderRoundingModeRTZFloat16 ||
+                floatControlsProperties[0].shaderRoundingModeRTZFloat32                        != floatControlsProperties[1].shaderRoundingModeRTZFloat32 ||
+                floatControlsProperties[0].shaderRoundingModeRTZFloat64                        != floatControlsProperties[1].shaderRoundingModeRTZFloat64 ))
+       {
+               TCU_FAIL("Mismatch between VkPhysicalDeviceFloatControlsProperties");
+       }
+       if (khr_descriptor_indexing &&
+               (descriptorIndexingProperties[0].maxUpdateAfterBindDescriptorsInAllPools                                != descriptorIndexingProperties[1].maxUpdateAfterBindDescriptorsInAllPools ||
+                descriptorIndexingProperties[0].shaderUniformBufferArrayNonUniformIndexingNative               != descriptorIndexingProperties[1].shaderUniformBufferArrayNonUniformIndexingNative ||
+                descriptorIndexingProperties[0].shaderSampledImageArrayNonUniformIndexingNative                != descriptorIndexingProperties[1].shaderSampledImageArrayNonUniformIndexingNative ||
+                descriptorIndexingProperties[0].shaderStorageBufferArrayNonUniformIndexingNative               != descriptorIndexingProperties[1].shaderStorageBufferArrayNonUniformIndexingNative ||
+                descriptorIndexingProperties[0].shaderStorageImageArrayNonUniformIndexingNative                != descriptorIndexingProperties[1].shaderStorageImageArrayNonUniformIndexingNative ||
+                descriptorIndexingProperties[0].shaderInputAttachmentArrayNonUniformIndexingNative             != descriptorIndexingProperties[1].shaderInputAttachmentArrayNonUniformIndexingNative ||
+                descriptorIndexingProperties[0].robustBufferAccessUpdateAfterBind                                              != descriptorIndexingProperties[1].robustBufferAccessUpdateAfterBind ||
+                descriptorIndexingProperties[0].quadDivergentImplicitLod                                                               != descriptorIndexingProperties[1].quadDivergentImplicitLod ||
+                descriptorIndexingProperties[0].maxPerStageDescriptorUpdateAfterBindSamplers                   != descriptorIndexingProperties[1].maxPerStageDescriptorUpdateAfterBindSamplers ||
+                descriptorIndexingProperties[0].maxPerStageDescriptorUpdateAfterBindUniformBuffers             != descriptorIndexingProperties[1].maxPerStageDescriptorUpdateAfterBindUniformBuffers ||
+                descriptorIndexingProperties[0].maxPerStageDescriptorUpdateAfterBindStorageBuffers             != descriptorIndexingProperties[1].maxPerStageDescriptorUpdateAfterBindStorageBuffers ||
+                descriptorIndexingProperties[0].maxPerStageDescriptorUpdateAfterBindSampledImages              != descriptorIndexingProperties[1].maxPerStageDescriptorUpdateAfterBindSampledImages ||
+                descriptorIndexingProperties[0].maxPerStageDescriptorUpdateAfterBindStorageImages              != descriptorIndexingProperties[1].maxPerStageDescriptorUpdateAfterBindStorageImages ||
+                descriptorIndexingProperties[0].maxPerStageDescriptorUpdateAfterBindInputAttachments   != descriptorIndexingProperties[1].maxPerStageDescriptorUpdateAfterBindInputAttachments ||
+                descriptorIndexingProperties[0].maxPerStageUpdateAfterBindResources                                    != descriptorIndexingProperties[1].maxPerStageUpdateAfterBindResources ||
+                descriptorIndexingProperties[0].maxDescriptorSetUpdateAfterBindSamplers                                != descriptorIndexingProperties[1].maxDescriptorSetUpdateAfterBindSamplers ||
+                descriptorIndexingProperties[0].maxDescriptorSetUpdateAfterBindUniformBuffers                  != descriptorIndexingProperties[1].maxDescriptorSetUpdateAfterBindUniformBuffers ||
+                descriptorIndexingProperties[0].maxDescriptorSetUpdateAfterBindUniformBuffersDynamic   != descriptorIndexingProperties[1].maxDescriptorSetUpdateAfterBindUniformBuffersDynamic ||
+                descriptorIndexingProperties[0].maxDescriptorSetUpdateAfterBindStorageBuffers                  != descriptorIndexingProperties[1].maxDescriptorSetUpdateAfterBindStorageBuffers ||
+                descriptorIndexingProperties[0].maxDescriptorSetUpdateAfterBindStorageBuffersDynamic   != descriptorIndexingProperties[1].maxDescriptorSetUpdateAfterBindStorageBuffersDynamic ||
+                descriptorIndexingProperties[0].maxDescriptorSetUpdateAfterBindSampledImages                   != descriptorIndexingProperties[1].maxDescriptorSetUpdateAfterBindSampledImages ||
+                descriptorIndexingProperties[0].maxDescriptorSetUpdateAfterBindStorageImages                   != descriptorIndexingProperties[1].maxDescriptorSetUpdateAfterBindStorageImages ||
+                descriptorIndexingProperties[0].maxDescriptorSetUpdateAfterBindInputAttachments                != descriptorIndexingProperties[1].maxDescriptorSetUpdateAfterBindInputAttachments ))
+       {
+               TCU_FAIL("Mismatch between VkPhysicalDeviceDescriptorIndexingProperties");
+       }
+       if (khr_sampler_filter_minmax &&
+               (samplerFilterMinmaxProperties[0].filterMinmaxSingleComponentFormats    != samplerFilterMinmaxProperties[1].filterMinmaxSingleComponentFormats ||
+                samplerFilterMinmaxProperties[0].filterMinmaxImageComponentMapping             != samplerFilterMinmaxProperties[1].filterMinmaxImageComponentMapping))
        {
-               log << TestLog::Message << protectedMemoryPropertiesKHR[0]      << TestLog::EndMessage
-                       << TestLog::Message << subgroupProperties[0]                            << TestLog::EndMessage;
+               TCU_FAIL("Mismatch between VkPhysicalDeviceSamplerFilterMinmaxProperties");
        }
 
-       const vector<VkExtensionProperties>     extensions = enumerateDeviceExtensionProperties(vki, physicalDevice, DE_NULL);
-
-       if (isExtensionSupported(extensions, RequiredExtension("VK_KHR_push_descriptor")))
+       if (isExtensionSupported(properties, RequiredExtension("VK_KHR_push_descriptor")))
        {
                VkPhysicalDevicePushDescriptorPropertiesKHR             pushDescriptorProperties[count];
 
                for (int ndx = 0; ndx < count; ++ndx)
                {
-                       deMemset(&pushDescriptorProperties[ndx], 0, sizeof(VkPhysicalDevicePushDescriptorPropertiesKHR));
+                       deMemset(&pushDescriptorProperties[ndx], 0xFF * ndx, sizeof(VkPhysicalDevicePushDescriptorPropertiesKHR));
 
                        pushDescriptorProperties[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR;
                        pushDescriptorProperties[ndx].pNext     = DE_NULL;
@@ -3046,65 +4513,42 @@ tcu::TestStatus deviceProperties2 (Context& context)
                        pushDescriptorProperties[ndx].pNext = DE_NULL;
                }
 
-               if (deMemCmp(&pushDescriptorProperties[0], &pushDescriptorProperties[1], sizeof(VkPhysicalDevicePushDescriptorPropertiesKHR)) != 0)
-               {
-                       TCU_FAIL("Mismatch in vkGetPhysicalDeviceProperties2 in VkPhysicalDevicePushDescriptorPropertiesKHR ");
-               }
-
                log << TestLog::Message << pushDescriptorProperties[0] << TestLog::EndMessage;
 
-               if (pushDescriptorProperties[0].maxPushDescriptors < 32)
-               {
-                       TCU_FAIL("VkPhysicalDevicePushDescriptorPropertiesKHR.maxPushDescriptors must be at least 32");
-               }
-       }
-       if (isExtensionSupported(extensions, RequiredExtension("VK_KHR_shader_float_controls")))
-       {
-               VkPhysicalDeviceFloatControlsPropertiesKHR floatControlsProperties[count];
-
-               for (int ndx = 0; ndx < count; ++ndx)
+               if ( pushDescriptorProperties[0].maxPushDescriptors != pushDescriptorProperties[1].maxPushDescriptors )
                {
-                       deMemset(&floatControlsProperties[ndx], 0xFF, sizeof(VkPhysicalDeviceFloatControlsPropertiesKHR));
-                       floatControlsProperties[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR;
-                       floatControlsProperties[ndx].pNext = DE_NULL;
-
-                       extProperties.pNext = &floatControlsProperties[ndx];
-
-                       vki.getPhysicalDeviceProperties2(physicalDevice, &extProperties);
+                       TCU_FAIL("Mismatch between VkPhysicalDevicePushDescriptorPropertiesKHR ");
                }
-
-               if (deMemCmp(&floatControlsProperties[0], &floatControlsProperties[1], sizeof(VkPhysicalDeviceFloatControlsPropertiesKHR)) != 0)
+               if (pushDescriptorProperties[0].maxPushDescriptors < 32)
                {
-                       TCU_FAIL("Mismatch in VkPhysicalDeviceFloatControlsPropertiesKHR");
+                       TCU_FAIL("VkPhysicalDevicePushDescriptorPropertiesKHR.maxPushDescriptors must be at least 32");
                }
-
-               log << TestLog::Message << floatControlsProperties[0] << TestLog::EndMessage;
        }
 
-       if (isExtensionSupported(extensions, RequiredExtension("VK_KHR_depth_stencil_resolve")))
+       if (isExtensionSupported(properties, RequiredExtension("VK_KHR_performance_query")))
        {
-               VkPhysicalDeviceDepthStencilResolvePropertiesKHR  dsResolveProperties[count];
+               VkPhysicalDevicePerformanceQueryPropertiesKHR performanceQueryProperties[count];
 
                for (int ndx = 0; ndx < count; ++ndx)
                {
-                       deMemset(&dsResolveProperties[ndx], 0xFF, sizeof(VkPhysicalDeviceDepthStencilResolvePropertiesKHR));
-                       dsResolveProperties[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR;
-                       dsResolveProperties[ndx].pNext = DE_NULL;
+                       deMemset(&performanceQueryProperties[ndx], 0xFF * ndx, sizeof(VkPhysicalDevicePerformanceQueryPropertiesKHR));
+                       performanceQueryProperties[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR;
+                       performanceQueryProperties[ndx].pNext = DE_NULL;
 
-                       extProperties.pNext = &dsResolveProperties[ndx];
+                       extProperties.pNext = &performanceQueryProperties[ndx];
 
                        vki.getPhysicalDeviceProperties2(physicalDevice, &extProperties);
                }
 
-               if (deMemCmp(&dsResolveProperties[0], &dsResolveProperties[1], sizeof(VkPhysicalDeviceDepthStencilResolvePropertiesKHR)) != 0)
+               log << TestLog::Message << performanceQueryProperties[0] << TestLog::EndMessage;
+
+               if (performanceQueryProperties[0].allowCommandBufferQueryCopies != performanceQueryProperties[0].allowCommandBufferQueryCopies)
                {
-                       TCU_FAIL("Mismatch in VkPhysicalDeviceDepthStencilResolvePropertiesKHR");
+                       TCU_FAIL("Mismatch between VkPhysicalDevicePerformanceQueryPropertiesKHR");
                }
-
-               log << TestLog::Message << dsResolveProperties[0] << TestLog::EndMessage;
        }
 
-       if (isExtensionSupported(extensions, RequiredExtension("VK_EXT_pci_bus_info", 2, 2)))
+       if (isExtensionSupported(properties, RequiredExtension("VK_EXT_pci_bus_info", 2, 2)))
        {
                VkPhysicalDevicePCIBusInfoPropertiesEXT pciBusInfoProperties[count];
 
@@ -3123,7 +4567,7 @@ tcu::TestStatus deviceProperties2 (Context& context)
                        //
                        // [1] https://en.wikipedia.org/wiki/PCI_configuration_space
                        // [2] PCI Express Base Specification Revision 3.0, section 2.2.4.2.
-                       deMemset(pciBusInfoProperties + ndx, 0, sizeof(pciBusInfoProperties[ndx]));
+                       deMemset(pciBusInfoProperties + ndx, 0xFF * ndx, sizeof(pciBusInfoProperties[ndx]));
                        pciBusInfoProperties[ndx].pciDomain   = DEUINT32_MAX;
                        pciBusInfoProperties[ndx].pciBus      = DEUINT32_MAX;
                        pciBusInfoProperties[ndx].pciDevice   = DEUINT32_MAX;
@@ -3136,13 +4580,15 @@ tcu::TestStatus deviceProperties2 (Context& context)
                        vki.getPhysicalDeviceProperties2(physicalDevice, &extProperties);
                }
 
-               if (deMemCmp(pciBusInfoProperties + 0, pciBusInfoProperties + 1, sizeof(pciBusInfoProperties[0])) != 0)
-               {
-                       TCU_FAIL("Mismatch in VkPhysicalDevicePCIBusInfoPropertiesEXT");
-               }
-
                log << TestLog::Message << toString(pciBusInfoProperties[0]) << TestLog::EndMessage;
 
+               if (pciBusInfoProperties[0].pciDomain   != pciBusInfoProperties[1].pciDomain ||
+                       pciBusInfoProperties[0].pciBus          != pciBusInfoProperties[1].pciBus ||
+                       pciBusInfoProperties[0].pciDevice       != pciBusInfoProperties[1].pciDevice ||
+                       pciBusInfoProperties[0].pciFunction     != pciBusInfoProperties[1].pciFunction)
+               {
+                       TCU_FAIL("Mismatch between VkPhysicalDevicePCIBusInfoPropertiesEXT");
+               }
                if (pciBusInfoProperties[0].pciDomain   == DEUINT32_MAX ||
                    pciBusInfoProperties[0].pciBus      == DEUINT32_MAX ||
                    pciBusInfoProperties[0].pciDevice   == DEUINT32_MAX ||
@@ -3151,28 +4597,6 @@ tcu::TestStatus deviceProperties2 (Context& context)
                        TCU_FAIL("Invalid information in VkPhysicalDevicePCIBusInfoPropertiesEXT");
                }
        }
-       if (isExtensionSupported(extensions, RequiredExtension("VK_KHR_performance_query")))
-       {
-               VkPhysicalDevicePerformanceQueryPropertiesKHR performanceQueryProperties[count];
-
-               for (int ndx = 0; ndx < count; ++ndx)
-               {
-                       deMemset(&performanceQueryProperties[ndx], 0xFF * ndx, sizeof(VkPhysicalDevicePerformanceQueryPropertiesKHR));
-                       performanceQueryProperties[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR;
-                       performanceQueryProperties[ndx].pNext = DE_NULL;
-
-                       extProperties.pNext = &performanceQueryProperties[ndx];
-
-                       vki.getPhysicalDeviceProperties2(physicalDevice, &extProperties);
-               }
-
-               log << TestLog::Message << performanceQueryProperties[0] << TestLog::EndMessage;
-
-               if (performanceQueryProperties[0].allowCommandBufferQueryCopies != performanceQueryProperties[0].allowCommandBufferQueryCopies)
-               {
-                       TCU_FAIL("Mismatch between VkPhysicalDevicePerformanceQueryPropertiesKHR");
-               }
-       }
 
        return tcu::TestStatus::pass("Querying device properties succeeded");
 }
@@ -3305,6 +4729,722 @@ tcu::TestStatus deviceMemoryProperties2 (Context& context)
        return tcu::TestStatus::pass("Querying device memory properties succeeded");
 }
 
+tcu::TestStatus deviceFeaturesVulkan12 (Context& context)
+{
+       using namespace ValidateQueryBits;
+
+       const QueryMemberTableEntry                     feature11OffsetTable[] =
+       {
+               // VkPhysicalDevice16BitStorageFeatures
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan11Features, storageBuffer16BitAccess),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan11Features, uniformAndStorageBuffer16BitAccess),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan11Features, storagePushConstant16),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan11Features, storageInputOutput16),
+
+               // VkPhysicalDeviceMultiviewFeatures
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan11Features, multiview),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan11Features, multiviewGeometryShader),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan11Features, multiviewTessellationShader),
+
+               // VkPhysicalDeviceVariablePointersFeatures
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan11Features, variablePointersStorageBuffer),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan11Features, variablePointers),
+
+               // VkPhysicalDeviceProtectedMemoryFeatures
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan11Features, protectedMemory),
+
+               // VkPhysicalDeviceSamplerYcbcrConversionFeatures
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan11Features, samplerYcbcrConversion),
+
+               // VkPhysicalDeviceShaderDrawParametersFeatures
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan11Features, shaderDrawParameters),
+               { 0, 0 }
+       };
+       const QueryMemberTableEntry                     feature12OffsetTable[] =
+       {
+               // None
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, samplerMirrorClampToEdge),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, drawIndirectCount),
+
+               // VkPhysicalDevice8BitStorageFeatures
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, storageBuffer8BitAccess),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, uniformAndStorageBuffer8BitAccess),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, storagePushConstant8),
+
+               // VkPhysicalDeviceShaderAtomicInt64Features
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, shaderBufferInt64Atomics),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, shaderSharedInt64Atomics),
+
+               // VkPhysicalDeviceShaderFloat16Int8Features
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, shaderFloat16),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, shaderInt8),
+
+               // VkPhysicalDeviceDescriptorIndexingFeatures
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, descriptorIndexing),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, shaderInputAttachmentArrayDynamicIndexing),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, shaderUniformTexelBufferArrayDynamicIndexing),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, shaderStorageTexelBufferArrayDynamicIndexing),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, shaderUniformBufferArrayNonUniformIndexing),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, shaderSampledImageArrayNonUniformIndexing),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, shaderStorageBufferArrayNonUniformIndexing),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, shaderStorageImageArrayNonUniformIndexing),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, shaderInputAttachmentArrayNonUniformIndexing),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, shaderUniformTexelBufferArrayNonUniformIndexing),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, shaderStorageTexelBufferArrayNonUniformIndexing),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, descriptorBindingUniformBufferUpdateAfterBind),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, descriptorBindingSampledImageUpdateAfterBind),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, descriptorBindingStorageImageUpdateAfterBind),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, descriptorBindingStorageBufferUpdateAfterBind),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, descriptorBindingUniformTexelBufferUpdateAfterBind),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, descriptorBindingStorageTexelBufferUpdateAfterBind),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, descriptorBindingUpdateUnusedWhilePending),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, descriptorBindingPartiallyBound),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, descriptorBindingVariableDescriptorCount),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, runtimeDescriptorArray),
+
+               // None
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, samplerFilterMinmax),
+
+               // VkPhysicalDeviceScalarBlockLayoutFeatures
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, scalarBlockLayout),
+
+               // VkPhysicalDeviceImagelessFramebufferFeatures
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, imagelessFramebuffer),
+
+               // VkPhysicalDeviceUniformBufferStandardLayoutFeatures
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, uniformBufferStandardLayout),
+
+               // VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, shaderSubgroupExtendedTypes),
+
+               // VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, separateDepthStencilLayouts),
+
+               // VkPhysicalDeviceHostQueryResetFeatures
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, hostQueryReset),
+
+               // VkPhysicalDeviceTimelineSemaphoreFeatures
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, timelineSemaphore),
+
+               // VkPhysicalDeviceBufferDeviceAddressFeatures
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, bufferDeviceAddress),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, bufferDeviceAddressCaptureReplay),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, bufferDeviceAddressMultiDevice),
+
+               // VkPhysicalDeviceVulkanMemoryModelFeatures
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, vulkanMemoryModel),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, vulkanMemoryModelDeviceScope),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, vulkanMemoryModelAvailabilityVisibilityChains),
+
+               // None
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, shaderOutputViewportIndex),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, shaderOutputLayer),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Features, subgroupBroadcastDynamicId),
+               { 0, 0 }
+       };
+       TestLog&                                                                                        log                                                                             = context.getTestContext().getLog();
+       const VkPhysicalDevice                                                          physicalDevice                                                  = context.getPhysicalDevice();
+       const CustomInstance                                                            instance                                                                (createCustomInstanceWithExtension(context, "VK_KHR_get_physical_device_properties2"));
+       const InstanceDriver&                                                           vki                                                                             = instance.getDriver();
+       const deUint32                                                                          vulkan11FeaturesBufferSize                              = sizeof(VkPhysicalDeviceVulkan11Features) + GUARD_SIZE;
+       const deUint32                                                                          vulkan12FeaturesBufferSize                              = sizeof(VkPhysicalDeviceVulkan12Features) + GUARD_SIZE;
+       VkPhysicalDeviceFeatures2                                                       extFeatures;
+       deUint8                                                                                         buffer11a[vulkan11FeaturesBufferSize];
+       deUint8                                                                                         buffer11b[vulkan11FeaturesBufferSize];
+       deUint8                                                                                         buffer12a[vulkan12FeaturesBufferSize];
+       deUint8                                                                                         buffer12b[vulkan12FeaturesBufferSize];
+       const int                                                                                       count                                                                   = 2u;
+       VkPhysicalDeviceVulkan11Features*                                       vulkan11Features[count]                                 = { (VkPhysicalDeviceVulkan11Features*)(buffer11a), (VkPhysicalDeviceVulkan11Features*)(buffer11b)};
+       VkPhysicalDeviceVulkan12Features*                                       vulkan12Features[count]                                 = { (VkPhysicalDeviceVulkan12Features*)(buffer12a), (VkPhysicalDeviceVulkan12Features*)(buffer12b)};
+
+       if (!context.contextSupports(vk::ApiVersion(1, 2, 0)))
+               TCU_THROW(NotSupportedError, "At least Vulkan 1.2 required to run test");
+
+       deMemset(buffer11b, GUARD_VALUE, sizeof(buffer11b));
+       deMemset(buffer12a, GUARD_VALUE, sizeof(buffer12a));
+       deMemset(buffer12b, GUARD_VALUE, sizeof(buffer12b));
+       deMemset(buffer11a, GUARD_VALUE, sizeof(buffer11a));
+
+       // Validate all fields initialized
+       for (int ndx = 0; ndx < count; ++ndx)
+       {
+               deMemset(&extFeatures.features, 0x00, sizeof(extFeatures.features));
+               extFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2;
+               extFeatures.pNext = vulkan11Features[ndx];
+
+               deMemset(vulkan11Features[ndx], 0xFF * ndx, sizeof(VkPhysicalDeviceVulkan11Features));
+               vulkan11Features[ndx]->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES;
+               vulkan11Features[ndx]->pNext = vulkan12Features[ndx];
+
+               deMemset(vulkan12Features[ndx], 0xFF * ndx, sizeof(VkPhysicalDeviceVulkan12Features));
+               vulkan12Features[ndx]->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES;
+               vulkan12Features[ndx]->pNext = DE_NULL;
+
+               vki.getPhysicalDeviceFeatures2(physicalDevice, &extFeatures);
+       }
+
+       log << TestLog::Message << *vulkan11Features[0] << TestLog::EndMessage;
+       log << TestLog::Message << *vulkan12Features[0] << TestLog::EndMessage;
+
+       if (!validateStructsWithGuard(feature11OffsetTable, vulkan11Features, GUARD_VALUE, GUARD_SIZE))
+       {
+               log << TestLog::Message << "deviceFeatures - VkPhysicalDeviceVulkan11Features initialization failure" << TestLog::EndMessage;
+
+               return tcu::TestStatus::fail("VkPhysicalDeviceVulkan11Features initialization failure");
+       }
+
+       if (!validateStructsWithGuard(feature12OffsetTable, vulkan12Features, GUARD_VALUE, GUARD_SIZE))
+       {
+               log << TestLog::Message << "deviceFeatures - VkPhysicalDeviceVulkan12Features initialization failure" << TestLog::EndMessage;
+
+               return tcu::TestStatus::fail("VkPhysicalDeviceVulkan12Features initialization failure");
+       }
+
+       return tcu::TestStatus::pass("Querying Vulkan 1.2 device features succeeded");
+}
+
+tcu::TestStatus devicePropertiesVulkan12 (Context& context)
+{
+       using namespace ValidateQueryBits;
+
+       const QueryMemberTableEntry                     properties11OffsetTable[] =
+       {
+               // VkPhysicalDeviceIDProperties
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan11Properties, deviceUUID),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan11Properties, driverUUID),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan11Properties, deviceLUID),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan11Properties, deviceNodeMask),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan11Properties, deviceLUIDValid),
+
+               // VkPhysicalDeviceSubgroupProperties
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan11Properties, subgroupSize),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan11Properties, subgroupSupportedStages),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan11Properties, subgroupSupportedOperations),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan11Properties, subgroupQuadOperationsInAllStages),
+
+               // VkPhysicalDevicePointClippingProperties
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan11Properties, pointClippingBehavior),
+
+               // VkPhysicalDeviceMultiviewProperties
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan11Properties, maxMultiviewViewCount),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan11Properties, maxMultiviewInstanceIndex),
+
+               // VkPhysicalDeviceProtectedMemoryProperties
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan11Properties, protectedNoFault),
+
+               // VkPhysicalDeviceMaintenance3Properties
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan11Properties, maxPerSetDescriptors),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan11Properties, maxMemoryAllocationSize),
+               { 0, 0 }
+       };
+       const QueryMemberTableEntry                     properties12OffsetTable[] =
+       {
+               // VkPhysicalDeviceDriverProperties
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, driverID),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, conformanceVersion),
+
+               // VkPhysicalDeviceFloatControlsProperties
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, denormBehaviorIndependence),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, roundingModeIndependence),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, shaderSignedZeroInfNanPreserveFloat16),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, shaderSignedZeroInfNanPreserveFloat32),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, shaderSignedZeroInfNanPreserveFloat64),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, shaderDenormPreserveFloat16),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, shaderDenormPreserveFloat32),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, shaderDenormPreserveFloat64),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, shaderDenormFlushToZeroFloat16),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, shaderDenormFlushToZeroFloat32),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, shaderDenormFlushToZeroFloat64),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, shaderRoundingModeRTEFloat16),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, shaderRoundingModeRTEFloat32),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, shaderRoundingModeRTEFloat64),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, shaderRoundingModeRTZFloat16),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, shaderRoundingModeRTZFloat32),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, shaderRoundingModeRTZFloat64),
+
+               // VkPhysicalDeviceDescriptorIndexingProperties
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, maxUpdateAfterBindDescriptorsInAllPools),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, shaderUniformBufferArrayNonUniformIndexingNative),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, shaderSampledImageArrayNonUniformIndexingNative),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, shaderStorageBufferArrayNonUniformIndexingNative),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, shaderStorageImageArrayNonUniformIndexingNative),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, shaderInputAttachmentArrayNonUniformIndexingNative),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, robustBufferAccessUpdateAfterBind),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, quadDivergentImplicitLod),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, maxPerStageDescriptorUpdateAfterBindSamplers),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, maxPerStageDescriptorUpdateAfterBindUniformBuffers),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, maxPerStageDescriptorUpdateAfterBindStorageBuffers),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, maxPerStageDescriptorUpdateAfterBindSampledImages),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, maxPerStageDescriptorUpdateAfterBindStorageImages),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, maxPerStageDescriptorUpdateAfterBindInputAttachments),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, maxPerStageUpdateAfterBindResources),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, maxDescriptorSetUpdateAfterBindSamplers),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, maxDescriptorSetUpdateAfterBindUniformBuffers),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, maxDescriptorSetUpdateAfterBindUniformBuffersDynamic),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, maxDescriptorSetUpdateAfterBindStorageBuffers),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, maxDescriptorSetUpdateAfterBindStorageBuffersDynamic),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, maxDescriptorSetUpdateAfterBindSampledImages),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, maxDescriptorSetUpdateAfterBindStorageImages),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, maxDescriptorSetUpdateAfterBindInputAttachments),
+
+               // VkPhysicalDeviceDepthStencilResolveProperties
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, supportedDepthResolveModes),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, supportedStencilResolveModes),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, independentResolveNone),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, independentResolve),
+
+               // VkPhysicalDeviceSamplerFilterMinmaxProperties
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, filterMinmaxSingleComponentFormats),
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, filterMinmaxImageComponentMapping),
+
+               // VkPhysicalDeviceTimelineSemaphoreProperties
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, maxTimelineSemaphoreValueDifference),
+
+               // None
+               OFFSET_TABLE_ENTRY(VkPhysicalDeviceVulkan12Properties, framebufferIntegerColorSampleCounts),
+               { 0, 0 }
+       };
+       TestLog&                                                                                log                                                                                     = context.getTestContext().getLog();
+       const VkPhysicalDevice                                                  physicalDevice                                                          = context.getPhysicalDevice();
+       const CustomInstance                                                    instance                                                                        (createCustomInstanceWithExtension(context, "VK_KHR_get_physical_device_properties2"));
+       const InstanceDriver&                                                   vki                                                                                     = instance.getDriver();
+       const deUint32                                                                  vulkan11PropertiesBufferSize                            = sizeof(VkPhysicalDeviceVulkan11Properties) + GUARD_SIZE;
+       const deUint32                                                                  vulkan12PropertiesBufferSize                            = sizeof(VkPhysicalDeviceVulkan12Properties) + GUARD_SIZE;
+       VkPhysicalDeviceProperties2                                             extProperties;
+       deUint8                                                                                 buffer11a[vulkan11PropertiesBufferSize];
+       deUint8                                                                                 buffer11b[vulkan11PropertiesBufferSize];
+       deUint8                                                                                 buffer12a[vulkan12PropertiesBufferSize];
+       deUint8                                                                                 buffer12b[vulkan12PropertiesBufferSize];
+       const int                                                                               count                                                                           = 2u;
+       VkPhysicalDeviceVulkan11Properties*                             vulkan11Properties[count]                                       = { (VkPhysicalDeviceVulkan11Properties*)(buffer11a), (VkPhysicalDeviceVulkan11Properties*)(buffer11b)};
+       VkPhysicalDeviceVulkan12Properties*                             vulkan12Properties[count]                                       = { (VkPhysicalDeviceVulkan12Properties*)(buffer12a), (VkPhysicalDeviceVulkan12Properties*)(buffer12b)};
+
+       if (!context.contextSupports(vk::ApiVersion(1, 2, 0)))
+               TCU_THROW(NotSupportedError, "At least Vulkan 1.2 required to run test");
+
+       deMemset(buffer11a, GUARD_VALUE, sizeof(buffer11a));
+       deMemset(buffer11b, GUARD_VALUE, sizeof(buffer11b));
+       deMemset(buffer12a, GUARD_VALUE, sizeof(buffer12a));
+       deMemset(buffer12b, GUARD_VALUE, sizeof(buffer12b));
+
+       for (int ndx = 0; ndx < count; ++ndx)
+       {
+               deMemset(&extProperties.properties, 0x00, sizeof(extProperties.properties));
+               extProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2;
+               extProperties.pNext = vulkan11Properties[ndx];
+
+               deMemset(vulkan11Properties[ndx], 0xFF * ndx, sizeof(VkPhysicalDeviceVulkan11Properties));
+               vulkan11Properties[ndx]->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES;
+               vulkan11Properties[ndx]->pNext = vulkan12Properties[ndx];
+
+               deMemset(vulkan12Properties[ndx], 0xFF * ndx, sizeof(VkPhysicalDeviceVulkan12Properties));
+               vulkan12Properties[ndx]->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES;
+               vulkan12Properties[ndx]->pNext = DE_NULL;
+
+               vki.getPhysicalDeviceProperties2(physicalDevice, &extProperties);
+       }
+
+       log << TestLog::Message << *vulkan11Properties[0] << TestLog::EndMessage;
+       log << TestLog::Message << *vulkan12Properties[0] << TestLog::EndMessage;
+
+       if (!validateStructsWithGuard(properties11OffsetTable, vulkan11Properties, GUARD_VALUE, GUARD_SIZE))
+       {
+               log << TestLog::Message << "deviceProperties - VkPhysicalDeviceVulkan11Properties initialization failure" << TestLog::EndMessage;
+
+               return tcu::TestStatus::fail("VkPhysicalDeviceVulkan11Properties initialization failure");
+       }
+
+       if (!validateStructsWithGuard(properties12OffsetTable, vulkan12Properties, GUARD_VALUE, GUARD_SIZE) ||
+               strncmp(vulkan12Properties[0]->driverName, vulkan12Properties[1]->driverName, VK_MAX_DRIVER_NAME_SIZE) != 0 ||
+               strncmp(vulkan12Properties[0]->driverInfo, vulkan12Properties[1]->driverInfo, VK_MAX_DRIVER_INFO_SIZE) != 0 )
+       {
+               log << TestLog::Message << "deviceProperties - VkPhysicalDeviceVulkan12Properties initialization failure" << TestLog::EndMessage;
+
+               return tcu::TestStatus::fail("VkPhysicalDeviceVulkan12Properties initialization failure");
+       }
+
+       return tcu::TestStatus::pass("Querying Vulkan 1.2 device properties succeeded");
+}
+
+tcu::TestStatus deviceFeatureExtensionsConsistencyVulkan12(Context& context)
+{
+       TestLog&                                                                                        log                                                                             = context.getTestContext().getLog();
+       const VkPhysicalDevice                                                          physicalDevice                                                  = context.getPhysicalDevice();
+       const CustomInstance                                                            instance                                                                (createCustomInstanceWithExtension(context, "VK_KHR_get_physical_device_properties2"));
+       const InstanceDriver&                                                           vki                                                                             = instance.getDriver();
+
+       if (!context.contextSupports(vk::ApiVersion(1, 2, 0)))
+               TCU_THROW(NotSupportedError, "At least Vulkan 1.2 required to run test");
+
+       VkPhysicalDeviceVulkan12Features                                        vulkan12Features                                                = initVulkanStructure();
+       VkPhysicalDeviceVulkan11Features                                        vulkan11Features                                                = initVulkanStructure(&vulkan12Features);
+       VkPhysicalDeviceFeatures2                                                       extFeatures                                                             = initVulkanStructure(&vulkan11Features);
+
+       vki.getPhysicalDeviceFeatures2(physicalDevice, &extFeatures);
+
+       log << TestLog::Message << vulkan11Features << TestLog::EndMessage;
+       log << TestLog::Message << vulkan12Features << TestLog::EndMessage;
+
+       // Validate if proper VkPhysicalDeviceVulkanXXFeatures fields are set when corresponding extensions are present
+       std::pair<std::pair<const char*,const char*>, VkBool32> extensions2validate[] =
+       {
+               { { "VK_KHR_sampler_mirror_clamp_to_edge",      "VkPhysicalDeviceVulkan12Features.samplerMirrorClampToEdge" },  vulkan12Features.samplerMirrorClampToEdge },
+               { { "VK_KHR_draw_indirect_count",                       "VkPhysicalDeviceVulkan12Features.drawIndirectCount" },                 vulkan12Features.drawIndirectCount },
+               { { "VK_EXT_descriptor_indexing",                       "VkPhysicalDeviceVulkan12Features.descriptorIndexing" },                vulkan12Features.descriptorIndexing },
+               { { "VK_EXT_sampler_filter_minmax",                     "VkPhysicalDeviceVulkan12Features.samplerFilterMinmax" },               vulkan12Features.samplerFilterMinmax },
+               { { "VK_EXT_shader_viewport_index_layer",       "VkPhysicalDeviceVulkan12Features.shaderOutputViewportIndex" }, vulkan12Features.shaderOutputViewportIndex },
+               { { "VK_EXT_shader_viewport_index_layer",       "VkPhysicalDeviceVulkan12Features.shaderOutputLayer" },                 vulkan12Features.shaderOutputLayer }
+       };
+       vector<VkExtensionProperties> extensionProperties = enumerateDeviceExtensionProperties(vki, physicalDevice, DE_NULL);
+       for (const auto& ext : extensions2validate)
+               if (checkExtension(extensionProperties, ext.first.first) && !ext.second)
+                       TCU_FAIL(string("Mismatch between extension ") + ext.first.first + " and " + ext.first.second);
+
+       // collect all extension features
+       {
+               VkPhysicalDevice16BitStorageFeatures                            device16BitStorageFeatures                              = initVulkanStructure();
+               VkPhysicalDeviceMultiviewFeatures                                       deviceMultiviewFeatures                                 = initVulkanStructure(&device16BitStorageFeatures);
+               VkPhysicalDeviceProtectedMemoryFeatures                         protectedMemoryFeatures                                 = initVulkanStructure(&deviceMultiviewFeatures);
+               VkPhysicalDeviceSamplerYcbcrConversionFeatures          samplerYcbcrConversionFeatures                  = initVulkanStructure(&protectedMemoryFeatures);
+               VkPhysicalDeviceShaderDrawParametersFeatures            shaderDrawParametersFeatures                    = initVulkanStructure(&samplerYcbcrConversionFeatures);
+               VkPhysicalDeviceVariablePointersFeatures                        variablePointerFeatures                                 = initVulkanStructure(&shaderDrawParametersFeatures);
+               VkPhysicalDevice8BitStorageFeatures                                     device8BitStorageFeatures                               = initVulkanStructure(&variablePointerFeatures);
+               VkPhysicalDeviceShaderAtomicInt64Features                       shaderAtomicInt64Features                               = initVulkanStructure(&device8BitStorageFeatures);
+               VkPhysicalDeviceShaderFloat16Int8Features                       shaderFloat16Int8Features                               = initVulkanStructure(&shaderAtomicInt64Features);
+               VkPhysicalDeviceDescriptorIndexingFeatures                      descriptorIndexingFeatures                              = initVulkanStructure(&shaderFloat16Int8Features);
+               VkPhysicalDeviceScalarBlockLayoutFeatures                       scalarBlockLayoutFeatures                               = initVulkanStructure(&descriptorIndexingFeatures);
+               VkPhysicalDeviceImagelessFramebufferFeatures            imagelessFramebufferFeatures                    = initVulkanStructure(&scalarBlockLayoutFeatures);
+               VkPhysicalDeviceUniformBufferStandardLayoutFeatures     uniformBufferStandardLayoutFeatures             = initVulkanStructure(&imagelessFramebufferFeatures);
+               VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures     shaderSubgroupExtendedTypesFeatures             = initVulkanStructure(&uniformBufferStandardLayoutFeatures);
+               VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures     separateDepthStencilLayoutsFeatures             = initVulkanStructure(&shaderSubgroupExtendedTypesFeatures);
+               VkPhysicalDeviceHostQueryResetFeatures                          hostQueryResetFeatures                                  = initVulkanStructure(&separateDepthStencilLayoutsFeatures);
+               VkPhysicalDeviceTimelineSemaphoreFeatures                       timelineSemaphoreFeatures                               = initVulkanStructure(&hostQueryResetFeatures);
+               VkPhysicalDeviceBufferDeviceAddressFeatures                     bufferDeviceAddressFeatures                             = initVulkanStructure(&timelineSemaphoreFeatures);
+               VkPhysicalDeviceVulkanMemoryModelFeatures                       vulkanMemoryModelFeatures                               = initVulkanStructure(&bufferDeviceAddressFeatures);
+               extFeatures = initVulkanStructure(&vulkanMemoryModelFeatures);
+
+               vki.getPhysicalDeviceFeatures2(physicalDevice, &extFeatures);
+
+               log << TestLog::Message << extFeatures << TestLog::EndMessage;
+               log << TestLog::Message << device16BitStorageFeatures << TestLog::EndMessage;
+               log << TestLog::Message << deviceMultiviewFeatures << TestLog::EndMessage;
+               log << TestLog::Message << protectedMemoryFeatures << TestLog::EndMessage;
+               log << TestLog::Message << samplerYcbcrConversionFeatures << TestLog::EndMessage;
+               log << TestLog::Message << shaderDrawParametersFeatures << TestLog::EndMessage;
+               log << TestLog::Message << variablePointerFeatures << TestLog::EndMessage;
+               log << TestLog::Message << device8BitStorageFeatures << TestLog::EndMessage;
+               log << TestLog::Message << shaderAtomicInt64Features << TestLog::EndMessage;
+               log << TestLog::Message << shaderFloat16Int8Features << TestLog::EndMessage;
+               log << TestLog::Message << descriptorIndexingFeatures << TestLog::EndMessage;
+               log << TestLog::Message << scalarBlockLayoutFeatures << TestLog::EndMessage;
+               log << TestLog::Message << imagelessFramebufferFeatures << TestLog::EndMessage;
+               log << TestLog::Message << uniformBufferStandardLayoutFeatures << TestLog::EndMessage;
+               log << TestLog::Message << shaderSubgroupExtendedTypesFeatures << TestLog::EndMessage;
+               log << TestLog::Message << separateDepthStencilLayoutsFeatures << TestLog::EndMessage;
+               log << TestLog::Message << hostQueryResetFeatures << TestLog::EndMessage;
+               log << TestLog::Message << timelineSemaphoreFeatures << TestLog::EndMessage;
+               log << TestLog::Message << bufferDeviceAddressFeatures << TestLog::EndMessage;
+               log << TestLog::Message << vulkanMemoryModelFeatures << TestLog::EndMessage;
+
+               if ((   device16BitStorageFeatures.storageBuffer16BitAccess                             != vulkan11Features.storageBuffer16BitAccess ||
+                               device16BitStorageFeatures.uniformAndStorageBuffer16BitAccess   != vulkan11Features.uniformAndStorageBuffer16BitAccess ||
+                               device16BitStorageFeatures.storagePushConstant16                                != vulkan11Features.storagePushConstant16 ||
+                               device16BitStorageFeatures.storageInputOutput16                                 != vulkan11Features.storageInputOutput16 ))
+               {
+                       TCU_FAIL("Mismatch between VkPhysicalDevice16BitStorageFeatures and VkPhysicalDeviceVulkan11Features");
+               }
+
+               if ((   deviceMultiviewFeatures.multiview                                       != vulkan11Features.multiview ||
+                               deviceMultiviewFeatures.multiviewGeometryShader         != vulkan11Features.multiviewGeometryShader ||
+                               deviceMultiviewFeatures.multiviewTessellationShader     != vulkan11Features.multiviewTessellationShader ))
+               {
+                       TCU_FAIL("Mismatch between VkPhysicalDeviceMultiviewFeatures and VkPhysicalDeviceVulkan11Features");
+               }
+
+               if (    (protectedMemoryFeatures.protectedMemory        != vulkan11Features.protectedMemory ))
+               {
+                       TCU_FAIL("Mismatch between VkPhysicalDeviceProtectedMemoryFeatures and VkPhysicalDeviceVulkan11Features");
+               }
+
+               if (    (samplerYcbcrConversionFeatures.samplerYcbcrConversion  != vulkan11Features.samplerYcbcrConversion ))
+               {
+                       TCU_FAIL("Mismatch between VkPhysicalDeviceSamplerYcbcrConversionFeatures and VkPhysicalDeviceVulkan11Features");
+               }
+
+               if (    (shaderDrawParametersFeatures.shaderDrawParameters      != vulkan11Features.shaderDrawParameters ))
+               {
+                       TCU_FAIL("Mismatch between VkPhysicalDeviceShaderDrawParametersFeatures and VkPhysicalDeviceVulkan11Features");
+               }
+
+               if ((   variablePointerFeatures.variablePointersStorageBuffer   != vulkan11Features.variablePointersStorageBuffer ||
+                               variablePointerFeatures.variablePointers                                != vulkan11Features.variablePointers))
+               {
+                       TCU_FAIL("Mismatch between VkPhysicalDeviceVariablePointersFeatures and VkPhysicalDeviceVulkan11Features");
+               }
+
+               if ((   device8BitStorageFeatures.storageBuffer8BitAccess                       != vulkan12Features.storageBuffer8BitAccess ||
+                               device8BitStorageFeatures.uniformAndStorageBuffer8BitAccess     != vulkan12Features.uniformAndStorageBuffer8BitAccess ||
+                               device8BitStorageFeatures.storagePushConstant8                          != vulkan12Features.storagePushConstant8 ))
+               {
+                       TCU_FAIL("Mismatch between VkPhysicalDevice8BitStorageFeatures and VkPhysicalDeviceVulkan12Features");
+               }
+
+               if ((   shaderAtomicInt64Features.shaderBufferInt64Atomics != vulkan12Features.shaderBufferInt64Atomics ||
+                               shaderAtomicInt64Features.shaderSharedInt64Atomics != vulkan12Features.shaderSharedInt64Atomics ))
+               {
+                       TCU_FAIL("Mismatch between VkPhysicalDeviceShaderAtomicInt64Features and VkPhysicalDeviceVulkan12Features");
+               }
+
+               if ((   shaderFloat16Int8Features.shaderFloat16 != vulkan12Features.shaderFloat16 ||
+                               shaderFloat16Int8Features.shaderInt8            != vulkan12Features.shaderInt8 ))
+               {
+                       TCU_FAIL("Mismatch between VkPhysicalDeviceShaderFloat16Int8Features and VkPhysicalDeviceVulkan12Features");
+               }
+
+               if ((vulkan12Features.descriptorIndexing) &&
+                       (       descriptorIndexingFeatures.shaderInputAttachmentArrayDynamicIndexing                    != vulkan12Features.shaderInputAttachmentArrayDynamicIndexing ||
+                               descriptorIndexingFeatures.shaderUniformTexelBufferArrayDynamicIndexing                 != vulkan12Features.shaderUniformTexelBufferArrayDynamicIndexing ||
+                               descriptorIndexingFeatures.shaderStorageTexelBufferArrayDynamicIndexing                 != vulkan12Features.shaderStorageTexelBufferArrayDynamicIndexing ||
+                               descriptorIndexingFeatures.shaderUniformBufferArrayNonUniformIndexing                   != vulkan12Features.shaderUniformBufferArrayNonUniformIndexing ||
+                               descriptorIndexingFeatures.shaderSampledImageArrayNonUniformIndexing                    != vulkan12Features.shaderSampledImageArrayNonUniformIndexing ||
+                               descriptorIndexingFeatures.shaderStorageBufferArrayNonUniformIndexing                   != vulkan12Features.shaderStorageBufferArrayNonUniformIndexing ||
+                               descriptorIndexingFeatures.shaderStorageImageArrayNonUniformIndexing                    != vulkan12Features.shaderStorageImageArrayNonUniformIndexing ||
+                               descriptorIndexingFeatures.shaderInputAttachmentArrayNonUniformIndexing                 != vulkan12Features.shaderInputAttachmentArrayNonUniformIndexing ||
+                               descriptorIndexingFeatures.shaderUniformTexelBufferArrayNonUniformIndexing              != vulkan12Features.shaderUniformTexelBufferArrayNonUniformIndexing ||
+                               descriptorIndexingFeatures.shaderStorageTexelBufferArrayNonUniformIndexing              != vulkan12Features.shaderStorageTexelBufferArrayNonUniformIndexing ||
+                               descriptorIndexingFeatures.descriptorBindingUniformBufferUpdateAfterBind                != vulkan12Features.descriptorBindingUniformBufferUpdateAfterBind ||
+                               descriptorIndexingFeatures.descriptorBindingSampledImageUpdateAfterBind                 != vulkan12Features.descriptorBindingSampledImageUpdateAfterBind ||
+                               descriptorIndexingFeatures.descriptorBindingStorageImageUpdateAfterBind                 != vulkan12Features.descriptorBindingStorageImageUpdateAfterBind ||
+                               descriptorIndexingFeatures.descriptorBindingStorageBufferUpdateAfterBind                != vulkan12Features.descriptorBindingStorageBufferUpdateAfterBind ||
+                               descriptorIndexingFeatures.descriptorBindingUniformTexelBufferUpdateAfterBind   != vulkan12Features.descriptorBindingUniformTexelBufferUpdateAfterBind ||
+                               descriptorIndexingFeatures.descriptorBindingStorageTexelBufferUpdateAfterBind   != vulkan12Features.descriptorBindingStorageTexelBufferUpdateAfterBind ||
+                               descriptorIndexingFeatures.descriptorBindingUpdateUnusedWhilePending                    != vulkan12Features.descriptorBindingUpdateUnusedWhilePending ||
+                               descriptorIndexingFeatures.descriptorBindingPartiallyBound                                              != vulkan12Features.descriptorBindingPartiallyBound ||
+                               descriptorIndexingFeatures.descriptorBindingVariableDescriptorCount                             != vulkan12Features.descriptorBindingVariableDescriptorCount ||
+                               descriptorIndexingFeatures.runtimeDescriptorArray                                                               != vulkan12Features.runtimeDescriptorArray ))
+               {
+                       TCU_FAIL("Mismatch between VkPhysicalDeviceDescriptorIndexingFeatures and VkPhysicalDeviceVulkan12Features");
+               }
+
+               if ((   scalarBlockLayoutFeatures.scalarBlockLayout != vulkan12Features.scalarBlockLayout ))
+               {
+                       TCU_FAIL("Mismatch between VkPhysicalDeviceScalarBlockLayoutFeatures and VkPhysicalDeviceVulkan12Features");
+               }
+
+               if ((   imagelessFramebufferFeatures.imagelessFramebuffer != vulkan12Features.imagelessFramebuffer ))
+               {
+                       TCU_FAIL("Mismatch between VkPhysicalDeviceImagelessFramebufferFeatures and VkPhysicalDeviceVulkan12Features");
+               }
+
+               if ((   uniformBufferStandardLayoutFeatures.uniformBufferStandardLayout != vulkan12Features.uniformBufferStandardLayout ))
+               {
+                       TCU_FAIL("Mismatch between VkPhysicalDeviceUniformBufferStandardLayoutFeatures and VkPhysicalDeviceVulkan12Features");
+               }
+
+               if ((   shaderSubgroupExtendedTypesFeatures.shaderSubgroupExtendedTypes != vulkan12Features.shaderSubgroupExtendedTypes ))
+               {
+                       TCU_FAIL("Mismatch between VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures and VkPhysicalDeviceVulkan12Features");
+               }
+
+               if ((   separateDepthStencilLayoutsFeatures.separateDepthStencilLayouts != vulkan12Features.separateDepthStencilLayouts ))
+               {
+                       TCU_FAIL("Mismatch between VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures and VkPhysicalDeviceVulkan12Features");
+               }
+
+               if ((   hostQueryResetFeatures.hostQueryReset != vulkan12Features.hostQueryReset ))
+               {
+                       TCU_FAIL("Mismatch between VkPhysicalDeviceHostQueryResetFeatures and VkPhysicalDeviceVulkan12Features");
+               }
+
+               if ((   timelineSemaphoreFeatures.timelineSemaphore != vulkan12Features.timelineSemaphore ))
+               {
+                       TCU_FAIL("Mismatch between VkPhysicalDeviceTimelineSemaphoreFeatures and VkPhysicalDeviceVulkan12Features");
+               }
+
+               if ((   bufferDeviceAddressFeatures.bufferDeviceAddress                                 != vulkan12Features.bufferDeviceAddress ||
+                               bufferDeviceAddressFeatures.bufferDeviceAddressCaptureReplay    != vulkan12Features.bufferDeviceAddressCaptureReplay ||
+                               bufferDeviceAddressFeatures.bufferDeviceAddressMultiDevice              != vulkan12Features.bufferDeviceAddressMultiDevice ))
+               {
+                       TCU_FAIL("Mismatch between VkPhysicalDeviceBufferDeviceAddressFeatures and VkPhysicalDeviceVulkan12Features");
+               }
+
+               if ((   vulkanMemoryModelFeatures.vulkanMemoryModel                                                             != vulkan12Features.vulkanMemoryModel ||
+                               vulkanMemoryModelFeatures.vulkanMemoryModelDeviceScope                                  != vulkan12Features.vulkanMemoryModelDeviceScope ||
+                               vulkanMemoryModelFeatures.vulkanMemoryModelAvailabilityVisibilityChains != vulkan12Features.vulkanMemoryModelAvailabilityVisibilityChains ))
+               {
+                       TCU_FAIL("Mismatch between VkPhysicalDeviceVulkanMemoryModelFeatures and VkPhysicalDeviceVulkan12Features");
+               }
+       }
+
+       return tcu::TestStatus::pass("Vulkan 1.2 device features are consistent with extensions");
+}
+
+tcu::TestStatus devicePropertyExtensionsConsistencyVulkan12(Context& context)
+{
+       TestLog&                                                                                log                                                                                     = context.getTestContext().getLog();
+       const VkPhysicalDevice                                                  physicalDevice                                                          = context.getPhysicalDevice();
+       const CustomInstance                                                    instance                                                                        (createCustomInstanceWithExtension(context, "VK_KHR_get_physical_device_properties2"));
+       const InstanceDriver&                                                   vki                                                                                     = instance.getDriver();
+
+       if (!context.contextSupports(vk::ApiVersion(1, 2, 0)))
+               TCU_THROW(NotSupportedError, "At least Vulkan 1.2 required to run test");
+
+       VkPhysicalDeviceVulkan12Properties                              vulkan12Properties                                                      = initVulkanStructure();
+       VkPhysicalDeviceVulkan11Properties                              vulkan11Properties                                                      = initVulkanStructure(&vulkan12Properties);
+       VkPhysicalDeviceProperties2                                             extProperties                                                           = initVulkanStructure(&vulkan11Properties);
+
+       vki.getPhysicalDeviceProperties2(physicalDevice, &extProperties);
+
+       log << TestLog::Message << vulkan11Properties << TestLog::EndMessage;
+       log << TestLog::Message << vulkan12Properties << TestLog::EndMessage;
+
+       // Validate all fields initialized matching to extension structures
+       {
+               VkPhysicalDeviceIDProperties                                    idProperties                                                            = initVulkanStructure();
+               VkPhysicalDeviceSubgroupProperties                              subgroupProperties                                                      = initVulkanStructure(&idProperties);
+               VkPhysicalDevicePointClippingProperties                 pointClippingProperties                                         = initVulkanStructure(&subgroupProperties);
+               VkPhysicalDeviceMultiviewProperties                             multiviewProperties                                                     = initVulkanStructure(&pointClippingProperties);
+               VkPhysicalDeviceProtectedMemoryProperties               protectedMemoryPropertiesKHR                            = initVulkanStructure(&multiviewProperties);
+               VkPhysicalDeviceMaintenance3Properties                  maintenance3Properties                                          = initVulkanStructure(&protectedMemoryPropertiesKHR);
+               VkPhysicalDeviceDriverProperties                                driverProperties                                                        = initVulkanStructure(&maintenance3Properties);
+               VkPhysicalDeviceFloatControlsProperties                 floatControlsProperties                                         = initVulkanStructure(&driverProperties);
+               VkPhysicalDeviceDescriptorIndexingProperties    descriptorIndexingProperties                            = initVulkanStructure(&floatControlsProperties);
+               VkPhysicalDeviceDepthStencilResolveProperties   depthStencilResolveProperties                           = initVulkanStructure(&descriptorIndexingProperties);
+               VkPhysicalDeviceSamplerFilterMinmaxProperties   samplerFilterMinmaxProperties                           = initVulkanStructure(&depthStencilResolveProperties);
+               VkPhysicalDeviceTimelineSemaphoreProperties             timelineSemaphoreProperties                                     = initVulkanStructure(&samplerFilterMinmaxProperties);
+               extProperties = initVulkanStructure(&timelineSemaphoreProperties);
+
+               vki.getPhysicalDeviceProperties2(physicalDevice, &extProperties);
+
+               if ((deMemCmp(idProperties.deviceUUID, vulkan11Properties.deviceUUID, VK_UUID_SIZE) != 0) ||
+                       (deMemCmp(idProperties.driverUUID, vulkan11Properties.driverUUID, VK_UUID_SIZE) != 0) ||
+                       (idProperties.deviceLUIDValid != vulkan11Properties.deviceLUIDValid))
+               {
+                       TCU_FAIL("Mismatch between VkPhysicalDeviceIDProperties and VkPhysicalDeviceVulkan11Properties");
+               }
+               else if (idProperties.deviceLUIDValid)
+               {
+                       // If deviceLUIDValid is VK_FALSE, the contents of deviceLUID and deviceNodeMask are undefined
+                       // so thay can only be compared when deviceLUIDValid is VK_TRUE.
+                       if ((deMemCmp(idProperties.deviceLUID, vulkan11Properties.deviceLUID, VK_UUID_SIZE) != 0) ||
+                               (idProperties.deviceNodeMask != vulkan11Properties.deviceNodeMask))
+                       {
+                               TCU_FAIL("Mismatch between VkPhysicalDeviceIDProperties and VkPhysicalDeviceVulkan11Properties");
+                       }
+               }
+
+               if ((subgroupProperties.subgroupSize                            != vulkan11Properties.subgroupSize ||
+                        subgroupProperties.supportedStages                             != vulkan11Properties.subgroupSupportedStages ||
+                        subgroupProperties.supportedOperations                 != vulkan11Properties.subgroupSupportedOperations ||
+                        subgroupProperties.quadOperationsInAllStages   != vulkan11Properties.subgroupQuadOperationsInAllStages))
+               {
+                       TCU_FAIL("Mismatch between VkPhysicalDeviceSubgroupProperties and VkPhysicalDeviceVulkan11Properties");
+               }
+
+               if ((pointClippingProperties.pointClippingBehavior      != vulkan11Properties.pointClippingBehavior))
+               {
+                       TCU_FAIL("Mismatch between VkPhysicalDevicePointClippingProperties and VkPhysicalDeviceVulkan11Properties");
+               }
+
+               if ((multiviewProperties.maxMultiviewViewCount          != vulkan11Properties.maxMultiviewViewCount ||
+                        multiviewProperties.maxMultiviewInstanceIndex  != vulkan11Properties.maxMultiviewInstanceIndex))
+               {
+                       TCU_FAIL("Mismatch between VkPhysicalDeviceMultiviewProperties and VkPhysicalDeviceVulkan11Properties");
+               }
+
+               if ((protectedMemoryPropertiesKHR.protectedNoFault      != vulkan11Properties.protectedNoFault))
+               {
+                       TCU_FAIL("Mismatch between VkPhysicalDeviceProtectedMemoryProperties and VkPhysicalDeviceVulkan11Properties");
+               }
+
+               if ((maintenance3Properties.maxPerSetDescriptors        != vulkan11Properties.maxPerSetDescriptors ||
+                        maintenance3Properties.maxMemoryAllocationSize != vulkan11Properties.maxMemoryAllocationSize))
+               {
+                       TCU_FAIL("Mismatch between VkPhysicalDeviceMaintenance3Properties and VkPhysicalDeviceVulkan11Properties");
+               }
+
+               if ((driverProperties.driverID                                                                                          != vulkan12Properties.driverID ||
+                        strncmp(driverProperties.driverName, vulkan12Properties.driverName, VK_MAX_DRIVER_NAME_SIZE)   != 0 ||
+                        strncmp(driverProperties.driverInfo, vulkan12Properties.driverInfo, VK_MAX_DRIVER_INFO_SIZE)   != 0 ||
+                        driverProperties.conformanceVersion.major                                                              != vulkan12Properties.conformanceVersion.major ||
+                        driverProperties.conformanceVersion.minor                                                              != vulkan12Properties.conformanceVersion.minor ||
+                        driverProperties.conformanceVersion.subminor                                                   != vulkan12Properties.conformanceVersion.subminor ||
+                        driverProperties.conformanceVersion.patch                                                              != vulkan12Properties.conformanceVersion.patch))
+               {
+                       TCU_FAIL("Mismatch between VkPhysicalDeviceDriverProperties and VkPhysicalDeviceVulkan12Properties");
+               }
+
+               if ((floatControlsProperties.denormBehaviorIndependence                         != vulkan12Properties.denormBehaviorIndependence ||
+                        floatControlsProperties.roundingModeIndependence                               != vulkan12Properties.roundingModeIndependence ||
+                        floatControlsProperties.shaderSignedZeroInfNanPreserveFloat16  != vulkan12Properties.shaderSignedZeroInfNanPreserveFloat16 ||
+                        floatControlsProperties.shaderSignedZeroInfNanPreserveFloat32  != vulkan12Properties.shaderSignedZeroInfNanPreserveFloat32 ||
+                        floatControlsProperties.shaderSignedZeroInfNanPreserveFloat64  != vulkan12Properties.shaderSignedZeroInfNanPreserveFloat64 ||
+                        floatControlsProperties.shaderDenormPreserveFloat16                    != vulkan12Properties.shaderDenormPreserveFloat16 ||
+                        floatControlsProperties.shaderDenormPreserveFloat32                    != vulkan12Properties.shaderDenormPreserveFloat32 ||
+                        floatControlsProperties.shaderDenormPreserveFloat64                    != vulkan12Properties.shaderDenormPreserveFloat64 ||
+                        floatControlsProperties.shaderDenormFlushToZeroFloat16                 != vulkan12Properties.shaderDenormFlushToZeroFloat16 ||
+                        floatControlsProperties.shaderDenormFlushToZeroFloat32                 != vulkan12Properties.shaderDenormFlushToZeroFloat32 ||
+                        floatControlsProperties.shaderDenormFlushToZeroFloat64                 != vulkan12Properties.shaderDenormFlushToZeroFloat64 ||
+                        floatControlsProperties.shaderRoundingModeRTEFloat16                   != vulkan12Properties.shaderRoundingModeRTEFloat16 ||
+                        floatControlsProperties.shaderRoundingModeRTEFloat32                   != vulkan12Properties.shaderRoundingModeRTEFloat32 ||
+                        floatControlsProperties.shaderRoundingModeRTEFloat64                   != vulkan12Properties.shaderRoundingModeRTEFloat64 ||
+                        floatControlsProperties.shaderRoundingModeRTZFloat16                   != vulkan12Properties.shaderRoundingModeRTZFloat16 ||
+                        floatControlsProperties.shaderRoundingModeRTZFloat32                   != vulkan12Properties.shaderRoundingModeRTZFloat32 ||
+                        floatControlsProperties.shaderRoundingModeRTZFloat64                   != vulkan12Properties.shaderRoundingModeRTZFloat64 ))
+               {
+                       TCU_FAIL("Mismatch between VkPhysicalDeviceFloatControlsProperties and VkPhysicalDeviceVulkan12Properties");
+               }
+
+               if ((descriptorIndexingProperties.maxUpdateAfterBindDescriptorsInAllPools                               != vulkan12Properties.maxUpdateAfterBindDescriptorsInAllPools ||
+                        descriptorIndexingProperties.shaderUniformBufferArrayNonUniformIndexingNative          != vulkan12Properties.shaderUniformBufferArrayNonUniformIndexingNative ||
+                        descriptorIndexingProperties.shaderSampledImageArrayNonUniformIndexingNative           != vulkan12Properties.shaderSampledImageArrayNonUniformIndexingNative ||
+                        descriptorIndexingProperties.shaderStorageBufferArrayNonUniformIndexingNative          != vulkan12Properties.shaderStorageBufferArrayNonUniformIndexingNative ||
+                        descriptorIndexingProperties.shaderStorageImageArrayNonUniformIndexingNative           != vulkan12Properties.shaderStorageImageArrayNonUniformIndexingNative ||
+                        descriptorIndexingProperties.shaderInputAttachmentArrayNonUniformIndexingNative        != vulkan12Properties.shaderInputAttachmentArrayNonUniformIndexingNative ||
+                        descriptorIndexingProperties.robustBufferAccessUpdateAfterBind                                         != vulkan12Properties.robustBufferAccessUpdateAfterBind ||
+                        descriptorIndexingProperties.quadDivergentImplicitLod                                                          != vulkan12Properties.quadDivergentImplicitLod ||
+                        descriptorIndexingProperties.maxPerStageDescriptorUpdateAfterBindSamplers                      != vulkan12Properties.maxPerStageDescriptorUpdateAfterBindSamplers ||
+                        descriptorIndexingProperties.maxPerStageDescriptorUpdateAfterBindUniformBuffers        != vulkan12Properties.maxPerStageDescriptorUpdateAfterBindUniformBuffers ||
+                        descriptorIndexingProperties.maxPerStageDescriptorUpdateAfterBindStorageBuffers        != vulkan12Properties.maxPerStageDescriptorUpdateAfterBindStorageBuffers ||
+                        descriptorIndexingProperties.maxPerStageDescriptorUpdateAfterBindSampledImages         != vulkan12Properties.maxPerStageDescriptorUpdateAfterBindSampledImages ||
+                        descriptorIndexingProperties.maxPerStageDescriptorUpdateAfterBindStorageImages         != vulkan12Properties.maxPerStageDescriptorUpdateAfterBindStorageImages ||
+                        descriptorIndexingProperties.maxPerStageDescriptorUpdateAfterBindInputAttachments      != vulkan12Properties.maxPerStageDescriptorUpdateAfterBindInputAttachments ||
+                        descriptorIndexingProperties.maxPerStageUpdateAfterBindResources                                       != vulkan12Properties.maxPerStageUpdateAfterBindResources ||
+                        descriptorIndexingProperties.maxDescriptorSetUpdateAfterBindSamplers                           != vulkan12Properties.maxDescriptorSetUpdateAfterBindSamplers ||
+                        descriptorIndexingProperties.maxDescriptorSetUpdateAfterBindUniformBuffers                     != vulkan12Properties.maxDescriptorSetUpdateAfterBindUniformBuffers ||
+                        descriptorIndexingProperties.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic      != vulkan12Properties.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic ||
+                        descriptorIndexingProperties.maxDescriptorSetUpdateAfterBindStorageBuffers                     != vulkan12Properties.maxDescriptorSetUpdateAfterBindStorageBuffers ||
+                        descriptorIndexingProperties.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic      != vulkan12Properties.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic ||
+                        descriptorIndexingProperties.maxDescriptorSetUpdateAfterBindSampledImages                      != vulkan12Properties.maxDescriptorSetUpdateAfterBindSampledImages ||
+                        descriptorIndexingProperties.maxDescriptorSetUpdateAfterBindStorageImages                      != vulkan12Properties.maxDescriptorSetUpdateAfterBindStorageImages ||
+                        descriptorIndexingProperties.maxDescriptorSetUpdateAfterBindInputAttachments           != vulkan12Properties.maxDescriptorSetUpdateAfterBindInputAttachments ))
+               {
+                       TCU_FAIL("Mismatch between VkPhysicalDeviceDescriptorIndexingProperties and VkPhysicalDeviceVulkan12Properties");
+               }
+
+               if ((depthStencilResolveProperties.supportedDepthResolveModes   != vulkan12Properties.supportedDepthResolveModes ||
+                        depthStencilResolveProperties.supportedStencilResolveModes     != vulkan12Properties.supportedStencilResolveModes ||
+                        depthStencilResolveProperties.independentResolveNone           != vulkan12Properties.independentResolveNone ||
+                        depthStencilResolveProperties.independentResolve                       != vulkan12Properties.independentResolve))
+               {
+                       TCU_FAIL("Mismatch between VkPhysicalDeviceDepthStencilResolveProperties and VkPhysicalDeviceVulkan12Properties");
+               }
+
+               if ((samplerFilterMinmaxProperties.filterMinmaxSingleComponentFormats   != vulkan12Properties.filterMinmaxSingleComponentFormats ||
+                        samplerFilterMinmaxProperties.filterMinmaxImageComponentMapping        != vulkan12Properties.filterMinmaxImageComponentMapping))
+               {
+                       TCU_FAIL("Mismatch between VkPhysicalDeviceSamplerFilterMinmaxProperties and VkPhysicalDeviceVulkan12Properties");
+               }
+
+               if ((timelineSemaphoreProperties.maxTimelineSemaphoreValueDifference    != vulkan12Properties.maxTimelineSemaphoreValueDifference))
+               {
+                       TCU_FAIL("Mismatch between VkPhysicalDeviceTimelineSemaphoreProperties and VkPhysicalDeviceVulkan12Properties");
+               }
+       }
+
+       return tcu::TestStatus::pass("Vulkan 1.2 device properties are consistent with extension properties");
+}
+
 tcu::TestStatus imageFormatProperties2 (Context& context, const VkFormat format, const VkImageType imageType, const VkImageTiling tiling)
 {
        if (isYCbCrFormat(format))
@@ -3642,11 +5782,10 @@ tcu::TestStatus testMandatoryExtensions (Context& context)
 
        // Instance extensions
        {
-               static const string                                     mandatoryExtensions[]   =
+               static const string mandatoryExtensions[]       =
                {
                        "VK_KHR_get_physical_device_properties2",
                };
-               const vector<VkExtensionProperties>     extensions                              = enumerateInstanceExtensionProperties(context.getPlatformInterface(), DE_NULL);
 
                for (const auto ext : mandatoryExtensions)
                {
@@ -3657,11 +5796,10 @@ tcu::TestStatus testMandatoryExtensions (Context& context)
 
        // Device extensions
        {
-               static const string                                     mandatoryExtensions[]   =
+               static const string mandatoryExtensions[] =
                {
                        "VK_KHR_maintenance1",
                };
-               const vector<VkExtensionProperties>     extensions                              = enumerateDeviceExtensionProperties(context.getInstanceInterface(), context.getPhysicalDevice(), DE_NULL);
 
                for (const auto ext : mandatoryExtensions)
                {
@@ -3696,6 +5834,43 @@ tcu::TestCaseGroup* createFeatureInfoTests (tcu::TestContext& testCtx)
                infoTests->addChild(extendedPropertiesTests.release());
        }
 
+       {
+               de::MovePtr<tcu::TestCaseGroup> extendedPropertiesTests (new tcu::TestCaseGroup(testCtx, "vulkan1p2", "Vulkan 1.2 related tests"));
+
+               addFunctionCase(extendedPropertiesTests.get(), "features",                                                      "Extended Vulkan 1.2 Device Features",                                          deviceFeaturesVulkan12);
+               addFunctionCase(extendedPropertiesTests.get(), "properties",                                            "Extended Vulkan 1.2 Device Properties",                                        devicePropertiesVulkan12);
+               addFunctionCase(extendedPropertiesTests.get(), "feature_extensions_consistency",        "Vulkan 1.2 consistency between Features and Extensions",       deviceFeatureExtensionsConsistencyVulkan12);
+               addFunctionCase(extendedPropertiesTests.get(), "property_extensions_consistency",       "Vulkan 1.2 consistency between Properties and Extensions", devicePropertyExtensionsConsistencyVulkan12);
+               addFunctionCase(extendedPropertiesTests.get(), "feature_bits_influence",                        "Validate feature bits influence on feature activation",        checkSupportFeatureBitInfluence, featureBitInfluenceOnDeviceCreate);
+
+               infoTests->addChild(extendedPropertiesTests.release());
+       }
+
+       {
+               de::MovePtr<tcu::TestCaseGroup> limitsValidationTests (new tcu::TestCaseGroup(testCtx, "vulkan1p2_limits_validation", "Vulkan 1.2 and core extensions limits validation"));
+
+               addFunctionCase(limitsValidationTests.get(), "general",                                                 "Vulkan 1.2 Limit validation",                                                  validateLimitsCheckSupport,                                     validateLimits12);
+               addFunctionCase(limitsValidationTests.get(), "khr_push_descriptor",                             "VK_KHR_push_descriptor limit validation",                              checkSupportKhrPushDescriptor,                          validateLimitsKhrPushDescriptor);
+               addFunctionCase(limitsValidationTests.get(), "khr_multiview",                                   "VK_KHR_multiview limit validation",                                    checkSupportKhrMultiview,                                       validateLimitsKhrMultiview);
+               addFunctionCase(limitsValidationTests.get(), "ext_discard_rectangles",                  "VK_EXT_discard_rectangles limit validation",                   checkSupportExtDiscardRectangles,                       validateLimitsExtDiscardRectangles);
+               addFunctionCase(limitsValidationTests.get(), "ext_sample_locations",                    "VK_EXT_sample_locations limit validation",                             checkSupportExtSampleLocations,                         validateLimitsExtSampleLocations);
+               addFunctionCase(limitsValidationTests.get(), "ext_external_memory_host",                "VK_EXT_external_memory_host limit validation",                 checkSupportExtExternalMemoryHost,                      validateLimitsExtExternalMemoryHost);
+               addFunctionCase(limitsValidationTests.get(), "ext_blend_operation_advanced",    "VK_EXT_blend_operation_advanced limit validation",             checkSupportExtBlendOperationAdvanced,          validateLimitsExtBlendOperationAdvanced);
+               addFunctionCase(limitsValidationTests.get(), "khr_maintenance_3",                               "VK_KHR_maintenance3 limit validation",                                 checkSupportKhrMaintenance3,                            validateLimitsKhrMaintenance3);
+               addFunctionCase(limitsValidationTests.get(), "ext_conservative_rasterization",  "VK_EXT_conservative_rasterization limit validation",   checkSupportExtConservativeRasterization,       validateLimitsExtConservativeRasterization);
+               addFunctionCase(limitsValidationTests.get(), "ext_descriptor_indexing",                 "VK_EXT_descriptor_indexing limit validation",                  checkSupportExtDescriptorIndexing,                      validateLimitsExtDescriptorIndexing);
+               addFunctionCase(limitsValidationTests.get(), "ext_inline_uniform_block",                "VK_EXT_inline_uniform_block limit validation",                 checkSupportExtInlineUniformBlock,                      validateLimitsExtInlineUniformBlock);
+               addFunctionCase(limitsValidationTests.get(), "ext_vertex_attribute_divisor",    "VK_EXT_vertex_attribute_divisor limit validation",             checkSupportExtVertexAttributeDivisor,          validateLimitsExtVertexAttributeDivisor);
+               addFunctionCase(limitsValidationTests.get(), "nv_mesh_shader",                                  "VK_NV_mesh_shader limit validation",                                   checkSupportNvMeshShader,                                       validateLimitsNvMeshShader);
+               addFunctionCase(limitsValidationTests.get(), "ext_transform_feedback",                  "VK_EXT_transform_feedback limit validation",                   checkSupportExtTransformFeedback,                       validateLimitsExtTransformFeedback);
+               addFunctionCase(limitsValidationTests.get(), "fragment_density_map",                    "VK_EXT_fragment_density_map limit validation",                 checkSupportExtFragmentDensityMap,                      validateLimitsExtFragmentDensityMap);
+               addFunctionCase(limitsValidationTests.get(), "nv_ray_tracing",                                  "VK_NV_ray_tracing limit validation",                                   checkSupportNvRayTracing,                                       validateLimitsNvRayTracing);
+               addFunctionCase(limitsValidationTests.get(), "timeline_semaphore",                              "VK_KHR_timeline_semaphore limit validation",                   checkSupportKhrTimelineSemaphore,                       validateLimitsKhrTimelineSemaphore);
+               addFunctionCase(limitsValidationTests.get(), "ext_line_rasterization",                  "VK_EXT_line_rasterization limit validation",                   checkSupportExtLineRasterization,                       validateLimitsExtLineRasterization);
+
+               infoTests->addChild(limitsValidationTests.release());
+       }
+
        infoTests->addChild(createTestGroup(testCtx, "image_format_properties2",                "VkGetPhysicalDeviceImageFormatProperties2() Tests",            createImageFormatTests, imageFormatProperties2));
        infoTests->addChild(createTestGroup(testCtx, "sparse_image_format_properties2", "VkGetPhysicalDeviceSparseImageFormatProperties2() Tests",      createImageFormatTests, sparseImageFormatProperties2));
 
index 26aed40..473eba1 100644 (file)
@@ -959,7 +959,7 @@ Move<VkRenderPass> ImageClearingTestInstance::createRenderPass (VkFormat format)
                        DE_NULL,                                                                                        // const deUint32*                                      pCorrelatedViewMasks;
                };
 
-               return vk::createRenderPass2KHR(m_vkd, m_device, &renderPassCreateInfo, DE_NULL);
+               return vk::createRenderPass2(m_vkd, m_device, &renderPassCreateInfo, DE_NULL);
        }
 }
 
index ecec39a..fdad913 100644 (file)
@@ -260,10 +260,8 @@ tcu::TestStatus InvarianceInstance::iterate (void)
        size_t                                                                  refSizes[testCycles];
        unsigned int                                                    order[testCycles];
        bool                                                                    success                                                 = true;
-       const deBool                                                    isDedicatedAllocationSupported  =
-               m_context.isDeviceFunctionalitySupported("VK_KHR_dedicated_allocation");
-       const deBool                                                    isYcbcrSupported =
-               m_context.isDeviceFunctionalitySupported("VK_KHR_sampler_ycbcr_conversion");
+       const deBool                                                    isDedicatedAllocationSupported  = m_context.isDeviceFunctionalitySupported("VK_KHR_dedicated_allocation");
+       const deBool                                                    isYcbcrSupported                                = m_context.isDeviceFunctionalitySupported("VK_KHR_sampler_ycbcr_conversion");
        std::vector<int>                                                optimalFormats;
        std::vector<int>                                                linearFormats;
        std::vector<int>                                                memoryTypes;
index 50f49b1..5c3ebeb 100644 (file)
@@ -56,6 +56,9 @@ namespace
 using namespace vk;
 using namespace std;
 
+typedef de::MovePtr<Unique<VkBuffer> > VkBufferSp;
+typedef de::MovePtr<Allocation>                        AllocationSp;
+
 static const deUint32 DIM = 8;
 
 typedef enum
@@ -87,13 +90,20 @@ typedef enum
        LAYOUT_SCALAR,
 } Layout;
 
+typedef enum
+{
+       CONVERT_NONE = 0,
+       CONVERT_UTOPTR,
+       CONVERT_UVEC2,
+} Convert;
+
 struct CaseDef
 {
        deUint32 set;
        deUint32 depth;
        Base base;
        Stage stage;
-       bool convertUToPtr;
+       Convert convertUToPtr;
        bool storeInLocal;
        BufType bufType;
        Layout layout;
@@ -154,7 +164,7 @@ BufferAddressTestCase::~BufferAddressTestCase       (void)
 
 void BufferAddressTestCase::checkSupport (Context& context) const
 {
-       if (!context.getBufferDeviceAddressFeatures().bufferDeviceAddress)
+       if (!context.isBufferDeviceAddressSupported())
                TCU_THROW(NotSupportedError, "Physical storage buffer pointers not supported");
 
        if (m_data.stage == STAGE_VERTEX && !context.getDeviceFeatures().vertexPipelineStoresAndAtomics)
@@ -163,11 +173,10 @@ void BufferAddressTestCase::checkSupport (Context& context) const
        if (m_data.set >= context.getDeviceProperties().limits.maxBoundDescriptorSets)
                TCU_THROW(NotSupportedError, "descriptor set number not supported");
 
-       if (m_data.convertUToPtr == VK_TRUE && !context.getDeviceFeatures().shaderInt64)
-               TCU_THROW(NotSupportedError, "64-bit integers in shader not supported");
-
-       if (m_data.bufType == BT_REPLAY &&
-               !context.getBufferDeviceAddressFeatures().bufferDeviceAddressCaptureReplay)
+       bool isBufferDeviceAddressWithCaptureReplaySupported =
+                       (context.isDeviceFunctionalitySupported("VK_KHR_buffer_device_address") && context.getBufferDeviceAddressFeatures().bufferDeviceAddressCaptureReplay) ||
+                       (context.isDeviceFunctionalitySupported("VK_EXT_buffer_device_address") && context.getBufferDeviceAddressFeaturesEXT().bufferDeviceAddressCaptureReplay);
+       if (m_data.bufType == BT_REPLAY && !isBufferDeviceAddressWithCaptureReplaySupported)
                TCU_THROW(NotSupportedError, "Capture/replay of physical storage buffer pointers not supported");
 
        if (m_data.layout == LAYOUT_SCALAR && !context.getScalarBlockLayoutFeatures().scalarBlockLayout)
@@ -180,13 +189,23 @@ void BufferAddressTestCase::checkSupport (Context& context) const
                TCU_THROW(NotSupportedError, "Ray tracing not supported");
        }
 #endif
+
+       if (m_data.convertUToPtr == CONVERT_UTOPTR && !context.getDeviceFeatures().shaderInt64)
+               TCU_THROW(NotSupportedError, "Int64 not supported");
+       if (m_data.convertUToPtr == CONVERT_UVEC2 && !context.isDeviceFunctionalitySupported("VK_KHR_buffer_device_address"))
+               TCU_THROW(NotSupportedError, "VK_KHR_buffer_device_address not supported");
 }
 
 void BufferAddressTestCase::checkBuffer (std::stringstream& checks, deUint32 bufNum, deUint32 curDepth, const std::string &prefix) const
 {
        string newPrefix = prefix;
-       if (curDepth > 0 && m_data.convertUToPtr)
-               newPrefix = "T1(uint64_t(T1(" + newPrefix + ")))";
+       if (curDepth > 0)
+       {
+               if (m_data.convertUToPtr == CONVERT_UTOPTR)
+                       newPrefix = "T1(uint64_t(T1(" + newPrefix + ")))";
+               else if (m_data.convertUToPtr == CONVERT_UVEC2)
+                       newPrefix = "T1(uvec2(T1(" + newPrefix + ")))";
+       }
 
        if (m_data.storeInLocal && curDepth != 0)
        {
@@ -271,7 +290,7 @@ void BufferAddressTestCase::initPrograms (SourceCollections& programCollection)
 
        decls << "layout(r32ui, set = " << m_data.set << ", binding = 0) uniform uimage2D image0_0;\n";
        decls << "layout(buffer_reference) " << memberStorage << " T1;\n";
-       std::string refType = m_data.convertUToPtr ? "uint64_t" : "T1";
+       std::string refType = m_data.convertUToPtr == CONVERT_UTOPTR ? "uint64_t" : m_data.convertUToPtr == CONVERT_UVEC2 ? "uvec2" : "T1";
        std::string layout = m_data.layout == LAYOUT_SCALAR ? "scalar" : "std140";
        decls <<
                        "layout(set = " << m_data.set << ", binding = 1, " << layout << ") " << baseStorage << " T2 {\n"
@@ -312,6 +331,7 @@ void BufferAddressTestCase::initPrograms (SourceCollections& programCollection)
                                "#extension GL_EXT_shader_explicit_arithmetic_types_int64 : enable\n"
                                "#extension GL_EXT_buffer_reference : enable\n"
                                "#extension GL_EXT_scalar_block_layout : enable\n"
+                               "#extension GL_EXT_buffer_reference_uvec2 : enable\n"
                                << pushdecl.str()
                                << decls.str() <<
                                "layout(local_size_x = 1, local_size_y = 1) in;\n"
@@ -337,6 +357,7 @@ void BufferAddressTestCase::initPrograms (SourceCollections& programCollection)
                                "#extension GL_EXT_shader_explicit_arithmetic_types_int64 : enable\n"
                                "#extension GL_EXT_buffer_reference : enable\n"
                                "#extension GL_EXT_scalar_block_layout : enable\n"
+                               "#extension GL_EXT_buffer_reference_uvec2 : enable\n"
                                "#extension GL_NV_ray_tracing : require\n"
                                << pushdecl.str()
                                << decls.str() <<
@@ -362,6 +383,7 @@ void BufferAddressTestCase::initPrograms (SourceCollections& programCollection)
                                "#extension GL_EXT_shader_explicit_arithmetic_types_int64 : enable\n"
                                "#extension GL_EXT_buffer_reference : enable\n"
                                "#extension GL_EXT_scalar_block_layout : enable\n"
+                               "#extension GL_EXT_buffer_reference_uvec2 : enable\n"
                                << pushdecl.str()
                                << decls.str()  <<
                                "void main()\n"
@@ -397,6 +419,7 @@ void BufferAddressTestCase::initPrograms (SourceCollections& programCollection)
                                "#extension GL_EXT_shader_explicit_arithmetic_types_int64 : enable\n"
                                "#extension GL_EXT_buffer_reference : enable\n"
                                "#extension GL_EXT_scalar_block_layout : enable\n"
+                               "#extension GL_EXT_buffer_reference_uvec2 : enable\n"
                                << pushdecl.str()
                                << decls.str() <<
                                "void main()\n"
@@ -442,9 +465,12 @@ VkBufferCreateInfo makeBufferCreateInfo (const void*                               pNext,
 
 tcu::TestStatus BufferAddressTestInstance::iterate (void)
 {
+       const InstanceInterface&vki                                             = m_context.getInstanceInterface();
        const DeviceInterface&  vk                                              = m_context.getDeviceInterface();
+       const VkPhysicalDevice& physDevice                              = m_context.getPhysicalDevice();
        const VkDevice                  device                                  = m_context.getDevice();
        Allocator&                              allocator                               = m_context.getDefaultAllocator();
+       const bool                              useKHR                                  = m_context.isDeviceFunctionalitySupported("VK_KHR_buffer_device_address");
 
 
        VkFlags allShaderStages = VK_SHADER_STAGE_COMPUTE_BIT | VK_SHADER_STAGE_VERTEX_BIT | VK_SHADER_STAGE_FRAGMENT_BIT;
@@ -540,60 +566,130 @@ tcu::TestStatus BufferAddressTestInstance::iterate (void)
                numBindings = numBindings*3+1;
        }
 
-       VkBufferDeviceAddressCreateInfoEXT addressCreateInfo =
+       VkBufferDeviceAddressCreateInfoEXT addressCreateInfoEXT =
        {
                VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT,        // VkStructureType       sType;
                DE_NULL,                                                                                                        // const void*           pNext;
-               0x000000000ULL,                                                                                         // VkDeviceSize         deviceAddress
+               0x000000000ULL,                                                                                         // VkDeviceSize          deviceAddress
+       };
+
+       VkBufferOpaqueCaptureAddressCreateInfo bufferOpaqueCaptureAddressCreateInfo =
+       {
+               VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO,    // VkStructureType       sType;
+               DE_NULL,                                                                                                                // const void*           pNext;
+               0x000000000ULL,                                                                                                 // VkDeviceSize          opaqueCaptureAddress
        };
 
        std::vector<deUint8 *> cpuAddrs(numBindings);
        std::vector<VkDeviceAddress> gpuAddrs(numBindings);
+       std::vector<deUint64> opaqueBufferAddrs(numBindings);
+       std::vector<deUint64> opaqueMemoryAddrs(numBindings);
 
-       VkBufferDeviceAddressInfoEXT info =
+       VkBufferDeviceAddressInfo bufferDeviceAddressInfo =
        {
-               VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT,       // VkStructureType       sType;
-               DE_NULL,                                                                                        // const void*           pNext;
-               0,                                                                                                      // VkBuffer                     buffer
+               VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO,   // VkStructureType       sType;
+               DE_NULL,                                                                                // const void*           pNext;
+               0,                                                                                              // VkBuffer                      buffer
+       };
+
+       VkDeviceMemoryOpaqueCaptureAddressInfo deviceMemoryOpaqueCaptureAddressInfo =
+       {
+               VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO,    // VkStructureType       sType;
+               DE_NULL,                                                                                                                // const void*           pNext;
+               0,                                                                                                                              // VkDeviceMemory        memory;
        };
 
        bool multiBuffer = m_data.bufType != BT_SINGLE;
        deUint32 numBuffers = multiBuffer ? numBindings : 1;
        VkDeviceSize bufferSize = multiBuffer ? align : (align*numBindings);
 
-       vector<de::SharedPtr<BufferWithMemory> > buffers(numBuffers);
-       for (deUint32 i = 0; i < numBuffers; ++i)
-       {
-               buffers[i] = de::SharedPtr<BufferWithMemory>(new BufferWithMemory(
-                       vk, device, allocator, makeBufferCreateInfo(DE_NULL, bufferSize,
+       vector<VkBufferSp>                      buffers(numBuffers);
+       vector<AllocationSp>            allocations(numBuffers);
+
+       VkBufferCreateInfo                      bufferCreateInfo = makeBufferCreateInfo(DE_NULL, bufferSize,
                                                                                                                VK_BUFFER_USAGE_STORAGE_BUFFER_BIT |
                                                                                                                VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT |
-                                                                                                               VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT,
-                                                                                                               m_data.bufType == BT_REPLAY ? VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT : 0),
-                                                                                                               MemoryRequirement::HostVisible));
+                                                                                                               VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT,
+                                                                                                               m_data.bufType == BT_REPLAY ? VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT : 0);
+
+       // VkMemoryAllocateFlags to be filled out later
+       VkMemoryAllocateFlagsInfo       allocFlagsInfo =
+       {
+               VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO,   //      VkStructureType sType
+               DE_NULL,                                                                                //      const void*             pNext
+               0,                                                                                              //      VkMemoryAllocateFlags    flags
+               0,                                                                                              //      uint32_t                 deviceMask
+       };
+
+       VkMemoryOpaqueCaptureAddressAllocateInfo memoryOpaqueCaptureAddressAllocateInfo =
+       {
+               VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO,  // VkStructureType    sType;
+               DE_NULL,                                                                                                                // const void*        pNext;
+               0,                                                                                                                              // uint64_t           opaqueCaptureAddress;
+       };
+
+       if (useKHR)
+               allocFlagsInfo.flags |= VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT;
+
+       if (useKHR && m_data.bufType == BT_REPLAY)
+       {
+               allocFlagsInfo.flags |= VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT;
+               allocFlagsInfo.pNext = &memoryOpaqueCaptureAddressAllocateInfo;
+       }
+
+       for (deUint32 i = 0; i < numBuffers; ++i)
+       {
+               buffers[i] = VkBufferSp(new Unique<VkBuffer>(createBuffer(vk, device, &bufferCreateInfo)));
+
+               // query opaque capture address before binding memory
+               if (useKHR) {
+                       bufferDeviceAddressInfo.buffer = **buffers[i];
+                       opaqueBufferAddrs[i] = vk.getBufferOpaqueCaptureAddress(device, &bufferDeviceAddressInfo);
+               }
+
+               allocations[i] = AllocationSp(allocateExtended(vki, vk, physDevice, device, getBufferMemoryRequirements(vk, device, **buffers[i]), MemoryRequirement::HostVisible, &allocFlagsInfo));
+
+               if (useKHR) {
+                       deviceMemoryOpaqueCaptureAddressInfo.memory = allocations[i]->getMemory();
+                       opaqueMemoryAddrs[i] = vk.getDeviceMemoryOpaqueCaptureAddress(device, &deviceMemoryOpaqueCaptureAddressInfo);
+               }
+
+               VK_CHECK(vk.bindBufferMemory(device, **buffers[i], allocations[i]->getMemory(), 0));
        }
 
        if (m_data.bufType == BT_REPLAY)
        {
                for (deUint32 i = 0; i < numBuffers; ++i)
                {
-                       info.buffer = **buffers[i];
-                       gpuAddrs[i] = vk.getBufferDeviceAddressEXT(device, &info);
+                       bufferDeviceAddressInfo.buffer = **buffers[i];
+                       if (useKHR)
+                               gpuAddrs[i] = vk.getBufferDeviceAddress(device, &bufferDeviceAddressInfo);
+                       else
+                               gpuAddrs[i] = vk.getBufferDeviceAddressEXT(device, &bufferDeviceAddressInfo);
                }
                buffers.clear();
                buffers.resize(numBuffers);
+               allocations.clear();
+               allocations.resize(numBuffers);
+
+               bufferCreateInfo.pNext = useKHR ? (void *)&bufferOpaqueCaptureAddressCreateInfo : (void *)&addressCreateInfoEXT;
+
                for (deInt32 i = numBuffers-1; i >= 0; --i)
                {
-                       addressCreateInfo.deviceAddress = gpuAddrs[i];
-                       buffers[i] = de::SharedPtr<BufferWithMemory>(new BufferWithMemory(
-                               vk, device, allocator, makeBufferCreateInfo(&addressCreateInfo, bufferSize,
-                                                                                                                       VK_BUFFER_USAGE_STORAGE_BUFFER_BIT |
-                                                                                                                       VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT |
-                                                                                                                       VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT,
-                                                                                                                       m_data.bufType == BT_REPLAY ? VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT : 0),
-                                                                                                                       MemoryRequirement::HostVisible));
-                       info.buffer = **buffers[i];
-                       VkDeviceSize newAddr = vk.getBufferDeviceAddressEXT(device, &info);
+                       addressCreateInfoEXT.deviceAddress = gpuAddrs[i];
+                       bufferOpaqueCaptureAddressCreateInfo.opaqueCaptureAddress = opaqueBufferAddrs[i];
+                       memoryOpaqueCaptureAddressAllocateInfo.opaqueCaptureAddress = opaqueMemoryAddrs[i];
+
+                       buffers[i] = VkBufferSp(new Unique<VkBuffer>(createBuffer(vk, device, &bufferCreateInfo)));
+                       allocations[i] = AllocationSp(allocateExtended(vki, vk, physDevice, device, getBufferMemoryRequirements(vk, device, **buffers[i]), MemoryRequirement::HostVisible, &allocFlagsInfo));
+                       VK_CHECK(vk.bindBufferMemory(device, **buffers[i], allocations[i]->getMemory(), 0));
+
+                       bufferDeviceAddressInfo.buffer = **buffers[i];
+                       VkDeviceSize newAddr;
+                       if (useKHR)
+                               newAddr = vk.getBufferDeviceAddress(device, &bufferDeviceAddressInfo);
+                       else
+                               newAddr = vk.getBufferDeviceAddressEXT(device, &bufferDeviceAddressInfo);
                        if (newAddr != gpuAddrs[i])
                                return tcu::TestStatus(QP_TEST_RESULT_FAIL, "address mismatch");
                }
@@ -602,10 +698,13 @@ tcu::TestStatus BufferAddressTestInstance::iterate (void)
        // Create a buffer and compute the address for each "align" bytes.
        for (deUint32 i = 0; i < numBindings; ++i)
        {
-               info.buffer = **buffers[multiBuffer ? i : 0];
+               bufferDeviceAddressInfo.buffer = **buffers[multiBuffer ? i : 0];
 
-               gpuAddrs[i] = vk.getBufferDeviceAddressEXT(device, &info);
-               cpuAddrs[i] = (deUint8 *)buffers[multiBuffer ? i : 0]->getAllocation().getHostPtr();
+               if (useKHR)
+                       gpuAddrs[i] = vk.getBufferDeviceAddress(device, &bufferDeviceAddressInfo);
+               else
+                       gpuAddrs[i] = vk.getBufferDeviceAddressEXT(device, &bufferDeviceAddressInfo);
+               cpuAddrs[i] = (deUint8 *)allocations[multiBuffer ? i : 0]->getHostPtr();
                if (!multiBuffer)
                {
                        cpuAddrs[i] = cpuAddrs[i] + align*i;
@@ -617,7 +716,7 @@ tcu::TestStatus BufferAddressTestInstance::iterate (void)
        fillBuffer(cpuAddrs, gpuAddrs, 0, 0);
 
        for (deUint32 i = 0; i < numBuffers; ++i)
-               flushAlloc(vk, device, buffers[i]->getAllocation());
+               flushAlloc(vk, device, *allocations[i]);
 
        const VkQueue                                   queue                                   = m_context.getUniversalQueue();
        Move<VkCommandPool>                             cmdPool                                 = createCommandPool(vk, device, 0, m_context.getUniversalQueueFamilyIndex());
@@ -1154,8 +1253,9 @@ tcu::TestCaseGroup*       createBufferDeviceAddressTests (tcu::TestContext& testCtx)
 
        TestGroupCase cvtCases[] =
        {
-               { 0,    "load",         "load reference"                                },
-               { 1,    "convert",      "load and convert reference"    },
+               { CONVERT_NONE,         "load",                 "load reference"                                                },
+               { CONVERT_UTOPTR,       "convert",              "load and convert reference"                    },
+               { CONVERT_UVEC2,        "convertuvec2", "load and convert reference to uvec2"   },
        };
 
        TestGroupCase storeCases[] =
@@ -1216,7 +1316,7 @@ tcu::TestCaseGroup*       createBufferDeviceAddressTests (tcu::TestContext& testCtx)
                                                                                depthCases[depthNdx].count,                                     // deUint32 depth;
                                                                                (Base)baseCases[baseNdx].count,                         // Base base;
                                                                                (Stage)stageCases[stageNdx].count,                      // Stage stage;
-                                                                               !!cvtCases[cvtNdx].count,                                       // bool convertUToPtr;
+                                                                               (Convert)cvtCases[cvtNdx].count,                        // Convert convertUToPtr;
                                                                                !!storeCases[storeNdx].count,                           // bool storeInLocal;
                                                                                (BufType)btCases[btNdx].count,                          // BufType bufType;
                                                                                (Layout)layoutCases[layoutNdx].count,           // Layout layout;
index 8be1206..c2ba7e8 100644 (file)
@@ -117,32 +117,17 @@ struct CaseDef
 static void getNeededFeatures(const Context&                                                                   context,
                                                          VkPhysicalDeviceFeatures2&                                            features,
                                                          VkPhysicalDeviceInlineUniformBlockFeaturesEXT&        inlineUniformFeatures,
-                                                         VkPhysicalDeviceDescriptorIndexingFeaturesEXT&        indexingFeatures)
+                                                         VkPhysicalDeviceDescriptorIndexingFeatures&           indexingFeatures)
 {
-       deMemset(&inlineUniformFeatures, 0, sizeof(inlineUniformFeatures));
-       inlineUniformFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT;
+       inlineUniformFeatures   = initVulkanStructure();
+       indexingFeatures                = initVulkanStructure();
+       features                                = initVulkanStructure();
 
-       deMemset(&indexingFeatures, 0, sizeof(indexingFeatures));
-       indexingFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT;
-
-       deMemset(&features, 0, sizeof(features));
-       features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2;
-
-       bool descriptorIndexing         = context.isDeviceFunctionalitySupported("VK_EXT_descriptor_indexing");
-       bool uniformBlock                       = context.isDeviceFunctionalitySupported("VK_EXT_inline_uniform_block");
-       if (descriptorIndexing && uniformBlock)
-       {
-               indexingFeatures.pNext = &inlineUniformFeatures;
-               features.pNext = &indexingFeatures;
-       }
-       else if (descriptorIndexing)
-       {
-               features.pNext = &indexingFeatures;
-       }
-       else if (uniformBlock)
-       {
-               features.pNext = &inlineUniformFeatures;
-       }
+       void** nextPtr = &features.pNext;
+       if (context.isDeviceFunctionalitySupported("VK_EXT_descriptor_indexing"))
+               addToChainVulkanStructure(&nextPtr, indexingFeatures);
+       if (context.isDeviceFunctionalitySupported("VK_EXT_inline_uniform_block"))
+               addToChainVulkanStructure(&nextPtr, inlineUniformFeatures);
 
        context.getInstanceInterface().getPhysicalDeviceFeatures2(context.getPhysicalDevice(), &features);
 }
@@ -160,7 +145,7 @@ public:
 
        // These three are indexed by [set][binding]
        vector<vector<VkDescriptorSetLayoutBinding> > layoutBindings;
-       vector<vector<VkDescriptorBindingFlagsEXT> > layoutBindingFlags;
+       vector<vector<VkDescriptorBindingFlags> > layoutBindingFlags;
        vector<vector<deUint32> > arraySizes;
        // size of the variable descriptor (last) binding in each set
        vector<deUint32> variableDescriptorSizes;
@@ -353,7 +338,7 @@ void generateRandomLayout(RandomLayout &randomLayout, const CaseDef &caseDef)
        for (deUint32 s = 0; s < caseDef.numDescriptorSets; ++s)
        {
                vector<VkDescriptorSetLayoutBinding> &bindings = randomLayout.layoutBindings[s];
-               vector<VkDescriptorBindingFlagsEXT> &bindingsFlags = randomLayout.layoutBindingFlags[s];
+               vector<VkDescriptorBindingFlags> &bindingsFlags = randomLayout.layoutBindingFlags[s];
                vector<deUint32> &arraySizes = randomLayout.arraySizes[s];
                int numBindings = randRange(&rnd, minBindings, maxBindings);
 
@@ -364,7 +349,7 @@ void generateRandomLayout(RandomLayout &randomLayout, const CaseDef &caseDef)
                }
 
                bindings = vector<VkDescriptorSetLayoutBinding>(numBindings);
-               bindingsFlags = vector<VkDescriptorBindingFlagsEXT>(numBindings);
+               bindingsFlags = vector<VkDescriptorBindingFlags>(numBindings);
                arraySizes = vector<deUint32>(numBindings);
        }
 
@@ -520,7 +505,7 @@ void generateRandomLayout(RandomLayout &randomLayout, const CaseDef &caseDef)
        for (deUint32 s = 0; s < caseDef.numDescriptorSets; ++s)
        {
                vector<VkDescriptorSetLayoutBinding> &bindings = randomLayout.layoutBindings[s];
-               vector<VkDescriptorBindingFlagsEXT> &bindingsFlags = randomLayout.layoutBindingFlags[s];
+               vector<VkDescriptorBindingFlags> &bindingsFlags = randomLayout.layoutBindingFlags[s];
                vector<deUint32> &variableDescriptorSizes = randomLayout.variableDescriptorSizes;
 
                // Choose a variable descriptor count size. If the feature is not supported, we'll just
@@ -533,7 +518,7 @@ void generateRandomLayout(RandomLayout &randomLayout, const CaseDef &caseDef)
                        randRange(&rnd, 1,4) == 1) // 1 in 4 chance
                {
 
-                       bindingsFlags[bindings.size()-1] |= VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT;
+                       bindingsFlags[bindings.size()-1] |= VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT;
                        variableDescriptorSizes[s] = randRange(&rnd, 0,bindings[bindings.size()-1].descriptorCount);
                        if (bindings[bindings.size()-1].descriptorType == VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT)
                        {
@@ -557,7 +542,7 @@ void DescriptorSetRandomTestCase::initPrograms (SourceCollections& programCollec
        for (deUint32 s = 0; s < m_data.numDescriptorSets; ++s)
        {
                vector<VkDescriptorSetLayoutBinding> &bindings = randomLayout.layoutBindings[s];
-               vector<VkDescriptorBindingFlagsEXT> bindingsFlags = randomLayout.layoutBindingFlags[s];
+               vector<VkDescriptorBindingFlags> bindingsFlags = randomLayout.layoutBindingFlags[s];
                vector<deUint32> &arraySizes = randomLayout.arraySizes[s];
                vector<deUint32> &variableDescriptorSizes = randomLayout.variableDescriptorSizes;
 
@@ -620,7 +605,7 @@ void DescriptorSetRandomTestCase::initPrograms (SourceCollections& programCollec
                                        // Don't access descriptors past the end of the allocated range for
                                        // variable descriptor count
                                        if (b == bindings.size() - 1 &&
-                                               (bindingsFlags[b] & VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT))
+                                               (bindingsFlags[b] & VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT))
                                        {
                                                if (binding.descriptorType == VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT)
                                                {
@@ -860,7 +845,6 @@ tcu::TestStatus DescriptorSetRandomTestInstance::iterate (void)
        RandomLayout randomLayout(m_data.numDescriptorSets);
        generateRandomLayout(randomLayout, m_data);
 
-
        VkPhysicalDeviceProperties2 properties;
        deMemset(&properties, 0, sizeof(properties));
        properties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2;
@@ -881,8 +865,6 @@ tcu::TestStatus DescriptorSetRandomTestInstance::iterate (void)
        VkPhysicalDeviceDescriptorIndexingFeaturesEXT indexingFeatures;
        getNeededFeatures(m_context, features, inlineUniformFeatures, indexingFeatures);
 
-       m_context.getInstanceInterface().getPhysicalDeviceFeatures2(m_context.getPhysicalDevice(), &features);
-
        deRandom rnd;
        deRandom_init(&rnd, m_data.seed);
 
@@ -910,7 +892,7 @@ tcu::TestStatus DescriptorSetRandomTestInstance::iterate (void)
        for (deUint32 s = 0; s < m_data.numDescriptorSets; ++s)
        {
                vector<VkDescriptorSetLayoutBinding> &bindings = randomLayout.layoutBindings[s];
-               vector<VkDescriptorBindingFlagsEXT> &bindingsFlags = randomLayout.layoutBindingFlags[s];
+               vector<VkDescriptorBindingFlags> &bindingsFlags = randomLayout.layoutBindingFlags[s];
                vector<deUint32> &variableDescriptorSizes = randomLayout.variableDescriptorSizes;
 
                VkDescriptorPoolCreateFlags poolCreateFlags = VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT;
@@ -934,25 +916,25 @@ tcu::TestStatus DescriptorSetRandomTestInstance::iterate (void)
                                (binding.descriptorType != VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC) &&
                                (binding.descriptorType != VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC))
                        {
-                               bindingsFlags[b] |= VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT;
+                               bindingsFlags[b] |= VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT;
                                layoutCreateFlags |= VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT;
                                poolCreateFlags |= VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT;
                        }
 
                        if (!indexingFeatures.descriptorBindingVariableDescriptorCount)
                        {
-                               bindingsFlags[b] &= ~VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT;
+                               bindingsFlags[b] &= ~VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT;
                        }
                }
 
                // Create a layout and allocate a descriptor set for it.
 
-               const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT bindingFlagsInfo =
+               const VkDescriptorSetLayoutBindingFlagsCreateInfo bindingFlagsInfo =
                {
                        VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT,  // VkStructureType                                              sType;
                        DE_NULL,                                                                                                                                // const void*                                                  pNext;
                        (deUint32)bindings.size(),                                                                                              // uint32_t                                                             bindingCount;
-                       bindings.empty() ? DE_NULL : bindingsFlags.data(),                                              // const VkDescriptorBindingFlagsEXT*   pBindingFlags;
+                       bindings.empty() ? DE_NULL : bindingsFlags.data(),                                              // const VkDescriptorBindingFlags*      pBindingFlags;
                };
 
                const VkDescriptorSetLayoutCreateInfo setLayoutCreateInfo =
@@ -994,9 +976,9 @@ tcu::TestStatus DescriptorSetRandomTestInstance::iterate (void)
                descriptorPools[s] = poolBuilder.build(vk, device, poolCreateFlags, 1u,
                                                                                           m_data.maxInlineUniformBlocks ? &inlineUniformBlockPoolCreateInfo : DE_NULL);
 
-               VkDescriptorSetVariableDescriptorCountAllocateInfoEXT variableCountInfo =
+               VkDescriptorSetVariableDescriptorCountAllocateInfo variableCountInfo =
                {
-                       VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT,   // VkStructureType      sType;
+                       VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO,               // VkStructureType      sType;
                        DE_NULL,                                                                                                                                                // const void*          pNext;
                        0,                                                                                                                                                              // uint32_t                     descriptorSetCount;
                        DE_NULL,                                                                                                                                                // const uint32_t*      pDescriptorCounts;
@@ -1004,7 +986,7 @@ tcu::TestStatus DescriptorSetRandomTestInstance::iterate (void)
 
                const void *pNext = DE_NULL;
                if (bindings.size() > 0 &&
-                       bindingsFlags[bindings.size()-1] & VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT)
+                       bindingsFlags[bindings.size()-1] & VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT)
                {
                        variableCountInfo.descriptorSetCount = 1;
                        variableCountInfo.pDescriptorCounts = &variableDescriptorSizes[s];
@@ -1362,7 +1344,7 @@ tcu::TestStatus DescriptorSetRandomTestInstance::iterate (void)
        for (deUint32 s = 0; s < m_data.numDescriptorSets; ++s)
        {
                vector<VkDescriptorSetLayoutBinding> &bindings = randomLayout.layoutBindings[s];
-               vector<VkDescriptorBindingFlagsEXT> &bindingsFlags = randomLayout.layoutBindingFlags[s];
+               vector<VkDescriptorBindingFlags> &bindingsFlags = randomLayout.layoutBindingFlags[s];
                vector<deUint32> &arraySizes = randomLayout.arraySizes[s];
                vector<deUint32> &variableDescriptorSizes = randomLayout.variableDescriptorSizes;
 
@@ -1389,13 +1371,13 @@ tcu::TestStatus DescriptorSetRandomTestInstance::iterate (void)
                        // Construct the declaration for the binding
                        if (binding.descriptorCount > 0)
                        {
-                               bool updateAfterBind = !!(bindingsFlags[b] & VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT);
+                               bool updateAfterBind = !!(bindingsFlags[b] & VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT);
                                for (deUint32 ai = 0; ai < de::max(1u, arraySizes[b]); ++ai, descriptor += descriptorIncrement)
                                {
                                        // Don't access descriptors past the end of the allocated range for
                                        // variable descriptor count
                                        if (b == bindings.size() - 1 &&
-                                               (bindingsFlags[b] & VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT))
+                                               (bindingsFlags[b] & VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT))
                                        {
                                                if (binding.descriptorType == VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT)
                                                {
@@ -1450,7 +1432,7 @@ tcu::TestStatus DescriptorSetRandomTestInstance::iterate (void)
 
                                        if (binding.descriptorType == VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT)
                                        {
-                                               VkWriteDescriptorSetInlineUniformBlockEXT inlineUniformBlock =
+                                               VkWriteDescriptorSetInlineUniformBlockEXT iuBlock =
                                                {
                                                        VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT,        // VkStructureType      sType;
                                                        DE_NULL,                                                                                                                        // const void*          pNext;
@@ -1458,7 +1440,7 @@ tcu::TestStatus DescriptorSetRandomTestInstance::iterate (void)
                                                        &descriptorNumber[descriptor],                                                                          // const void*          pData;
                                                };
 
-                                               inlineInfoVec[vecIndex] = inlineUniformBlock;
+                                               inlineInfoVec[vecIndex] = iuBlock;
                                                w.dstArrayElement = ai*16 + 16; // add 16 to skip "ivec4 dummy"
                                                w.pNext = &inlineInfoVec[vecIndex];
                                                w.descriptorCount = sizeof(deUint32);
index 7de0907..e479adb 100644 (file)
@@ -7634,7 +7634,7 @@ deUint32 TexelBufferInstanceBuffers::getViewOffset(vkt::Context&          context,
        if (!hasViewOffset)
                return 0u;
 
-       if (!context.getTexelBufferAlignmentFeatures().texelBufferAlignment)
+       if (!context.getTexelBufferAlignmentFeaturesEXT().texelBufferAlignment)
                return (deUint32)context.getDeviceProperties().limits.minTexelBufferOffsetAlignment;
 
        vk::VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT alignmentProperties;
index cb9d664..64510d1 100644 (file)
@@ -609,7 +609,7 @@ tcu::TestStatus testPrimitivesDepthClamp (Context& context, const VkPrimitiveTop
 //! Primitives partially outside the clip volume, but depth clipped with explicit depth clip control
 tcu::TestStatus testPrimitivesDepthClip (Context& context, const VkPrimitiveTopology topology)
 {
-       if (!context.getDepthClipEnableFeatures().depthClipEnable)
+       if (!context.getDepthClipEnableFeaturesEXT().depthClipEnable)
                throw tcu::NotSupportedError("VK_EXT_depth_clip_enable not supported");
 
        std::vector<VulkanShader> shaders;
index 3cf8ba5..1bf24d2 100644 (file)
@@ -167,8 +167,7 @@ void CooperativeMatrixTestCase::checkSupport(Context& context) const
                TCU_THROW(NotSupportedError, "variable pointers not supported");
        }
 
-       if (m_data.storageClass == SC_PHYSICAL_STORAGE_BUFFER &&
-               !context.getBufferDeviceAddressFeatures().bufferDeviceAddress)
+       if (m_data.storageClass == SC_PHYSICAL_STORAGE_BUFFER && !context.isBufferDeviceAddressSupported())
        {
                TCU_THROW(NotSupportedError, "buffer device address not supported");
        }
@@ -636,6 +635,8 @@ tcu::TestStatus CooperativeMatrixTestInstance::iterate (void)
        const DeviceInterface&  vk                                              = m_context.getDeviceInterface();
        const VkDevice                  device                                  = m_context.getDevice();
        Allocator&                              allocator                               = m_context.getDefaultAllocator();
+       MemoryRequirement               memoryDeviceAddress             = m_data.storageClass == SC_PHYSICAL_STORAGE_BUFFER &&
+                                                                                                         m_context.isDeviceFunctionalitySupported("VK_KHR_buffer_device_address") ? MemoryRequirement::DeviceAddress : MemoryRequirement::Any;
        qpTestResult                    finalres                                = QP_TEST_RESULT_PASS;
        tcu::TestLog&                   log                                             = m_context.getTestContext().getLog();
 
@@ -807,13 +808,13 @@ tcu::TestStatus CooperativeMatrixTestInstance::iterate (void)
                        {
                                buffers[i] = de::MovePtr<BufferWithMemory>(new BufferWithMemory(
                                        vk, device, allocator, makeBufferCreateInfo(bufferSizes[i], VK_BUFFER_USAGE_STORAGE_BUFFER_BIT|VK_BUFFER_USAGE_TRANSFER_DST_BIT|VK_BUFFER_USAGE_TRANSFER_SRC_BIT|VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT),
-                                       MemoryRequirement::HostVisible | MemoryRequirement::Cached | MemoryRequirement::Coherent));
+                                       MemoryRequirement::HostVisible | MemoryRequirement::Cached | MemoryRequirement::Coherent | memoryDeviceAddress));
                        }
                        catch (const tcu::NotSupportedError&)
                        {
                                buffers[i] = de::MovePtr<BufferWithMemory>(new BufferWithMemory(
                                        vk, device, allocator, makeBufferCreateInfo(bufferSizes[i], VK_BUFFER_USAGE_STORAGE_BUFFER_BIT|VK_BUFFER_USAGE_TRANSFER_DST_BIT|VK_BUFFER_USAGE_TRANSFER_SRC_BIT|VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT),
-                                       MemoryRequirement::HostVisible));
+                                       MemoryRequirement::HostVisible | memoryDeviceAddress));
                        }
 
                        bufferDescriptors[i] = makeDescriptorBufferInfo(**buffers[i], 0, bufferSizes[i]);
@@ -843,9 +844,11 @@ tcu::TestStatus CooperativeMatrixTestInstance::iterate (void)
                vk::DescriptorSetUpdateBuilder setUpdateBuilder;
                if (m_data.storageClass == SC_PHYSICAL_STORAGE_BUFFER)
                {
-                       VkBufferDeviceAddressInfoEXT info =
+                       const bool useKHR = m_context.isDeviceFunctionalitySupported("VK_KHR_buffer_device_address");
+
+                       VkBufferDeviceAddressInfo info =
                        {
-                               VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT,       // VkStructureType       sType;
+                               VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO,           // VkStructureType       sType;
                                DE_NULL,                                                                                        // const void*           pNext;
                                0,                                                                                                      // VkBuffer                     buffer
                        };
@@ -853,7 +856,11 @@ tcu::TestStatus CooperativeMatrixTestInstance::iterate (void)
                        for (deUint32 i = 0; i < 4; ++i)
                        {
                                info.buffer = **buffers[i];
-                               VkDeviceAddress addr = vk.getBufferDeviceAddressEXT(device, &info);
+                               VkDeviceAddress addr;
+                               if (useKHR)
+                                       addr = vk.getBufferDeviceAddress(device, &info);
+                               else
+                                       addr = vk.getBufferDeviceAddressEXT(device, &info);
                                addrsInMemory[i] = addr;
                        }
                        setUpdateBuilder.writeSingle(*descriptorSet, vk::DescriptorSetUpdateBuilder::Location::binding(4),
index 5cf344f..352e964 100644 (file)
@@ -306,18 +306,18 @@ void ConditionalDraw::recordDraw(vk::VkCommandBuffer cmdBuffer)
                        }
                        case DRAW_COMMAND_TYPE_DRAW_INDIRECT_COUNT:
                        {
-                               m_vk.cmdDrawIndirectCountKHR(   cmdBuffer,
-                                                                                               m_indirectBuffer->object(), indirectOffset,
-                                                                                               m_indirectCountBuffer->object(), 0, 3,
-                                                                                               sizeof(vk::VkDrawIndirectCommand));
+                               m_vk.cmdDrawIndirectCount(      cmdBuffer,
+                                                                                       m_indirectBuffer->object(), indirectOffset,
+                                                                                       m_indirectCountBuffer->object(), 0, 3,
+                                                                                       sizeof(vk::VkDrawIndirectCommand));
                                break;
                        }
                        case DRAW_COMMAND_TYPE_DRAW_INDEXED_INDIRECT_COUNT:
                        {
-                               m_vk.cmdDrawIndexedIndirectCountKHR(cmdBuffer,
-                                                                                                       m_indirectBuffer->object(), indexedIndirectOffset,
-                                                                                                       m_indirectCountBuffer->object(), 0, 3,
-                                                                                                       sizeof(vk::VkDrawIndexedIndirectCommand));
+                               m_vk.cmdDrawIndexedIndirectCount(cmdBuffer,
+                                                                                                m_indirectBuffer->object(), indexedIndirectOffset,
+                                                                                                m_indirectCountBuffer->object(), 0, 3,
+                                                                                                sizeof(vk::VkDrawIndexedIndirectCommand));
                                break;
                        }
                        default: DE_ASSERT(false);
index feb5099..4afc648 100644 (file)
@@ -38,7 +38,7 @@ void checkConditionalRenderingCapabilities (vkt::Context& context, const Conditi
 
        if (data.conditionInherited)
        {
-               const vk::VkPhysicalDeviceConditionalRenderingFeaturesEXT& conditionalRenderingFeatures = context.getConditionalRenderingFeatures();
+               const vk::VkPhysicalDeviceConditionalRenderingFeaturesEXT& conditionalRenderingFeatures = context.getConditionalRenderingFeaturesEXT();
                if (!conditionalRenderingFeatures.inheritedConditionalRendering)
                {
                        TCU_THROW(NotSupportedError, "Device does not support inherited conditional rendering");
index 04db6ff..eadc217 100644 (file)
@@ -560,30 +560,30 @@ Move<VkDescriptorSetLayout>       CommonDescriptorInstance::createDescriptorSetLayout
                }
        };
 
-       const VkDescriptorBindingFlagsEXT       bindingFlagUpdateAfterBind =
-               m_testParams.updateAfterBind ? VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT : 0;
+       const VkDescriptorBindingFlags  bindingFlagUpdateAfterBind =
+               m_testParams.updateAfterBind ? VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT : 0;
 
-       const VkDescriptorBindingFlagsEXT bindingFlagsExt[] =
+       const VkDescriptorBindingFlags bindingFlags[] =
        {
-               VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT | bindingFlagUpdateAfterBind,
-               VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT | bindingFlagUpdateAfterBind
+               VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT | bindingFlagUpdateAfterBind,
+               VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT | bindingFlagUpdateAfterBind
        };
 
-       const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT    bindingCreateInfoExt =
+       const VkDescriptorSetLayoutBindingFlagsCreateInfo       bindingCreateInfo =
        {
-               VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT,
+               VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO,
                DE_NULL,
                optional ? 2u : 1u,     // bindingCount
-               bindingFlagsExt,        // pBindingFlags
+               bindingFlags,           // pBindingFlags
        };
 
        const VkDescriptorSetLayoutCreateFlags  layoutCreateFlags =
-               m_testParams.updateAfterBind ? VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT : 0;
+               m_testParams.updateAfterBind ? VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT : 0;
 
        const VkDescriptorSetLayoutCreateInfo   layoutCreateInfo =
        {
                VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO,
-               &bindingCreateInfoExt,  // pNext
+               &bindingCreateInfo,             // pNext
                layoutCreateFlags,              // flags
                optional ? 2u : 1u,             // bindingCount
                bindings,                               // pBindings
@@ -594,7 +594,7 @@ Move<VkDescriptorSetLayout> CommonDescriptorInstance::createDescriptorSetLayout
 
 Move<VkDescriptorPool> CommonDescriptorInstance::createDescriptorPool (deUint32                                                        descriptorCount) const
 {
-       const VkDescriptorPoolCreateFlags pcf = m_testParams.updateAfterBind ? VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT : 0;
+       const VkDescriptorPoolCreateFlags pcf = m_testParams.updateAfterBind ? VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT : 0;
 
        DescriptorPoolBuilder builder;
 
index c8a59c1..00709c8 100644 (file)
@@ -191,26 +191,26 @@ bool                                      isDynamicDescriptor             (VkDescriptorType                               descriptorType);
 
 class DeviceProperties
 {
-       VkPhysicalDeviceDescriptorIndexingFeaturesEXT           m_descriptorIndexingFeatures;
+       VkPhysicalDeviceDescriptorIndexingFeatures                      m_descriptorIndexingFeatures;
        VkPhysicalDeviceFeatures2                                                       m_features2;
 
-       VkPhysicalDeviceDescriptorIndexingPropertiesEXT         m_descriptorIndexingProperties;
+       VkPhysicalDeviceDescriptorIndexingProperties            m_descriptorIndexingProperties;
        VkPhysicalDeviceProperties2                                                     m_properties2;
 
 public:
        DeviceProperties (const DeviceProperties& src);
        DeviceProperties (const vkt::Context& testContext);
 
-       inline const VkPhysicalDeviceDescriptorIndexingFeaturesEXT&             descriptorIndexingFeatures      (void) const;
+       inline const VkPhysicalDeviceDescriptorIndexingFeatures&                descriptorIndexingFeatures      (void) const;
        inline const VkPhysicalDeviceProperties&                                                physicalDeviceProperties        (void) const;
-       inline const VkPhysicalDeviceDescriptorIndexingPropertiesEXT&   descriptorIndexingProperties(void) const;
+       inline const VkPhysicalDeviceDescriptorIndexingProperties&              descriptorIndexingProperties(void) const;
        inline const VkPhysicalDeviceFeatures&                                                  physicalDeviceFeatures          (void) const;
 
        deUint32 computeMaxPerStageDescriptorCount      (VkDescriptorType       descriptorType,
                                                                                                 bool                           enableUpdateAfterBind) const;
 };
 
-inline const VkPhysicalDeviceDescriptorIndexingFeaturesEXT& DeviceProperties::descriptorIndexingFeatures (void) const
+inline const VkPhysicalDeviceDescriptorIndexingFeatures& DeviceProperties::descriptorIndexingFeatures (void) const
 {
        return m_descriptorIndexingFeatures;
 }
@@ -220,7 +220,7 @@ inline const VkPhysicalDeviceProperties& DeviceProperties::physicalDevicePropert
        return m_properties2.properties;
 }
 
-inline const VkPhysicalDeviceDescriptorIndexingPropertiesEXT& DeviceProperties::descriptorIndexingProperties (void) const
+inline const VkPhysicalDeviceDescriptorIndexingProperties& DeviceProperties::descriptorIndexingProperties (void) const
 {
        return m_descriptorIndexingProperties;
 }
index 0e71de9..ca7b675 100644 (file)
@@ -667,7 +667,7 @@ DeviceProperties::DeviceProperties (const vkt::Context& testContext)
        const InstanceInterface& interface = testContext.getInstanceInterface();
 
        deMemset(&m_descriptorIndexingFeatures, 0, sizeof(m_descriptorIndexingFeatures));
-       m_descriptorIndexingFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT;
+       m_descriptorIndexingFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES;
        m_descriptorIndexingFeatures.pNext = DE_NULL;
 
        deMemset(&m_features2, 0, sizeof(m_features2));
@@ -677,7 +677,7 @@ DeviceProperties::DeviceProperties (const vkt::Context& testContext)
        interface.getPhysicalDeviceFeatures2(device, &m_features2);
 
        deMemset(&m_descriptorIndexingProperties, 0, sizeof(m_descriptorIndexingProperties));
-       m_descriptorIndexingProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT;
+       m_descriptorIndexingProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES;
        m_descriptorIndexingProperties.pNext = DE_NULL;
 
        deMemset(&m_properties2, 0, sizeof(m_properties2));
@@ -690,8 +690,8 @@ DeviceProperties::DeviceProperties (const vkt::Context& testContext)
 deUint32 DeviceProperties::computeMaxPerStageDescriptorCount   (VkDescriptorType       descriptorType,
                                                                                                                                 bool                           enableUpdateAfterBind) const
 {
-       const VkPhysicalDeviceDescriptorIndexingPropertiesEXT&          descriptorProps = descriptorIndexingProperties();
-       const VkPhysicalDeviceProperties&                                                       deviceProps = physicalDeviceProperties();
+       const VkPhysicalDeviceDescriptorIndexingProperties&             descriptorProps = descriptorIndexingProperties();
+       const VkPhysicalDeviceProperties&                                               deviceProps = physicalDeviceProperties();
 
        deUint32                result                                  = 0;
        deUint32                samplers                                = 0;
index d938af2..f11c511 100644 (file)
@@ -500,9 +500,9 @@ tcu::TestStatus IndirectDraw::iterate (void)
                        case DRAW_TYPE_SEQUENTIAL:
                        {
                                if (m_testIndirectCountExt)
-                                       m_vk.cmdDrawIndirectCountKHR(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer,
-                                                                                                m_indirectCountBuffer->object(), m_offsetInCountBuffer, m_drawCount + m_indirectCountExtDrawPadding,
-                                                                                                m_strideInBuffer);
+                                       m_vk.cmdDrawIndirectCount(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer,
+                                                                                         m_indirectCountBuffer->object(), m_offsetInCountBuffer, m_drawCount + m_indirectCountExtDrawPadding,
+                                                                                         m_strideInBuffer);
                                else
                                        m_vk.cmdDrawIndirect(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer, m_drawCount, m_strideInBuffer);
                                break;
@@ -510,9 +510,9 @@ tcu::TestStatus IndirectDraw::iterate (void)
                        case DRAW_TYPE_INDEXED:
                        {
                                if (m_testIndirectCountExt)
-                                       m_vk.cmdDrawIndexedIndirectCountKHR(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer,
-                                                                                                               m_indirectCountBuffer->object(), m_offsetInCountBuffer, m_drawCount + m_indirectCountExtDrawPadding,
-                                                                                                               m_strideInBuffer);
+                                       m_vk.cmdDrawIndexedIndirectCount(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer,
+                                                                                                        m_indirectCountBuffer->object(), m_offsetInCountBuffer, m_drawCount + m_indirectCountExtDrawPadding,
+                                                                                                        m_strideInBuffer);
                                else
                                        m_vk.cmdDrawIndexedIndirect(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer, m_drawCount, m_strideInBuffer);
                                break;
@@ -530,9 +530,9 @@ tcu::TestStatus IndirectDraw::iterate (void)
                                case DRAW_TYPE_SEQUENTIAL:
                                {
                                        if (m_testIndirectCountExt)
-                                               m_vk.cmdDrawIndirectCountKHR(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer + drawNdx*m_strideInBuffer,
-                                                                                                        m_indirectCountBuffer->object(), m_offsetInCountBuffer, m_drawCount + m_indirectCountExtDrawPadding,
-                                                                                                        m_strideInBuffer);
+                                               m_vk.cmdDrawIndirectCount(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer + drawNdx*m_strideInBuffer,
+                                                                                                 m_indirectCountBuffer->object(), m_offsetInCountBuffer, m_drawCount + m_indirectCountExtDrawPadding,
+                                                                                                 m_strideInBuffer);
                                        else
                                                m_vk.cmdDrawIndirect(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer + drawNdx*m_strideInBuffer, 1u, 0u);
                                        break;
@@ -540,9 +540,9 @@ tcu::TestStatus IndirectDraw::iterate (void)
                                case DRAW_TYPE_INDEXED:
                                {
                                        if (m_testIndirectCountExt)
-                                               m_vk.cmdDrawIndexedIndirectCountKHR(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer + drawNdx*m_strideInBuffer,
-                                                                                                                       m_indirectCountBuffer->object(), m_offsetInCountBuffer, m_drawCount + m_indirectCountExtDrawPadding,
-                                                                                                                       m_strideInBuffer);
+                                               m_vk.cmdDrawIndexedIndirectCount(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer + drawNdx*m_strideInBuffer,
+                                                                                                                m_indirectCountBuffer->object(), m_offsetInCountBuffer, m_drawCount + m_indirectCountExtDrawPadding,
+                                                                                                                m_strideInBuffer);
                                        else
                                                m_vk.cmdDrawIndexedIndirect(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer + drawNdx*m_strideInBuffer, 1u, 0u);
                                        break;
@@ -815,9 +815,9 @@ tcu::TestStatus IndirectDrawInstanced<FirstInstanceSupport>::iterate (void)
                        case DRAW_TYPE_SEQUENTIAL:
                        {
                                if (m_testIndirectCountExt)
-                                       m_vk.cmdDrawIndirectCountKHR(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer,
-                                                                                                m_indirectCountBuffer->object(), m_offsetInCountBuffer,
-                                                                                                m_drawCount + m_indirectCountExtDrawPadding, m_strideInBuffer);
+                                       m_vk.cmdDrawIndirectCount(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer,
+                                                                                         m_indirectCountBuffer->object(), m_offsetInCountBuffer,
+                                                                                         m_drawCount + m_indirectCountExtDrawPadding, m_strideInBuffer);
                                else
                                        m_vk.cmdDrawIndirect(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer, m_drawCount, m_strideInBuffer);
                                break;
@@ -825,9 +825,9 @@ tcu::TestStatus IndirectDrawInstanced<FirstInstanceSupport>::iterate (void)
                        case DRAW_TYPE_INDEXED:
                        {
                                if (m_testIndirectCountExt)
-                                       m_vk.cmdDrawIndexedIndirectCountKHR(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer,
-                                                                                                               m_indirectCountBuffer->object(), m_offsetInCountBuffer,
-                                                                                                               m_drawCount + m_indirectCountExtDrawPadding, m_strideInBuffer);
+                                       m_vk.cmdDrawIndexedIndirectCount(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer,
+                                                                                                        m_indirectCountBuffer->object(), m_offsetInCountBuffer,
+                                                                                                        m_drawCount + m_indirectCountExtDrawPadding, m_strideInBuffer);
                                else
                                        m_vk.cmdDrawIndexedIndirect(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer, m_drawCount, m_strideInBuffer);
                                break;
@@ -845,9 +845,9 @@ tcu::TestStatus IndirectDrawInstanced<FirstInstanceSupport>::iterate (void)
                                case DRAW_TYPE_SEQUENTIAL:
                                {
                                        if (m_testIndirectCountExt)
-                                               m_vk.cmdDrawIndirectCountKHR(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer + drawNdx*m_strideInBuffer,
-                                                                                                        m_indirectCountBuffer->object(), m_offsetInCountBuffer, m_drawCount + m_indirectCountExtDrawPadding,
-                                                                                                        m_strideInBuffer);
+                                               m_vk.cmdDrawIndirectCount(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer + drawNdx*m_strideInBuffer,
+                                                                                                 m_indirectCountBuffer->object(), m_offsetInCountBuffer, m_drawCount + m_indirectCountExtDrawPadding,
+                                                                                                 m_strideInBuffer);
                                        else
                                                m_vk.cmdDrawIndirect(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer + drawNdx*m_strideInBuffer, 1u, 0u);
                                        break;
@@ -855,9 +855,9 @@ tcu::TestStatus IndirectDrawInstanced<FirstInstanceSupport>::iterate (void)
                                case DRAW_TYPE_INDEXED:
                                {
                                        if (m_testIndirectCountExt)
-                                               m_vk.cmdDrawIndexedIndirectCountKHR(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer + drawNdx*m_strideInBuffer,
-                                                                                                                       m_indirectCountBuffer->object(), m_offsetInCountBuffer, m_drawCount + m_indirectCountExtDrawPadding,
-                                                                                                                       m_strideInBuffer);
+                                               m_vk.cmdDrawIndexedIndirectCount(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer + drawNdx*m_strideInBuffer,
+                                                                                                                m_indirectCountBuffer->object(), m_offsetInCountBuffer, m_drawCount + m_indirectCountExtDrawPadding,
+                                                                                                                m_strideInBuffer);
                                        else
                                                m_vk.cmdDrawIndexedIndirect(*m_cmdBuffer, m_indirectBuffer->object(), m_offsetInBuffer + drawNdx*m_strideInBuffer, 1u, 0u);
                                        break;
index d4a75cf..f0df4a2 100644 (file)
@@ -292,7 +292,7 @@ public:
                {
                        context.requireDeviceFunctionality("VK_EXT_vertex_attribute_divisor");
 
-                       const vk::VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT& vertexAttributeDivisorFeatures = context.getVertexAttributeDivisorFeatures();
+                       const vk::VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT& vertexAttributeDivisorFeatures = context.getVertexAttributeDivisorFeaturesEXT();
 
                        if (m_params.attribDivisor != 1 && !vertexAttributeDivisorFeatures.vertexAttributeInstanceRateDivisor)
                                TCU_THROW(NotSupportedError, "Implementation does not support vertexAttributeInstanceRateDivisor");
index f7ccb37..dcdbf40 100644 (file)
@@ -154,19 +154,19 @@ void FSITestCase::checkSupport(Context& context) const
        context.requireDeviceFunctionality("VK_EXT_fragment_shader_interlock");
 
        if ((m_data.interlock == INT_SAMPLE_ORDERED || m_data.interlock == INT_SAMPLE_UNORDERED) &&
-               !context.getFragmentShaderInterlockFeatures().fragmentShaderSampleInterlock)
+               !context.getFragmentShaderInterlockFeaturesEXT().fragmentShaderSampleInterlock)
        {
                TCU_THROW(NotSupportedError, "Fragment shader sample interlock not supported");
        }
 
        if ((m_data.interlock == INT_PIXEL_ORDERED || m_data.interlock == INT_PIXEL_UNORDERED) &&
-               !context.getFragmentShaderInterlockFeatures().fragmentShaderPixelInterlock)
+               !context.getFragmentShaderInterlockFeaturesEXT().fragmentShaderPixelInterlock)
        {
                TCU_THROW(NotSupportedError, "Fragment shader pixel interlock not supported");
        }
 
        if ((m_data.interlock == INT_SHADING_RATE_ORDERED || m_data.interlock == INT_SHADING_RATE_UNORDERED) &&
-               !context.getFragmentShaderInterlockFeatures().fragmentShaderShadingRateInterlock)
+               !context.getFragmentShaderInterlockFeaturesEXT().fragmentShaderShadingRateInterlock)
        {
                TCU_THROW(NotSupportedError, "Fragment shader shading rate interlock not supported");
        }
index 44eff95..081e6c7 100644 (file)
@@ -652,7 +652,7 @@ deUint32 BaseTestInstance::getViewOffset(Context&                   context,
 {
        if (m_minalign)
        {
-               if (!context.getTexelBufferAlignmentFeatures().texelBufferAlignment)
+               if (!context.getTexelBufferAlignmentFeaturesEXT().texelBufferAlignment)
                        return (deUint32)context.getDeviceProperties().limits.minTexelBufferOffsetAlignment;
 
                VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT alignmentProperties;
index 0cac4d8..72299d4 100644 (file)
@@ -525,7 +525,7 @@ Move<VkImage> makeImage (const DeviceInterface&             vk,
                viewFormat
        };
 
-       const VkImageFormatListCreateInfoKHR formatListInfo =
+       const VkImageFormatListCreateInfo formatListInfo =
        {
                VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR,    // VkStructureType                      sType;
                DE_NULL,                                                                                                // const void*                          pNext;
@@ -2023,7 +2023,7 @@ Move<VkSwapchainKHR> makeSwapchain(const DeviceInterface&         vk,
                viewFormat
        };
 
-       const VkImageFormatListCreateInfoKHR formatListInfo =
+       const VkImageFormatListCreateInfo formatListInfo =
        {
                VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR,    // VkStructureType                      sType;
                DE_NULL,                                                                                                // const void*                          pNext;
@@ -2104,8 +2104,8 @@ tcu::TestStatus testSwapchainMutable(Context& context, CaseDef caseDef)
 
        // Check support for requested formats by swapchain surface
        const vector<VkSurfaceFormatKHR>surfaceFormats = getPhysicalDeviceSurfaceFormats(vki,
-                                                                                                                                                                                physDevice,
-                                                                                                                                                                                *surface);
+                                                                                                                                                                        physDevice,
+                                                                                                                                                                        *surface);
 
        const VkSurfaceFormatKHR*               surfaceFormat = DE_NULL;
        const VkFormat*                                 viewFormat = DE_NULL;
index 7b44df9..8db36cb 100644 (file)
@@ -111,11 +111,11 @@ VkSampleCountFlagBits sampleCountBitFromSampleCount (deUint32 count)
        }
 }
 
-VkAttachmentReference2KHR convertAttachmentReference (const VkAttachmentReference& attachmentReference, const VkImageAspectFlags aspectMask)
+VkAttachmentReference2 convertAttachmentReference (const VkAttachmentReference& attachmentReference, const VkImageAspectFlags aspectMask)
 {
-       const VkAttachmentReference2KHR attachmentReference2    =
+       const VkAttachmentReference2    attachmentReference2    =
        {
-               VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR,   //  VkStructureType             sType;
+               VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2,               //  VkStructureType             sType;
                DE_NULL,                                                                                //  const void*                 pNext;
                attachmentReference.attachment,                                 //  deUint32                    attachment;
                attachmentReference.layout,                                             //  VkImageLayout               layout;
@@ -125,18 +125,18 @@ VkAttachmentReference2KHR convertAttachmentReference (const VkAttachmentReferenc
        return attachmentReference2;
 }
 
-std::vector<VkAttachmentDescription2KHR> convertAttachmentDescriptions (const std::vector<VkAttachmentDescription>& attachmentDescriptions)
+std::vector<VkAttachmentDescription2> convertAttachmentDescriptions (const std::vector<VkAttachmentDescription>& attachmentDescriptions)
 {
-       std::vector<VkAttachmentDescription2KHR>        attachmentDescriptions2;
+       std::vector<VkAttachmentDescription2>   attachmentDescriptions2;
 
        attachmentDescriptions2.reserve(attachmentDescriptions.size());
 
        for (size_t adNdx = 0; adNdx < attachmentDescriptions.size(); ++adNdx)
        {
                const VkAttachmentDescription&          attachmentDescription   = attachmentDescriptions[adNdx];
-               const VkAttachmentDescription2KHR       attachmentDescription2  =
+               const VkAttachmentDescription2          attachmentDescription2  =
                {
-                       VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR, //  VkStructureType                                     sType;
+                       VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2,             //  VkStructureType                                     sType;
                        DE_NULL,                                                                                //  const void*                                         pNext;
                        attachmentDescription.flags,                                    //  VkAttachmentDescriptionFlags        flags;
                        attachmentDescription.format,                                   //  VkFormat                                            format;
@@ -327,58 +327,58 @@ Move<VkRenderPass> makeRenderPass (const DeviceInterface&                         vk,
        {
                const VkImageAspectFlags                                                        colorAspectMask                                                 = VK_IMAGE_ASPECT_COLOR_BIT;
                const VkImageAspectFlags                                                        depthStencilAspectMask                                  = VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT;
-               const VkAttachmentReference2KHR                                         colorAttachmentRef2                                             = convertAttachmentReference(colorAttachmentRef, colorAspectMask);
-               const VkAttachmentReference2KHR                                         depthStencilAttachmentRef2                              = convertAttachmentReference(depthStencilAttachmentRef, depthStencilAspectMask);
-               const VkAttachmentReference2KHR                                         colorResolveAttachmentRef2                              = convertAttachmentReference(colorResolveAttachmentRef, colorAspectMask);
-               const VkAttachmentReference2KHR                                         depthStencilResolveAttachmentRef2               =
+               const VkAttachmentReference2                                            colorAttachmentRef2                                             = convertAttachmentReference(colorAttachmentRef, colorAspectMask);
+               const VkAttachmentReference2                                            depthStencilAttachmentRef2                              = convertAttachmentReference(depthStencilAttachmentRef, depthStencilAspectMask);
+               const VkAttachmentReference2                                            colorResolveAttachmentRef2                              = convertAttachmentReference(colorResolveAttachmentRef, colorAspectMask);
+               const VkAttachmentReference2                                            depthStencilResolveAttachmentRef2               =
                {
-                       VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR,                   //  VkStructureType             sType;
+                       VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2,                               //  VkStructureType             sType;
                        DE_NULL,                                                                                                //  const void*                 pNext;
                        hasDepthStencilResolve ? attachmentCounter++ : 0u,              //  deUint32                    attachment;
                        subpassLayoutDepthStencil,                                                              //  VkImageLayout               layout;
                        depthStencilAspectMask                                                                  //  VkImageAspectFlags  aspectMask;
                };
-               const VkSubpassDescriptionDepthStencilResolveKHR        subpassDescriptionDepthStencilResolve   =
+               const VkSubpassDescriptionDepthStencilResolve           subpassDescriptionDepthStencilResolve   =
                {
-                       VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR,        //  VkStructureType                                             sType;
+                       VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE,            //  VkStructureType                                             sType;
                        DE_NULL,                                                                                                                        //  const void*                                                 pNext;
-                       VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR,                                                            //  VkResolveModeFlagBitsKHR                    depthResolveMode;
-                       VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR,                                                            //  VkResolveModeFlagBitsKHR                    stencilResolveMode;
+                       VK_RESOLVE_MODE_SAMPLE_ZERO_BIT,                                                                        //  VkResolveModeFlagBitsKHR                    depthResolveMode;
+                       VK_RESOLVE_MODE_SAMPLE_ZERO_BIT,                                                                        //  VkResolveModeFlagBitsKHR                    stencilResolveMode;
                        &depthStencilResolveAttachmentRef2                                                                      //  const VkAttachmentReference2KHR*    pDepthStencilResolveAttachment;
                };
-               const VkSubpassDescription2KHR                                          subpassDescription2                                             =
+               const VkSubpassDescription2                                                     subpassDescription2                                             =
                {
-                       VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR,                            //  VkStructureType                                             sType;
+                       VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2,                                        //  VkStructureType                                             sType;
                        &subpassDescriptionDepthStencilResolve,                                         //  const void*                                                 pNext;
                        (VkSubpassDescriptionFlags)0,                                                           //  VkSubpassDescriptionFlags                   flags;
                        VK_PIPELINE_BIND_POINT_GRAPHICS,                                                        //  VkPipelineBindPoint                                 pipelineBindPoint;
                        0u,                                                                                                                     //  deUint32                                                    viewMask;
                        0u,                                                                                                                     //  deUint32                                                    inputAttachmentCount;
-                       DE_NULL,                                                                                                        //  const VkAttachmentReference2KHR*    pInputAttachments;
+                       DE_NULL,                                                                                                        //  const VkAttachmentReference2*               pInputAttachments;
                        hasColor ? 1u : 0u,                                                                                     //  deUint32                                                    colorAttachmentCount;
-                       hasColor ? &colorAttachmentRef2 : DE_NULL,                                      //  const VkAttachmentReference2KHR*    pColorAttachments;
-                       hasColorResolve ? &colorResolveAttachmentRef2 : DE_NULL,        //  const VkAttachmentReference2KHR*    pResolveAttachments;
-                       hasDepthStencil ? &depthStencilAttachmentRef2 : DE_NULL,        //  const VkAttachmentReference2KHR*    pDepthStencilAttachment;
+                       hasColor ? &colorAttachmentRef2 : DE_NULL,                                      //  const VkAttachmentReference2*               pColorAttachments;
+                       hasColorResolve ? &colorResolveAttachmentRef2 : DE_NULL,        //  const VkAttachmentReference2*               pResolveAttachments;
+                       hasDepthStencil ? &depthStencilAttachmentRef2 : DE_NULL,        //  const VkAttachmentReference2*               pDepthStencilAttachment;
                        0u,                                                                                                                     //  deUint32                                                    preserveAttachmentCount;
                        DE_NULL                                                                                                         //  const deUint32*                                             pPreserveAttachments;
                };
-               const std::vector<VkAttachmentDescription2KHR>          attachmentDescriptions2                                 = convertAttachmentDescriptions(attachmentDescriptions);
-               const VkRenderPassCreateInfo2KHR                                        renderPassInfo                                                  =
+               const std::vector<VkAttachmentDescription2>                     attachmentDescriptions2                                 = convertAttachmentDescriptions(attachmentDescriptions);
+               const VkRenderPassCreateInfo2                                           renderPassInfo                                                  =
                {
-                       VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR,        //  VkStructureType                                             sType;
+                       VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2,            //  VkStructureType                                             sType;
                        DE_NULL,                                                                                        //  const void*                                                 pNext;
                        (VkRenderPassCreateFlags)0,                                                     //  VkRenderPassCreateFlags                             flags;
                        (deUint32)attachmentDescriptions2.size(),                       //  deUint32                                                    attachmentCount;
-                       &attachmentDescriptions2[0],                                            //  const VkAttachmentDescription2KHR*  pAttachments;
+                       &attachmentDescriptions2[0],                                            //  const VkAttachmentDescription2*             pAttachments;
                        1u,                                                                                                     //  deUint32                                                    subpassCount;
-                       &subpassDescription2,                                                           //  const VkSubpassDescription2KHR*             pSubpasses;
+                       &subpassDescription2,                                                           //  const VkSubpassDescription2*                pSubpasses;
                        0u,                                                                                                     //  deUint32                                                    dependencyCount;
-                       DE_NULL,                                                                                        //  const VkSubpassDependency2KHR*              pDependencies;
+                       DE_NULL,                                                                                        //  const VkSubpassDependency2*                 pDependencies;
                        0u,                                                                                                     //  deUint32                                                    correlatedViewMaskCount;
                        DE_NULL                                                                                         //  const deUint32*                                             pCorrelatedViewMasks;
                };
 
-               return createRenderPass2KHR(vk, device, &renderPassInfo, allocationCallbacks);
+               return createRenderPass2(vk, device, &renderPassInfo, allocationCallbacks);
        }
        else
        {
@@ -493,7 +493,7 @@ Move<VkRenderPass> makeRenderPass (const DeviceInterface&                           vk,
                VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,                  //  VkPipelineStageFlags                        dstStageMask;
                VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,                   //  VkAccessFlags                                       srcAccessMask;
                VK_ACCESS_INPUT_ATTACHMENT_READ_BIT,                    //  VkAccessFlags                                       dstAccessMask;
-               VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR,                               //  VkDependencyFlags                           dependencyFlags;
+               VK_DEPENDENCY_VIEW_LOCAL_BIT,                                   //  VkDependencyFlags                           dependencyFlags;
        };
        const VkRenderPassCreateInfo    renderPassInfo                          =
        {
@@ -535,26 +535,26 @@ VkImageCreateInfo makeImageCreateInfo (const VkFormat format, const VkExtent2D s
        return imageParams;
 }
 
-std::vector<VkFramebufferAttachmentImageInfoKHR> makeFramebufferAttachmentImageInfos (const VkExtent2D&                        renderSize,
-                                                                                                                                                                         const VkFormat*                       colorFormat,
-                                                                                                                                                                         const VkImageUsageFlags       colorUsage,
-                                                                                                                                                                         const VkFormat*                       dsFormat,
-                                                                                                                                                                         const VkImageUsageFlags       dsUsage,
-                                                                                                                                                                         const AspectFlags                     resolveAspects,
-                                                                                                                                                                         const deUint32                        inputAttachmentCount)
+std::vector<VkFramebufferAttachmentImageInfo> makeFramebufferAttachmentImageInfos (const VkExtent2D&                   renderSize,
+                                                                                                                                                                  const VkFormat*                              colorFormat,
+                                                                                                                                                                  const VkImageUsageFlags              colorUsage,
+                                                                                                                                                                  const VkFormat*                              dsFormat,
+                                                                                                                                                                  const VkImageUsageFlags              dsUsage,
+                                                                                                                                                                  const AspectFlags                    resolveAspects,
+                                                                                                                                                                  const deUint32                               inputAttachmentCount)
 {
-       const bool                                                                                      colorResolve                                    = (resolveAspects & ASPECT_COLOR) != 0;
-       const bool                                                                                      depthStencilResolve                             = (resolveAspects & ASPECT_DEPTH_STENCIL) != 0;
-       std::vector<VkFramebufferAttachmentImageInfoKHR>        framebufferAttachmentImageInfos;
+       const bool                                                                              colorResolve                                    = (resolveAspects & ASPECT_COLOR) != 0;
+       const bool                                                                              depthStencilResolve                             = (resolveAspects & ASPECT_DEPTH_STENCIL) != 0;
+       std::vector<VkFramebufferAttachmentImageInfo>   framebufferAttachmentImageInfos;
 
        DE_ASSERT(colorFormat != DE_NULL);
        DE_ASSERT(dsFormat != DE_NULL);
 
        if (*colorFormat != VK_FORMAT_UNDEFINED)
        {
-               const VkFramebufferAttachmentImageInfoKHR       framebufferAttachmentImageInfo          =
+               const VkFramebufferAttachmentImageInfo framebufferAttachmentImageInfo           =
                {
-                       VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR,        //  VkStructureType             sType;
+                       VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO,            //  VkStructureType             sType;
                        DE_NULL,                                                                                                        //  const void*                 pNext;
                        (VkImageCreateFlags)0u,                                                                         //  VkImageCreateFlags  flags;
                        colorUsage,                                                                                                     //  VkImageUsageFlags   usage;
@@ -570,9 +570,9 @@ std::vector<VkFramebufferAttachmentImageInfoKHR> makeFramebufferAttachmentImageI
 
        if (*dsFormat != VK_FORMAT_UNDEFINED)
        {
-               const VkFramebufferAttachmentImageInfoKHR       framebufferAttachmentImageInfo          =
+               const VkFramebufferAttachmentImageInfo framebufferAttachmentImageInfo           =
                {
-                       VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR,        //  VkStructureType             sType;
+                       VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO,            //  VkStructureType             sType;
                        DE_NULL,                                                                                                        //  const void*                 pNext;
                        (VkImageCreateFlags)0u,                                                                         //  VkImageCreateFlags  flags;
                        dsUsage,                                                                                                        //  VkImageUsageFlags   usage;
@@ -588,9 +588,9 @@ std::vector<VkFramebufferAttachmentImageInfoKHR> makeFramebufferAttachmentImageI
 
        if (colorResolve)
        {
-               const VkFramebufferAttachmentImageInfoKHR       framebufferAttachmentImageInfo          =
+               const VkFramebufferAttachmentImageInfo framebufferAttachmentImageInfo           =
                {
-                       VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR,        //  VkStructureType             sType;
+                       VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO,            //  VkStructureType             sType;
                        DE_NULL,                                                                                                        //  const void*                 pNext;
                        (VkImageCreateFlags)0u,                                                                         //  VkImageCreateFlags  flags;
                        colorUsage,                                                                                                     //  VkImageUsageFlags   usage;
@@ -608,9 +608,9 @@ std::vector<VkFramebufferAttachmentImageInfoKHR> makeFramebufferAttachmentImageI
 
        if (depthStencilResolve)
        {
-               const VkFramebufferAttachmentImageInfoKHR       framebufferAttachmentImageInfo          =
+               const VkFramebufferAttachmentImageInfo framebufferAttachmentImageInfo           =
                {
-                       VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR,        //  VkStructureType             sType;
+                       VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO,            //  VkStructureType             sType;
                        DE_NULL,                                                                                                        //  const void*                 pNext;
                        (VkImageCreateFlags)0u,                                                                         //  VkImageCreateFlags  flags;
                        dsUsage,                                                                                                        //  VkImageUsageFlags   usage;
@@ -628,9 +628,9 @@ std::vector<VkFramebufferAttachmentImageInfoKHR> makeFramebufferAttachmentImageI
 
        for (deUint32 inputAttachmentNdx = 0; inputAttachmentNdx < inputAttachmentCount; ++inputAttachmentNdx)
        {
-               const VkFramebufferAttachmentImageInfoKHR       framebufferAttachmentImageInfo          =
+               const VkFramebufferAttachmentImageInfo framebufferAttachmentImageInfo           =
                {
-                       VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR,        //  VkStructureType             sType;
+                       VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO,            //  VkStructureType             sType;
                        DE_NULL,                                                                                                        //  const void*                 pNext;
                        (VkImageCreateFlags)0u,                                                                         //  VkImageCreateFlags  flags;
                        colorUsage | VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT,                       //  VkImageUsageFlags   usage;
@@ -658,20 +658,20 @@ Move<VkFramebuffer> makeFramebuffer (const DeviceInterface&                       vk,
                                                                         const AspectFlags                              resolveAspects                  = ASPECT_NONE,
                                                                         const deUint32                                 inputAttachmentCount    = 0)
 {
-       const std::vector<VkFramebufferAttachmentImageInfoKHR>  framebufferAttachmentImageInfos         = makeFramebufferAttachmentImageInfos(renderSize, colorFormat, colorUsage, dsFormat, dsUsage, resolveAspects, inputAttachmentCount);
+       const std::vector<VkFramebufferAttachmentImageInfo>             framebufferAttachmentImageInfos         = makeFramebufferAttachmentImageInfos(renderSize, colorFormat, colorUsage, dsFormat, dsUsage, resolveAspects, inputAttachmentCount);
        const deUint32                                                                                  attachmentCount                                         = static_cast<deUint32>(framebufferAttachmentImageInfos.size());
-       const VkFramebufferAttachmentsCreateInfoKHR                             framebufferAttachmentsCreateInfo        =
+       const VkFramebufferAttachmentsCreateInfo                                framebufferAttachmentsCreateInfo        =
        {
-               VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR,      //  VkStructureType                                                             sType;
+               VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO,          //  VkStructureType                                                             sType;
                DE_NULL,                                                                                                        //  const void*                                                                 pNext;
                attachmentCount,                                                                                        //  deUint32                                                                    attachmentImageInfoCount;
-               &framebufferAttachmentImageInfos[0]                                                     //  const VkFramebufferAttachmentImageInfoKHR*  pAttachmentImageInfos;
+               &framebufferAttachmentImageInfos[0]                                                     //  const VkFramebufferAttachmentImageInfo*             pAttachmentImageInfos;
        };
        const VkFramebufferCreateInfo                                                   framebufferInfo =
        {
                VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO,                                      //  VkStructureType                             sType;
                &framebufferAttachmentsCreateInfo,                                                      //  const void*                                 pNext;
-               VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR,                                        //  VkFramebufferCreateFlags    flags;
+               VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT,                                            //  VkFramebufferCreateFlags    flags;
                renderPass,                                                                                                     //  VkRenderPass                                renderPass;
                attachmentCount,                                                                                        //  deUint32                                    attachmentCount;
                DE_NULL,                                                                                                        //  const VkImageView*                  pAttachments;
@@ -960,7 +960,7 @@ ColorImagelessTestInstance::ColorImagelessTestInstance (Context& context, const
 {
        const InstanceInterface&                                                                vki                                                             = m_context.getInstanceInterface();
        const VkPhysicalDevice                                                                  physDevice                                              = m_context.getPhysicalDevice();
-       const VkPhysicalDeviceImagelessFramebufferFeaturesKHR&  imagelessFramebufferFeatures    (context.getImagelessFramebufferFeatures());
+       const VkPhysicalDeviceImagelessFramebufferFeatures&             imagelessFramebufferFeatures    (context.getImagelessFramebufferFeatures());
 
        if (imagelessFramebufferFeatures.imagelessFramebuffer == DE_FALSE)
                TCU_THROW(NotSupportedError, "Imageless framebuffer is not supported");
@@ -1229,9 +1229,9 @@ tcu::TestStatus ColorImagelessTestInstance::iterate (void)
 
        beginCommandBuffer(vk, *cmdBuffer);
        {
-               const VkRenderPassAttachmentBeginInfoKHR        renderPassAttachmentBeginInfo   =
+               const VkRenderPassAttachmentBeginInfo           renderPassAttachmentBeginInfo   =
                {
-                       VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR,        //  VkStructureType             sType;
+                       VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO,            //  VkStructureType             sType;
                        DE_NULL,                                                                                                        //  const void*                 pNext;
                        1u,                                                                                                                     //  deUint32                    attachmentCount;
                        &*colorAttachment                                                                                       //  const VkImageView*  pAttachments;
@@ -1462,9 +1462,9 @@ tcu::TestStatus DepthImagelessTestInstance::iterate (void)
        beginCommandBuffer(vk, *cmdBuffer);
        {
                const VkImageView                                                       attachments[]                                   = { *colorAttachment, *dsAttachment };
-               const VkRenderPassAttachmentBeginInfoKHR        renderPassAttachmentBeginInfo   =
+               const VkRenderPassAttachmentBeginInfo           renderPassAttachmentBeginInfo   =
                {
-                       VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR,        //  VkStructureType             sType;
+                       VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO,            //  VkStructureType             sType;
                        DE_NULL,                                                                                                        //  const void*                 pNext;
                        DE_LENGTH_OF_ARRAY(attachments),                                                        //  deUint32                    attachmentCount;
                        attachments                                                                                                     //  const VkImageView*  pAttachments;
@@ -1665,9 +1665,9 @@ tcu::TestStatus ColorResolveImagelessTestInstance::iterate (void)
        beginCommandBuffer(vk, *cmdBuffer);
        {
                const VkImageView                                                       attachments[]                                   = { *colorAttachment, *colorResolveAttachment };
-               const VkRenderPassAttachmentBeginInfoKHR        renderPassAttachmentBeginInfo   =
+               const VkRenderPassAttachmentBeginInfo           renderPassAttachmentBeginInfo   =
                {
-                       VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR,        //  VkStructureType             sType;
+                       VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO,            //  VkStructureType             sType;
                        DE_NULL,                                                                                                        //  const void*                 pNext;
                        DE_LENGTH_OF_ARRAY(attachments),                                                        //  deUint32                    attachmentCount;
                        attachments                                                                                                     //  const VkImageView*  pAttachments;
@@ -1753,7 +1753,7 @@ DepthResolveImagelessTestInstance::DepthResolveImagelessTestInstance (Context& c
        const InstanceInterface&                                                        vki                                     = m_context.getInstanceInterface();
        const VkPhysicalDevice                                                          physDevice                      = m_context.getPhysicalDevice();
        VkPhysicalDeviceProperties2                                                     deviceProperties;
-       VkPhysicalDeviceDepthStencilResolvePropertiesKHR        dsResolveProperties;
+       VkPhysicalDeviceDepthStencilResolveProperties           dsResolveProperties;
 
        deMemset(&deviceProperties, 0, sizeof(deviceProperties));
        deMemset(&dsResolveProperties, 0, sizeof(dsResolveProperties));
@@ -1761,7 +1761,7 @@ DepthResolveImagelessTestInstance::DepthResolveImagelessTestInstance (Context& c
        deviceProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2;
        deviceProperties.pNext = &dsResolveProperties;
 
-       dsResolveProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR;
+       dsResolveProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES;
        dsResolveProperties.pNext = DE_NULL;
 
        vki.getPhysicalDeviceProperties2(physDevice, &deviceProperties);
@@ -1965,9 +1965,9 @@ tcu::TestStatus DepthResolveImagelessTestInstance::iterate (void)
        beginCommandBuffer(vk, *cmdBuffer);
        {
                const VkImageView                                                       attachments[]                                   = { *colorAttachment, *dsAttachment, *colorResolveAttachment, *dsResolveAttachment };
-               const VkRenderPassAttachmentBeginInfoKHR        renderPassAttachmentBeginInfo   =
+               const VkRenderPassAttachmentBeginInfo           renderPassAttachmentBeginInfo   =
                {
-                       VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR,        //  VkStructureType             sType;
+                       VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO,            //  VkStructureType             sType;
                        DE_NULL,                                                                                                        //  const void*                 pNext;
                        DE_LENGTH_OF_ARRAY(attachments),                                                        //  deUint32                    attachmentCount;
                        attachments                                                                                                     //  const VkImageView*  pAttachments;
@@ -2229,9 +2229,9 @@ tcu::TestStatus MultisubpassTestInstance::iterate (void)
        beginCommandBuffer(vk, *cmdBuffer);
        {
                const VkImageView                                                       attachments[]                                   = { *color0Attachment, *color1Attachment };
-               const VkRenderPassAttachmentBeginInfoKHR        renderPassAttachmentBeginInfo   =
+               const VkRenderPassAttachmentBeginInfo           renderPassAttachmentBeginInfo   =
                {
-                       VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR,        //  VkStructureType             sType;
+                       VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO,            //  VkStructureType             sType;
                        DE_NULL,                                                                                                        //  const void*                 pNext;
                        DE_LENGTH_OF_ARRAY(attachments),                                                        //  deUint32                    attachmentCount;
                        &attachments[0]                                                                                         //  const VkImageView*  pAttachments;
index 27815e1..15f085f 100644 (file)
@@ -953,7 +953,7 @@ public:
        {
                ctx.requireDeviceFunctionality("VK_KHR_bind_memory2");
 
-               if (m_params.usePriority && !ctx.getMemoryPriorityFeatures().memoryPriority)
+               if (m_params.usePriority && !ctx.getMemoryPriorityFeaturesEXT().memoryPriority)
                        TCU_THROW(NotSupportedError, "VK_EXT_memory_priority Not supported");
        }
 
index 2ba8fdc..1a82e4a 100644 (file)
@@ -234,8 +234,7 @@ void MemoryModelTestCase::checkSupport(Context& context) const
                !context.getVulkanMemoryModelFeatures().vulkanMemoryModelAvailabilityVisibilityChains)
                TCU_THROW(NotSupportedError, "vulkanMemoryModelAvailabilityVisibilityChains not supported");
 
-       if ((m_data.payloadSC == SC_PHYSBUFFER || m_data.guardSC == SC_PHYSBUFFER) &&
-               !context.getBufferDeviceAddressFeatures().bufferDeviceAddress)
+       if ((m_data.payloadSC == SC_PHYSBUFFER || m_data.guardSC == SC_PHYSBUFFER) && !context.isBufferDeviceAddressSupported())
                TCU_THROW(NotSupportedError, "Physical storage buffer pointers not supported");
 
        if (m_data.stage == STAGE_VERTEX)
@@ -975,6 +974,8 @@ tcu::TestStatus MemoryModelTestInstance::iterate (void)
 
                vk::VkFlags usageFlags = vk::VK_BUFFER_USAGE_STORAGE_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT | VK_BUFFER_USAGE_TRANSFER_SRC_BIT;
 
+               bool memoryDeviceAddress = false;
+
                bool local;
                switch (i)
                {
@@ -984,14 +985,22 @@ tcu::TestStatus MemoryModelTestInstance::iterate (void)
                                continue;
                        local = m_data.payloadMemLocal;
                        if (m_data.payloadSC == SC_PHYSBUFFER)
-                               usageFlags |= vk::VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT;
+                       {
+                               usageFlags |= vk::VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT;
+                               if (m_context.isDeviceFunctionalitySupported("VK_KHR_buffer_device_address"))
+                                       memoryDeviceAddress = true;
+                       }
                        break;
                case 1:
                        if (m_data.guardSC != SC_BUFFER && m_data.guardSC != SC_PHYSBUFFER)
                                continue;
                        local = m_data.guardMemLocal;
                        if (m_data.guardSC == SC_PHYSBUFFER)
-                               usageFlags |= vk::VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT;
+                       {
+                               usageFlags |= vk::VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT;
+                               if (m_context.isDeviceFunctionalitySupported("VK_KHR_buffer_device_address"))
+                                       memoryDeviceAddress = true;
+                       }
                        break;
                case 2: local = true; break;
                }
@@ -1000,7 +1009,8 @@ tcu::TestStatus MemoryModelTestInstance::iterate (void)
                {
                        buffers[i] = de::MovePtr<BufferWithMemory>(new BufferWithMemory(
                                vk, device, allocator, makeBufferCreateInfo(bufferSizes[i], usageFlags),
-                               local ? MemoryRequirement::Local : MemoryRequirement::NonLocal));
+                               (memoryDeviceAddress ? MemoryRequirement::DeviceAddress : MemoryRequirement::Any) |
+                               (local ? MemoryRequirement::Local : MemoryRequirement::NonLocal)));
                }
                catch (const tcu::NotSupportedError&)
                {
@@ -1423,11 +1433,11 @@ tcu::TestStatus MemoryModelTestInstance::iterate (void)
        Move<VkCommandPool>                             cmdPool                                 = createCommandPool(vk, device, VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT, m_context.getUniversalQueueFamilyIndex());
        Move<VkCommandBuffer>                   cmdBuffer                               = allocateCommandBuffer(vk, device, *cmdPool, VK_COMMAND_BUFFER_LEVEL_PRIMARY);
 
-       VkBufferDeviceAddressInfoEXT addrInfo =
+       VkBufferDeviceAddressInfo addrInfo =
                {
-                       VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT,       // VkStructureType      sType;
-                       DE_NULL,                                                                                        // const void*           pNext;
-                       0,                                                                                                      // VkBuffer                     buffer
+                       VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO,   // VkStructureType      sType;
+                       DE_NULL,                                                                                // const void*           pNext;
+                       0,                                                                                              // VkBuffer                     buffer
                };
 
        VkImageSubresourceRange range = makeImageSubresourceRange(VK_IMAGE_ASPECT_COLOR_BIT, 0u, 1u, 0u, 1u);
@@ -1448,7 +1458,7 @@ tcu::TestStatus MemoryModelTestInstance::iterate (void)
                        bufferSizes[2]                                                  // size
                };
 
-    deUint32 NUM_SUBMITS = 2;
+       deUint32 NUM_SUBMITS = 2;
 
        for (deUint32 x = 0; x < NUM_SUBMITS; ++x)
        {
@@ -1494,15 +1504,25 @@ tcu::TestStatus MemoryModelTestInstance::iterate (void)
 
                if (m_data.payloadSC == SC_PHYSBUFFER)
                {
+                       const bool useKHR = m_context.isDeviceFunctionalitySupported("VK_KHR_buffer_device_address");
                        addrInfo.buffer = **buffers[0];
-                       VkDeviceAddress addr = vk.getBufferDeviceAddressEXT(device, &addrInfo);
+                       VkDeviceAddress addr;
+                       if (useKHR)
+                               addr = vk.getBufferDeviceAddress(device, &addrInfo);
+                       else
+                               addr = vk.getBufferDeviceAddressEXT(device, &addrInfo);
                        vk.cmdPushConstants(*cmdBuffer, *pipelineLayout, allShaderStages,
                                                                0, sizeof(VkDeviceSize), &addr);
                }
                if (m_data.guardSC == SC_PHYSBUFFER)
                {
+                       const bool useKHR = m_context.isDeviceFunctionalitySupported("VK_KHR_buffer_device_address");
                        addrInfo.buffer = **buffers[1];
-                       VkDeviceAddress addr = vk.getBufferDeviceAddressEXT(device, &addrInfo);
+                       VkDeviceAddress addr;
+                       if (useKHR)
+                               addr = vk.getBufferDeviceAddress(device, &addrInfo);
+                       else
+                               addr = vk.getBufferDeviceAddressEXT(device, &addrInfo);
                        vk.cmdPushConstants(*cmdBuffer, *pipelineLayout, allShaderStages,
                                                                8, sizeof(VkDeviceSize), &addr);
                }
index a31d9cf..698aeb5 100644 (file)
@@ -69,7 +69,7 @@ AttachmentDescription2::AttachmentDescription2 (const void*                                           pNext_,
                                                                                                VkImageLayout                                   initialLayout_,
                                                                                                VkImageLayout                                   finalLayout_)
 {
-       sType                   = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR;
+       sType                   = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2;
        pNext                   = pNext_;
        flags                   = flags_;
        format                  = format_;
@@ -102,7 +102,7 @@ AttachmentReference2::AttachmentReference2 (const void*                     pNext_,
                                                                                        VkImageLayout           layout_,
                                                                                        VkImageAspectFlags      aspectMask_)
 {
-       sType           = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR;
+       sType           = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2;
        pNext           = pNext_;
        attachment      = attachment_;
        layout          = layout_;
@@ -145,15 +145,15 @@ SubpassDescription2::SubpassDescription2 (const void*                                             pNext_,
                                                                                  VkPipelineBindPoint                           pipelineBindPoint_,
                                                                                  deUint32                                                      viewMask_,
                                                                                  deUint32                                                      inputAttachmentCount_,
-                                                                                 const VkAttachmentReference2KHR*      pInputAttachments_,
+                                                                                 const VkAttachmentReference2*         pInputAttachments_,
                                                                                  deUint32                                                      colorAttachmentCount_,
-                                                                                 const VkAttachmentReference2KHR*      pColorAttachments_,
-                                                                                 const VkAttachmentReference2KHR*      pResolveAttachments_,
-                                                                                 const VkAttachmentReference2KHR*      pDepthStencilAttachment_,
+                                                                                 const VkAttachmentReference2*         pColorAttachments_,
+                                                                                 const VkAttachmentReference2*         pResolveAttachments_,
+                                                                                 const VkAttachmentReference2*         pDepthStencilAttachment_,
                                                                                  deUint32                                                      preserveAttachmentCount_,
                                                                                  const deUint32*                                       pPreserveAttachments_)
 {
-       sType                                   = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR;
+       sType                                   = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2;
        pNext                                   = pNext_;
        flags                                   = flags_;
        pipelineBindPoint               = pipelineBindPoint_;
@@ -203,7 +203,7 @@ SubpassDependency2::SubpassDependency2 (const void*                         pNext_,
                                                                                VkDependencyFlags               dependencyFlags_,
                                                                                deInt32                                 viewOffset_)
 {
-       sType                   = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR;
+       sType                   = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2;
        pNext                   = pNext_;
        srcSubpass              = srcSubpass_;
        dstSubpass              = dstSubpass_;
@@ -250,15 +250,15 @@ Move<VkRenderPass>        RenderPassCreateInfo1::createRenderPass (const DeviceInterfac
 RenderPassCreateInfo2::RenderPassCreateInfo2 (const void*                                                      pNext_,
                                                                                          VkRenderPassCreateFlags                               flags_,
                                                                                          deUint32                                                              attachmentCount_,
-                                                                                         const VkAttachmentDescription2KHR*    pAttachments_,
+                                                                                         const VkAttachmentDescription2*               pAttachments_,
                                                                                          deUint32                                                              subpassCount_,
-                                                                                         const VkSubpassDescription2KHR*               pSubpasses_,
+                                                                                         const VkSubpassDescription2*                  pSubpasses_,
                                                                                          deUint32                                                              dependencyCount_,
-                                                                                         const VkSubpassDependency2KHR*                pDependencies_,
+                                                                                         const VkSubpassDependency2*                   pDependencies_,
                                                                                          deUint32                                                              correlatedViewMaskCount_,
                                                                                          const deUint32*                                               pCorrelatedViewMasks_)
 {
-       sType                                   = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR;
+       sType                                   = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2;
        pNext                                   = pNext_;
        flags                                   = flags_;
        attachmentCount                 = attachmentCount_;
@@ -273,7 +273,7 @@ RenderPassCreateInfo2::RenderPassCreateInfo2 (const void*                                                   pNext_,
 
 Move<VkRenderPass>     RenderPassCreateInfo2::createRenderPass (const DeviceInterface& vk, VkDevice device) const
 {
-       return vk::createRenderPass2KHR(vk, device, this);
+       return vk::createRenderPass2(vk, device, this);
 }
 
 SubpassBeginInfo1::SubpassBeginInfo1 (const void*              pNext_,
@@ -288,7 +288,7 @@ SubpassBeginInfo1::SubpassBeginInfo1 (const void*           pNext_,
 SubpassBeginInfo2::SubpassBeginInfo2 (const void*              pNext_,
                                                                          VkSubpassContents     contents_)
 {
-       sType           = VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR;
+       sType           = VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO;
        pNext           = pNext_;
        contents        = contents_;
 }
@@ -302,7 +302,7 @@ SubpassEndInfo1::SubpassEndInfo1 (const void*       pNext_)
 
 SubpassEndInfo2::SubpassEndInfo2 (const void*  pNext_)
 {
-       sType   = VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR;
+       sType   = VK_STRUCTURE_TYPE_SUBPASS_END_INFO;
        pNext   = pNext_;
 }
 
@@ -341,7 +341,7 @@ void RenderpassSubpass2::cmdBeginRenderPass (const DeviceInterface&                 vk,
                                                                                         const VkRenderPassBeginInfo*   pRenderPassBegin,
                                                                                         const SubpassBeginInfo*                pSubpassBeginInfo)
 {
-       vk.cmdBeginRenderPass2KHR(cmdBuffer, pRenderPassBegin, pSubpassBeginInfo);
+       vk.cmdBeginRenderPass2(cmdBuffer, pRenderPassBegin, pSubpassBeginInfo);
 }
 
 void RenderpassSubpass2::cmdNextSubpass (const DeviceInterface&                vk,
@@ -352,7 +352,7 @@ void RenderpassSubpass2::cmdNextSubpass (const DeviceInterface&             vk,
        DE_ASSERT(pSubpassBeginInfo != DE_NULL);
        DE_ASSERT(pSubpassEndInfo != DE_NULL);
 
-       vk.cmdNextSubpass2KHR(cmdBuffer, pSubpassBeginInfo, pSubpassEndInfo);
+       vk.cmdNextSubpass2(cmdBuffer, pSubpassBeginInfo, pSubpassEndInfo);
 }
 
 void RenderpassSubpass2::cmdEndRenderPass (const DeviceInterface&      vk,
@@ -361,7 +361,7 @@ void RenderpassSubpass2::cmdEndRenderPass (const DeviceInterface&   vk,
 {
        DE_ASSERT(pSubpassEndInfo != DE_NULL);
 
-       vk.cmdEndRenderPass2KHR(cmdBuffer, pSubpassEndInfo);
+       vk.cmdEndRenderPass2(cmdBuffer, pSubpassEndInfo);
 }
 
 } // renderpass
index 1e80c3e..9274146 100644 (file)
@@ -49,7 +49,7 @@ public:
                                                         VkImageLayout                                  finalLayout);
 };
 
-class AttachmentDescription2 : public vk::VkAttachmentDescription2KHR
+class AttachmentDescription2 : public vk::VkAttachmentDescription2
 {
 public:
        AttachmentDescription2  (const void*                                    pNext,
@@ -73,7 +73,7 @@ public:
                                                         VkImageAspectFlags     aspectMask);
 };
 
-class AttachmentReference2 : public vk::VkAttachmentReference2KHR
+class AttachmentReference2 : public vk::VkAttachmentReference2
 {
 public:
        AttachmentReference2    (const void*            pNext,
@@ -99,7 +99,7 @@ public:
                                                 const deUint32*                                        pPreserveAttachments);
 };
 
-class SubpassDescription2 : public vk::VkSubpassDescription2KHR
+class SubpassDescription2 : public vk::VkSubpassDescription2
 {
 public:
        SubpassDescription2     (const void*                                            pNext,
@@ -107,11 +107,11 @@ public:
                                                 VkPipelineBindPoint                            pipelineBindPoint,
                                                 deUint32                                                       viewMask,
                                                 deUint32                                                       inputAttachmentCount,
-                                                const VkAttachmentReference2KHR*       pInputAttachments,
+                                                const VkAttachmentReference2*          pInputAttachments,
                                                 deUint32                                                       colorAttachmentCount,
-                                                const VkAttachmentReference2KHR*       pColorAttachments,
-                                                const VkAttachmentReference2KHR*       pResolveAttachments,
-                                                const VkAttachmentReference2KHR*       pDepthStencilAttachment,
+                                                const VkAttachmentReference2*          pColorAttachments,
+                                                const VkAttachmentReference2*          pResolveAttachments,
+                                                const VkAttachmentReference2*          pDepthStencilAttachment,
                                                 deUint32                                                       preserveAttachmentCount,
                                                 const deUint32*                                        pPreserveAttachments);
 };
@@ -130,7 +130,7 @@ public:
                                                 deInt32                                viewOffset);
 };
 
-class SubpassDependency2 : public vk::VkSubpassDependency2KHR
+class SubpassDependency2 : public vk::VkSubpassDependency2
 {
 public:
        SubpassDependency2      (const void*                    pNext,
@@ -162,17 +162,17 @@ public:
                                                                                                         VkDevice device) const;
 };
 
-class RenderPassCreateInfo2 : public VkRenderPassCreateInfo2KHR
+class RenderPassCreateInfo2 : public VkRenderPassCreateInfo2
 {
 public:
                                                        RenderPassCreateInfo2   (const void*                                            pNext,
                                                                                                         VkRenderPassCreateFlags                        flags,
                                                                                                         deUint32                                                       attachmentCount,
-                                                                                                        const VkAttachmentDescription2KHR*     pAttachments,
+                                                                                                        const VkAttachmentDescription2*        pAttachments,
                                                                                                         deUint32                                                       subpassCount,
-                                                                                                        const VkSubpassDescription2KHR*        pSubpasses,
+                                                                                                        const VkSubpassDescription2*           pSubpasses,
                                                                                                         deUint32                                                       dependencyCount,
-                                                                                                        const VkSubpassDependency2KHR*         pDependencies,
+                                                                                                        const VkSubpassDependency2*            pDependencies,
                                                                                                         deUint32                                                       correlatedViewMaskCount,
                                                                                                         const deUint32*                                        pCorrelatedViewMasks);
 
@@ -189,7 +189,7 @@ public:
        VkSubpassContents       contents;
 };
 
-class SubpassBeginInfo2 : public VkSubpassBeginInfoKHR
+class SubpassBeginInfo2 : public VkSubpassBeginInfo
 {
 public:
                                                SubpassBeginInfo2       (const void*            pNext,
@@ -202,7 +202,7 @@ public:
                                                SubpassEndInfo1 (const void*    pNext);
 };
 
-class SubpassEndInfo2 : public VkSubpassEndInfoKHR
+class SubpassEndInfo2 : public VkSubpassEndInfo
 {
 public:
                                                SubpassEndInfo2 (const void*    pNext);
index 3c7b6d5..2850a39 100644 (file)
@@ -103,6 +103,8 @@ set(DEQP_VK_PIPELINE_LIBS
        )
 
 PCH(DEQP_VK_PIPELINE_SRCS ../pch.cpp)
+include_directories("../../../../amber/src/include")
+include_directories("../amber")
 
 add_library(deqp-vk-pipeline STATIC ${DEQP_VK_PIPELINE_SRCS})
 target_link_libraries(deqp-vk-pipeline ${DEQP_VK_PIPELINE_LIBS})
index 4b7896f..560c1e9 100644 (file)
@@ -1690,7 +1690,7 @@ void BlendOperationAdvancedTest::checkSupport(Context& context) const
                throw tcu::NotSupportedError("Unsupported non-premultiplied destination color");
        }
 
-       const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT blendFeatures = context.getBlendOperationAdvancedFeatures();
+       const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT blendFeatures = context.getBlendOperationAdvancedFeaturesEXT();
        if (m_param.coherentOperations && !blendFeatures.advancedBlendCoherentOperations)
        {
                throw tcu::NotSupportedError("Unsupported required coherent operations");
index 58d9eb1..5ae09af 100644 (file)
@@ -188,6 +188,7 @@ static MovePtr<TestTexture> createTestTexture (const TcuFormatType format, VkIma
 
 void checkSupportImageSamplingInstance (Context& context, ImageSamplingInstanceParams params)
 {
+
        if (de::abs(params.samplerParams.mipLodBias) > context.getDeviceProperties().limits.maxSamplerLodBias)
                TCU_THROW(NotSupportedError, "Unsupported sampler Lod bias value");
 
@@ -208,9 +209,9 @@ void checkSupportImageSamplingInstance (Context& context, ImageSamplingInstanceP
                context.requireDeviceFunctionality("VK_EXT_separate_stencil_usage");
                context.requireInstanceFunctionality("VK_KHR_get_physical_device_properties2");
 
-               const VkImageStencilUsageCreateInfoEXT  stencilUsage    =
+               const VkImageStencilUsageCreateInfo  stencilUsage       =
                {
-                       VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT,
+                       VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO,
                        DE_NULL,
                        VK_IMAGE_USAGE_TRANSFER_DST_BIT
                };
@@ -339,7 +340,7 @@ ImageSamplingInstance::ImageSamplingInstance (Context&                                              context,
                {
                        case VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT:
                        {
-                               VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT        physicalDeviceSamplerMinMaxProperties =
+                               VkPhysicalDeviceSamplerFilterMinmaxProperties   physicalDeviceSamplerMinMaxProperties =
                                {
                                        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT,
                                        DE_NULL,
index 7a54fd6..5904ca8 100644 (file)
@@ -132,7 +132,7 @@ public:
                                                                                                                                                        VkImageViewType                         imageViewType,
                                                                                                                                                        VkFormat                                        imageFormat,
                                                                                                                                                        VkComponentMapping                      componentMapping,
-                                                                                                                                                       VkSamplerReductionModeEXT       reductionMode,
+                                                                                                                                                       VkSamplerReductionMode          reductionMode,
                                                                                                                                                        bool                                            separateStencilUsage);
 
        virtual                                                                         ~SamplerMagReduceFilterTest     (void) {}
@@ -140,7 +140,7 @@ public:
        virtual VkComponentMapping                                      getComponentMapping                     (void) const;
 
 private:
-       const VkSamplerReductionModeCreateInfoEXT       m_reductionCreaterInfo;
+       const VkSamplerReductionModeCreateInfo          m_reductionCreaterInfo;
        VkComponentMapping                                                      m_componentMapping;
 };
 
@@ -153,7 +153,7 @@ public:
                                                                                                                                                         VkImageViewType                        imageViewType,
                                                                                                                                                         VkFormat                                       imageFormat,
                                                                                                                                                         VkComponentMapping                     componentMapping,
-                                                                                                                                                        VkSamplerReductionModeEXT      reductionMode,
+                                                                                                                                                        VkSamplerReductionMode         reductionMode,
                                                                                                                                                         bool                                           separateStencilUsage);
 
        virtual                                                                         ~SamplerMinReduceFilterTest     (void) {}
@@ -161,7 +161,7 @@ public:
        virtual VkComponentMapping                                      getComponentMapping                     (void) const;
 
 private:
-       const VkSamplerReductionModeCreateInfoEXT       m_reductionCreaterInfo;
+       const VkSamplerReductionModeCreateInfo          m_reductionCreaterInfo;
        VkComponentMapping                                                      m_componentMapping;
 };
 
@@ -566,13 +566,13 @@ VkSamplerCreateInfo SamplerMinFilterTest::getSamplerCreateInfo (void) const
 namespace
 {
 
-VkSamplerReductionModeCreateInfoEXT getSamplerReductionCreateInfo (VkSamplerReductionModeEXT reductionMode)
+VkSamplerReductionModeCreateInfo getSamplerReductionCreateInfo (VkSamplerReductionMode reductionMode)
 {
-       const VkSamplerReductionModeCreateInfoEXT        ret =
+       const VkSamplerReductionModeCreateInfo ret =
        {
-               VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT,       // VkStructureType                              sType
+               VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO,           // VkStructureType                              sType
                DE_NULL,                                                                                                        // const void*                                  pNext
-               reductionMode                                                                                           // VkSamplerReductionModeEXT    reductionMode
+               reductionMode                                                                                           // VkSamplerReductionMode               reductionMode
        };
        return ret;
 }
@@ -588,7 +588,7 @@ SamplerMagReduceFilterTest::SamplerMagReduceFilterTest (tcu::TestContext&                   test
                                                                                                                VkImageViewType                         imageViewType,
                                                                                                                VkFormat                                        imageFormat,
                                                                                                                VkComponentMapping                      componentMapping,
-                                                                                                               VkSamplerReductionModeEXT       reductionMode,
+                                                                                                               VkSamplerReductionMode          reductionMode,
                                                                                                                bool                                            separateStencilUsage)
        : SamplerMagFilterTest          (testContext, name, description, imageViewType, imageFormat, VK_FILTER_LINEAR, separateStencilUsage)
        , m_reductionCreaterInfo        (getSamplerReductionCreateInfo(reductionMode))
@@ -618,7 +618,7 @@ SamplerMinReduceFilterTest::SamplerMinReduceFilterTest (tcu::TestContext&                   test
                                                                                                                VkImageViewType                         imageViewType,
                                                                                                                VkFormat                                        imageFormat,
                                                                                                                VkComponentMapping                      componentMapping,
-                                                                                                               VkSamplerReductionModeEXT       reductionMode,
+                                                                                                               VkSamplerReductionMode          reductionMode,
                                                                                                                bool                                            separateStencilUsage)
        : SamplerMinFilterTest          (testContext, name, description, imageViewType, imageFormat, VK_FILTER_LINEAR, separateStencilUsage)
        , m_reductionCreaterInfo        (getSamplerReductionCreateInfo(reductionMode))
index 1b73433..0cc5f76 100644 (file)
@@ -798,7 +798,7 @@ tcu::TestStatus TimestampTestInstance::iterate (void)
        configCommandBuffer();
        if (m_hostQueryReset)
        {
-               vk.resetQueryPoolEXT(vkDevice, *m_queryPool, 0u, TimestampTest::ENTRY_COUNT);
+               vk.resetQueryPool(vkDevice, *m_queryPool, 0u, TimestampTest::ENTRY_COUNT);
        }
        submitCommandsAndWait(vk, vkDevice, queue, m_cmdBuffer.get());
 
@@ -821,7 +821,7 @@ tcu::TestStatus TimestampTestInstance::iterate (void)
                }
 
                // Host resets the query pool
-               vk.resetQueryPoolEXT(vkDevice, *m_queryPool, 0u, stageSize);
+               vk.resetQueryPool(vkDevice, *m_queryPool, 0u, stageSize);
                // Get timestamp value from query pool
                vk::VkResult res = vk.getQueryPoolResults(vkDevice, *m_queryPool, 0u, stageSize, sizeof(deUint64) * stageSize * 2, (void*)m_timestampValuesHostQueryReset, sizeof(deUint64) * 2, VK_QUERY_RESULT_64_BIT | VK_QUERY_RESULT_WITH_AVAILABILITY_BIT);
 
@@ -2885,7 +2885,7 @@ tcu::TestStatus TwoCmdBuffersTestInstance::iterate (void)
        if (m_hostQueryReset)
        {
                // Only reset the pool for the primary command buffer, the secondary command buffer will reset the pool by itself.
-               vk.resetQueryPoolEXT(m_context.getDevice(), *m_queryPool, 0u, TimestampTest::ENTRY_COUNT);
+               vk.resetQueryPool(m_context.getDevice(), *m_queryPool, 0u, TimestampTest::ENTRY_COUNT);
        }
 
        VK_CHECK(vk.queueSubmit(queue, 1u, &submitInfo, DE_NULL));
index 5c1a2b5..3d15661 100644 (file)
@@ -400,7 +400,7 @@ tcu::TestStatus     BasicOcclusionQueryTestInstance::iterate (void)
        endCommandBuffer(vk, *cmdBuffer);
 
        if (m_testVector.queryResultsMode == RESULTS_MODE_GET_RESET)
-               vk.resetQueryPoolEXT(device, m_queryPool, 0, NUM_QUERIES_IN_POOL);
+               vk.resetQueryPool(device, m_queryPool, 0, NUM_QUERIES_IN_POOL);
 
        submitCommandsAndWait(vk, device, queue, cmdBuffer.get());
 
@@ -659,7 +659,7 @@ tcu::TestStatus OcclusionQueryTestInstance::iterate (void)
                };
 
                if (!hasSeparateResetCmdBuf() && m_testVector.queryResultsMode == RESULTS_MODE_GET_RESET)
-                       vk.resetQueryPoolEXT(m_context.getDevice(), m_queryPool, 0, NUM_QUERIES_IN_POOL);
+                       vk.resetQueryPool(m_context.getDevice(), m_queryPool, 0, NUM_QUERIES_IN_POOL);
                vk.queueSubmit(queue, 1, &submitInfoRender, DE_NULL);
        }
 
@@ -939,7 +939,7 @@ void OcclusionQueryTestInstance::captureResults (deUint64* retResults, deUint64*
 
        if (m_testVector.queryResultsMode == RESULTS_MODE_GET_RESET)
        {
-               vk.resetQueryPoolEXT(device, m_queryPool, 0, NUM_QUERIES_IN_POOL);
+               vk.resetQueryPool(device, m_queryPool, 0, NUM_QUERIES_IN_POOL);
                vk::VkResult queryResult = vk.getQueryPoolResults(device, m_queryPool, 0, NUM_QUERIES_IN_POOL, resultsBuffer.size(), &resultsBuffer[0], m_testVector.queryResultsStride, m_queryResultFlags);
 
                if (queryResult != vk::VK_NOT_READY)
@@ -966,7 +966,7 @@ void OcclusionQueryTestInstance::captureResults (deUint64* retResults, deUint64*
 
                                if (m_testVector.queryResultsAvailability && *(srcPtrTyped + 1) != 0)
                                {
-                                       TCU_FAIL("resetQueryPoolEXT did not disable availability bit");
+                                       TCU_FAIL("resetQueryPool did not disable availability bit");
                                }
                        }
                        else if (m_testVector.queryResultSize == RESULT_SIZE_64_BIT)
@@ -979,7 +979,7 @@ void OcclusionQueryTestInstance::captureResults (deUint64* retResults, deUint64*
 
                                if (m_testVector.queryResultsAvailability && *(srcPtrTyped + 1) != 0)
                                {
-                                       TCU_FAIL("resetQueryPoolEXT did not disable availability bit");
+                                       TCU_FAIL("resetQueryPool did not disable availability bit");
                                }
                        }
                        else
index ce1c454..a9b7312 100644 (file)
@@ -258,10 +258,6 @@ Move<VkQueryPool> QueryTestBase::createQueryPool(deUint32 enabledCounterOffset,
        // enable every <enabledCounterStride> counter that has command or render pass scope
        for (deUint32 i = 0; i < counterCount; i++)
        {
-               // skip counters with command buffer scope
-               if (m_counters[i].scope == VK_QUERY_SCOPE_COMMAND_BUFFER_KHR)
-                       continue;
-
                // handle offset
                if (enabledCounterOffset)
                {
index 56385f1..08bb2d2 100644 (file)
@@ -519,7 +519,7 @@ tcu::TestStatus ComputeInvocationsTestInstance::executeTest (const VkCommandPool
                m_context.getTestContext().getLog() << tcu::TestLog::Message << "Compute shader invocations: " << getComputeExecution(m_parameters[parametersNdx]) << tcu::TestLog::EndMessage;
 
                if (m_parameters[0].resetType == RESET_TYPE_HOST)
-                       vk.resetQueryPoolEXT(device, *queryPool, 0u, 1u);
+                       vk.resetQueryPool(device, *queryPool, 0u, 1u);
 
                // Wait for completion
                submitCommandsAndWait(vk, device, queue, *cmdBuffer);
@@ -544,7 +544,7 @@ tcu::TestStatus ComputeInvocationsTestInstance::executeTest (const VkCommandPool
 
                        deUint64 temp = data[0].first;
 
-                       vk.resetQueryPoolEXT(device, *queryPool, 0, 1u);
+                       vk.resetQueryPool(device, *queryPool, 0, 1u);
                        vk::VkResult res = GetQueryPoolResultsVector(data, vk, device, *queryPool, 0u, 1u, (VK_QUERY_RESULT_64_BIT | VK_QUERY_RESULT_WITH_AVAILABILITY_BIT));
                        /* From Vulkan spec:
                         *
@@ -698,7 +698,7 @@ tcu::TestStatus ComputeInvocationsSecondaryTestInstance::executeTest (const VkCo
 
        // Secondary buffer is emitted only once, so it is safe to reset the query pool here.
        if (m_parameters[0].resetType == RESET_TYPE_HOST)
-               vk.resetQueryPoolEXT(device, *queryPool, 0u, 1u);
+               vk.resetQueryPool(device, *queryPool, 0u, 1u);
 
        // Wait for completion
        submitCommandsAndWait(vk, device, queue, *primaryCmdBuffer);
@@ -730,7 +730,7 @@ tcu::TestStatus ComputeInvocationsSecondaryTestInstance::checkResult (const de::
 
                        deUint64 temp = results[0].first;
 
-                       vk.resetQueryPoolEXT(device, queryPool, 0u, 1u);
+                       vk.resetQueryPool(device, queryPool, 0u, 1u);
                        vk::VkResult res = GetQueryPoolResultsVector(results, vk, device, queryPool, 0u, 1u, (VK_QUERY_RESULT_64_BIT | VK_QUERY_RESULT_WITH_AVAILABILITY_BIT));
                        /* From Vulkan spec:
                         *
@@ -906,7 +906,7 @@ tcu::TestStatus ComputeInvocationsSecondaryInheritedTestInstance::executeTest (c
        endCommandBuffer(vk, *primaryCmdBuffer);
 
        if (m_parameters[0].resetType == RESET_TYPE_HOST)
-               vk.resetQueryPoolEXT(device, *queryPool, 0u, 1u);
+               vk.resetQueryPool(device, *queryPool, 0u, 1u);
 
        // Wait for completion
        submitCommandsAndWait(vk, device, queue, *primaryCmdBuffer);
@@ -1288,7 +1288,7 @@ tcu::TestStatus VertexShaderTestInstance::executeTest (void)
        endCommandBuffer(vk, *cmdBuffer);
 
        if (m_parametersGraphic.resetType == RESET_TYPE_HOST)
-               vk.resetQueryPoolEXT(device, *queryPool, 0u, queryCount);
+               vk.resetQueryPool(device, *queryPool, 0u, queryCount);
 
        // Wait for completion
        submitCommandsAndWait(vk, device, queue, *cmdBuffer);
@@ -1376,7 +1376,7 @@ tcu::TestStatus VertexShaderTestInstance::checkResult (VkQueryPool queryPool)
 
                deUint64 temp = results[0].first;
 
-               vk.resetQueryPoolEXT(device, queryPool, 0, queryCount);
+               vk.resetQueryPool(device, queryPool, 0, queryCount);
                vk::VkResult res = GetQueryPoolResultsVector(results, vk, device, queryPool, 0u, queryCount, (VK_QUERY_RESULT_64_BIT | VK_QUERY_RESULT_WITH_AVAILABILITY_BIT));
                /* From Vulkan spec:
                 *
@@ -1506,7 +1506,7 @@ tcu::TestStatus VertexShaderSecondaryTestInstance::executeTest (void)
        endCommandBuffer(vk, *primaryCmdBuffer);
 
        if (m_parametersGraphic.resetType == RESET_TYPE_HOST)
-               vk.resetQueryPoolEXT(device, *queryPool, 0u, queryCount);
+               vk.resetQueryPool(device, *queryPool, 0u, queryCount);
 
        // Wait for completion
        submitCommandsAndWait(vk, device, queue, *primaryCmdBuffer);
@@ -1600,7 +1600,7 @@ tcu::TestStatus VertexShaderSecondaryInheritedTestInstance::executeTest (void)
        endCommandBuffer(vk, *primaryCmdBuffer);
 
        if (m_parametersGraphic.resetType == RESET_TYPE_HOST)
-               vk.resetQueryPoolEXT(device, *queryPool, 0u, queryCount);
+               vk.resetQueryPool(device, *queryPool, 0u, queryCount);
 
        // Wait for completion
        submitCommandsAndWait(vk, device, queue, *primaryCmdBuffer);
@@ -1763,7 +1763,7 @@ tcu::TestStatus GeometryShaderTestInstance::executeTest (void)
        endCommandBuffer(vk, *cmdBuffer);
 
        if (m_parametersGraphic.resetType == RESET_TYPE_HOST)
-               vk.resetQueryPoolEXT(device, *queryPool, 0u, queryCount);
+               vk.resetQueryPool(device, *queryPool, 0u, queryCount);
 
        // Wait for completion
        submitCommandsAndWait(vk, device, queue, *cmdBuffer);
@@ -1842,7 +1842,7 @@ tcu::TestStatus GeometryShaderTestInstance::checkResult (VkQueryPool queryPool)
 
                deUint64 temp = results[0].first;
 
-               vk.resetQueryPoolEXT(device, queryPool, 0, queryCount);
+               vk.resetQueryPool(device, queryPool, 0, queryCount);
                vk::VkResult res = GetQueryPoolResultsVector(results, vk, device, queryPool, 0u, queryCount, (VK_QUERY_RESULT_64_BIT | VK_QUERY_RESULT_WITH_AVAILABILITY_BIT));
                /* From Vulkan spec:
                 *
@@ -1958,7 +1958,7 @@ tcu::TestStatus GeometryShaderSecondaryTestInstance::executeTest (void)
        endCommandBuffer(vk, *primaryCmdBuffer);
 
        if (m_parametersGraphic.resetType == RESET_TYPE_HOST)
-               vk.resetQueryPoolEXT(device, *queryPool, 0u, queryCount);
+               vk.resetQueryPool(device, *queryPool, 0u, queryCount);
 
        // Wait for completion
        submitCommandsAndWait(vk, device, queue, *primaryCmdBuffer);
@@ -2052,7 +2052,7 @@ tcu::TestStatus GeometryShaderSecondaryInheritedTestInstance::executeTest (void)
        endCommandBuffer(vk, *primaryCmdBuffer);
 
        if (m_parametersGraphic.resetType == RESET_TYPE_HOST)
-               vk.resetQueryPoolEXT(device, *queryPool, 0u, queryCount);
+               vk.resetQueryPool(device, *queryPool, 0u, queryCount);
 
        // Wait for completion
        submitCommandsAndWait(vk, device, queue, *primaryCmdBuffer);
@@ -2213,7 +2213,7 @@ tcu::TestStatus   TessellationShaderTestInstance::executeTest (void)
        endCommandBuffer(vk, *cmdBuffer);
 
        if (m_parametersGraphic.resetType == RESET_TYPE_HOST)
-               vk.resetQueryPoolEXT(device, *queryPool, 0u, queryCount);
+               vk.resetQueryPool(device, *queryPool, 0u, queryCount);
 
        // Wait for completion
        submitCommandsAndWait(vk, device, queue, *cmdBuffer);
@@ -2273,7 +2273,7 @@ tcu::TestStatus TessellationShaderTestInstance::checkResult (VkQueryPool queryPo
 
                deUint64 temp = results[0].first;
 
-               vk.resetQueryPoolEXT(device, queryPool, 0, queryCount);
+               vk.resetQueryPool(device, queryPool, 0, queryCount);
                vk::VkResult res = GetQueryPoolResultsVector(results, vk, device, queryPool, 0u, queryCount, (VK_QUERY_RESULT_64_BIT | VK_QUERY_RESULT_WITH_AVAILABILITY_BIT));
                /* From Vulkan spec:
                 *
@@ -2378,7 +2378,7 @@ tcu::TestStatus   TessellationShaderSecondrayTestInstance::executeTest (void)
        endCommandBuffer(vk, *primaryCmdBuffer);
 
        if (m_parametersGraphic.resetType == RESET_TYPE_HOST)
-               vk.resetQueryPoolEXT(device, *queryPool, 0u, queryCount);
+               vk.resetQueryPool(device, *queryPool, 0u, queryCount);
 
        // Wait for completion
        submitCommandsAndWait(vk, device, queue, *primaryCmdBuffer);
@@ -2472,7 +2472,7 @@ tcu::TestStatus   TessellationShaderSecondrayInheritedTestInstance::executeTest (v
        endCommandBuffer(vk, *primaryCmdBuffer);
 
        if (m_parametersGraphic.resetType == RESET_TYPE_HOST)
-               vk.resetQueryPoolEXT(device, *queryPool, 0u, queryCount);
+               vk.resetQueryPool(device, *queryPool, 0u, queryCount);
 
        // Wait for completion
        submitCommandsAndWait(vk, device, queue, *primaryCmdBuffer);
index db46bfa..b793776 100644 (file)
@@ -1940,31 +1940,31 @@ public:
                                                                                                TCU_THROW(NotSupportedError, "Strict rasterization is not supported");
 
                                                                                        if (getLineStippleEnable() &&
-                                                                                               !context.getLineRasterizationFeatures().stippledRectangularLines)
+                                                                                               !context.getLineRasterizationFeaturesEXT().stippledRectangularLines)
                                                                                                TCU_THROW(NotSupportedError, "Stippled rectangular lines not supported");
                                                                                        break;
                                                                                case VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT:
-                                                                                       if (!context.getLineRasterizationFeatures().rectangularLines)
+                                                                                       if (!context.getLineRasterizationFeaturesEXT().rectangularLines)
                                                                                                TCU_THROW(NotSupportedError, "Rectangular lines not supported");
 
                                                                                        if (getLineStippleEnable() &&
-                                                                                               !context.getLineRasterizationFeatures().stippledRectangularLines)
+                                                                                               !context.getLineRasterizationFeaturesEXT().stippledRectangularLines)
                                                                                                TCU_THROW(NotSupportedError, "Stippled rectangular lines not supported");
                                                                                        break;
                                                                                case VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT:
-                                                                                       if (!context.getLineRasterizationFeatures().bresenhamLines)
+                                                                                       if (!context.getLineRasterizationFeaturesEXT().bresenhamLines)
                                                                                                TCU_THROW(NotSupportedError, "Bresenham lines not supported");
 
                                                                                        if (getLineStippleEnable() &&
-                                                                                               !context.getLineRasterizationFeatures().stippledBresenhamLines)
+                                                                                               !context.getLineRasterizationFeaturesEXT().stippledBresenhamLines)
                                                                                                TCU_THROW(NotSupportedError, "Stippled Bresenham lines not supported");
                                                                                        break;
                                                                                case VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT:
-                                                                                       if (!context.getLineRasterizationFeatures().smoothLines)
+                                                                                       if (!context.getLineRasterizationFeaturesEXT().smoothLines)
                                                                                                TCU_THROW(NotSupportedError, "Smooth lines not supported");
 
                                                                                        if (getLineStippleEnable() &&
-                                                                                               !context.getLineRasterizationFeatures().stippledSmoothLines)
+                                                                                               !context.getLineRasterizationFeaturesEXT().stippledSmoothLines)
                                                                                                TCU_THROW(NotSupportedError, "Stippled smooth lines not supported");
                                                                                        break;
                                                                                }
index 17437ca..3781700 100644 (file)
@@ -100,8 +100,8 @@ struct TestConfig
        VkRect2D                                        renderArea;
        VkImageAspectFlags                      aspectFlag;
        deUint32                                        sampleCount;
-       VkResolveModeFlagBitsKHR        depthResolveMode;
-       VkResolveModeFlagBitsKHR        stencilResolveMode;
+       VkResolveModeFlagBits           depthResolveMode;
+       VkResolveModeFlagBits           stencilResolveMode;
        VerifyBuffer                            verifyBuffer;
        VkClearDepthStencilValue        clearValue;
        float                                           depthExpectedValue;
@@ -225,9 +225,9 @@ bool DepthStencilResolveTest::isFeaturesSupported()
        if (m_config.separateDepthStencilLayouts)
                m_context.requireDeviceFunctionality("VK_KHR_separate_depth_stencil_layouts");
 
-       VkPhysicalDeviceDepthStencilResolvePropertiesKHR dsResolveProperties;
-       deMemset(&dsResolveProperties, 0, sizeof(VkPhysicalDeviceDepthStencilResolvePropertiesKHR));
-       dsResolveProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR;
+       VkPhysicalDeviceDepthStencilResolveProperties dsResolveProperties;
+       deMemset(&dsResolveProperties, 0, sizeof(VkPhysicalDeviceDepthStencilResolveProperties));
+       dsResolveProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES;
        dsResolveProperties.pNext = DE_NULL;
 
        VkPhysicalDeviceProperties2 deviceProperties;
@@ -240,23 +240,23 @@ bool DepthStencilResolveTest::isFeaturesSupported()
        instanceInterface.getPhysicalDeviceProperties2(physicalDevice, &deviceProperties);
 
        // check if both modes are supported
-       VkResolveModeFlagBitsKHR depthResolveMode               = m_config.depthResolveMode;
-       VkResolveModeFlagBitsKHR stencilResolveMode             = m_config.stencilResolveMode;
-       if ((depthResolveMode != VK_RESOLVE_MODE_NONE_KHR) &&
+       VkResolveModeFlagBits depthResolveMode          = m_config.depthResolveMode;
+       VkResolveModeFlagBits stencilResolveMode                = m_config.stencilResolveMode;
+       if ((depthResolveMode != VK_RESOLVE_MODE_NONE) &&
                !(depthResolveMode & dsResolveProperties.supportedDepthResolveModes))
                TCU_THROW(NotSupportedError, "Depth resolve mode not supported");
-       if ((stencilResolveMode != VK_RESOLVE_MODE_NONE_KHR) &&
+       if ((stencilResolveMode != VK_RESOLVE_MODE_NONE) &&
                !(stencilResolveMode & dsResolveProperties.supportedStencilResolveModes))
                TCU_THROW(NotSupportedError, "Stencil resolve mode not supported");
 
        // check if the implementation supports setting the depth and stencil resolve
-       // modes to different values when one of those modes is VK_RESOLVE_MODE_NONE_KHR
+       // modes to different values when one of those modes is VK_RESOLVE_MODE_NONE
        if (dsResolveProperties.independentResolveNone)
        {
                if ((!dsResolveProperties.independentResolve) &&
                        (depthResolveMode != stencilResolveMode) &&
-                       (depthResolveMode != VK_RESOLVE_MODE_NONE_KHR) &&
-                       (stencilResolveMode != VK_RESOLVE_MODE_NONE_KHR))
+                       (depthResolveMode != VK_RESOLVE_MODE_NONE) &&
+                       (stencilResolveMode != VK_RESOLVE_MODE_NONE))
                        TCU_THROW(NotSupportedError, "Implementation doesn't support diferent resolve modes");
        }
        else if (!dsResolveProperties.independentResolve && (depthResolveMode != stencilResolveMode))
@@ -424,7 +424,7 @@ Move<VkRenderPass> DepthStencilResolveTest::createRenderPass (void)
                attachmentDescriptionStencil = &stencilFinalLayout;
        }
 
-       const AttachmentDescription2 multisampleAttachment              // VkAttachmentDescription2KHR
+       const AttachmentDescription2 multisampleAttachment              // VkAttachmentDescription2
        (
                                                                                                                        // VkStructureType                                      sType;
                attachmentDescriptionStencil,                                           // const void*                                          pNext;
@@ -438,7 +438,7 @@ Move<VkRenderPass> DepthStencilResolveTest::createRenderPass (void)
                VK_IMAGE_LAYOUT_UNDEFINED,                                                      // VkImageLayout                                        initialLayout;
                finalLayout                                                                                     // VkImageLayout                                        finalLayout;
        );
-       const AttachmentReference2 multisampleAttachmentRef             // VkAttachmentReference2KHR
+       const AttachmentReference2 multisampleAttachmentRef             // VkAttachmentReference2
        (
                                                                                                                        // VkStructureType                                      sType;
                attachmentRefStencil,                                                           // const void*                                          pNext;
@@ -447,7 +447,7 @@ Move<VkRenderPass> DepthStencilResolveTest::createRenderPass (void)
                0u                                                                                                      // VkImageAspectFlags                           aspectMask;
        );
 
-       const AttachmentDescription2 singlesampleAttachment             // VkAttachmentDescription2KHR
+       const AttachmentDescription2 singlesampleAttachment             // VkAttachmentDescription2
        (
                                                                                                                        // VkStructureType                                      sType;
                attachmentDescriptionStencil,                                           // const void*                                          pNext;
@@ -461,7 +461,7 @@ Move<VkRenderPass> DepthStencilResolveTest::createRenderPass (void)
                VK_IMAGE_LAYOUT_UNDEFINED,                                                      // VkImageLayout                                        initialLayout;
                finalLayout                                                                                     // VkImageLayout                                        finalLayout;
        );
-       AttachmentReference2 singlesampleAttachmentRef                  // VkAttachmentReference2KHR
+       AttachmentReference2 singlesampleAttachmentRef                  // VkAttachmentReference2
        (
                                                                                                                        // VkStructureType                                      sType;
                DE_NULL,                                                                                        // const void*                                          pNext;
@@ -474,16 +474,16 @@ Move<VkRenderPass> DepthStencilResolveTest::createRenderPass (void)
        attachments.push_back(multisampleAttachment);
        attachments.push_back(singlesampleAttachment);
 
-       VkSubpassDescriptionDepthStencilResolveKHR dsResolveDescription =
+       VkSubpassDescriptionDepthStencilResolve dsResolveDescription =
        {
-               VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR,
+               VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE,
                DE_NULL,                                                                                                                                // const void*                                          pNext;
-               m_config.depthResolveMode,                                                                                              // VkResolveModeFlagBitsKHR                     depthResolveMode;
-               m_config.stencilResolveMode,                                                                                    // VkResolveModeFlagBitsKHR                     stencilResolveMode;
-               &singlesampleAttachmentRef                                                                                              // VkAttachmentReference2KHR            pDepthStencilResolveAttachment;
+               m_config.depthResolveMode,                                                                                              // VkResolveModeFlagBits                        depthResolveMode;
+               m_config.stencilResolveMode,                                                                                    // VkResolveModeFlagBits                        stencilResolveMode;
+               &singlesampleAttachmentRef                                                                                              // VkAttachmentReference2                       pDepthStencilResolveAttachment;
        };
 
-       const SubpassDescription2 subpass                                       // VkSubpassDescription2KHR
+       const SubpassDescription2 subpass                                       // VkSubpassDescription2
        (
                                                                                                                // VkStructureType                                              sType;
                &dsResolveDescription,                                                  // const void*                                                  pNext;
@@ -491,26 +491,26 @@ Move<VkRenderPass> DepthStencilResolveTest::createRenderPass (void)
                VK_PIPELINE_BIND_POINT_GRAPHICS,                                // VkPipelineBindPoint                                  pipelineBindPoint;
                0u,                                                                                             // deUint32                                                             viewMask;
                0u,                                                                                             // deUint32                                                             inputAttachmentCount;
-               DE_NULL,                                                                                // const VkAttachmentReference2KHR*             pInputAttachments;
+               DE_NULL,                                                                                // const VkAttachmentReference2*                pInputAttachments;
                0u,                                                                                             // deUint32                                                             colorAttachmentCount;
-               DE_NULL,                                                                                // const VkAttachmentReference2KHR*             pColorAttachments;
-               DE_NULL,                                                                                // const VkAttachmentReference2KHR*             pResolveAttachments;
-               &multisampleAttachmentRef,                                              // const VkAttachmentReference2KHR*             pDepthStencilAttachment;
+               DE_NULL,                                                                                // const VkAttachmentReference2*                pColorAttachments;
+               DE_NULL,                                                                                // const VkAttachmentReference2*                pResolveAttachments;
+               &multisampleAttachmentRef,                                              // const VkAttachmentReference2*                pDepthStencilAttachment;
                0u,                                                                                             // deUint32                                                             preserveAttachmentCount;
                DE_NULL                                                                                 // const deUint32*                                              pPreserveAttachments;
        );
 
-       const RenderPassCreateInfo2 renderPassCreator           // VkRenderPassCreateInfo2KHR
+       const RenderPassCreateInfo2 renderPassCreator           // VkRenderPassCreateInfo2
        (
                                                                                                                // VkStructureType                                              sType;
                DE_NULL,                                                                                // const void*                                                  pNext;
                (VkRenderPassCreateFlags)0u,                                    // VkRenderPassCreateFlags                              flags;
                (deUint32)attachments.size(),                                   // deUint32                                                             attachmentCount;
-               &attachments[0],                                                                // const VkAttachmentDescription2KHR*   pAttachments;
+               &attachments[0],                                                                // const VkAttachmentDescription2*              pAttachments;
                1u,                                                                                             // deUint32                                                             subpassCount;
-               &subpass,                                                                               // const VkSubpassDescription2KHR*              pSubpasses;
+               &subpass,                                                                               // const VkSubpassDescription2*                 pSubpasses;
                0u,                                                                                             // deUint32                                                             dependencyCount;
-               DE_NULL,                                                                                // const VkSubpassDependency2KHR*               pDependencies;
+               DE_NULL,                                                                                // const VkSubpassDependency2*                  pDependencies;
                0u,                                                                                             // deUint32                                                             correlatedViewMaskCount;
                DE_NULL                                                                                 // const deUint32*                                              pCorrelatedViewMasks;
        );
@@ -853,7 +853,7 @@ bool DepthStencilResolveTest::verifyDepth (void)
        invalidateMappedMemoryRange(vkd, m_context.getDevice(), m_bufferMemory->getMemory(), m_bufferMemory->getOffset(), VK_WHOLE_SIZE);
 
        float expectedValue = m_config.depthExpectedValue;
-       if (m_config.depthResolveMode == VK_RESOLVE_MODE_NONE_KHR)
+       if (m_config.depthResolveMode == VK_RESOLVE_MODE_NONE)
                expectedValue = m_config.clearValue.depth;
 
        // depth data in buffer is tightly packed, ConstPixelBufferAccess
@@ -943,7 +943,7 @@ bool DepthStencilResolveTest::verifyStencil (void)
        // because of that depth and stencil need to be tested separately
 
        deUint8 expectedValue = m_config.stencilExpectedValue;
-       if (m_config.stencilResolveMode == VK_RESOLVE_MODE_NONE_KHR)
+       if (m_config.stencilResolveMode == VK_RESOLVE_MODE_NONE)
                expectedValue = static_cast<deUint8>(m_config.clearValue.stencil);
 
        for (deUint32 valueIndex = 0; valueIndex < valuesCount; valueIndex++)
@@ -1114,16 +1114,16 @@ void initTests (tcu::TestCaseGroup* group)
 
        struct ResolveModeData
        {
-               VkResolveModeFlagBitsKHR        flag;
-               std::string                                     name;
+               VkResolveModeFlagBits   flag;
+               std::string                             name;
        };
        ResolveModeData resolveModes[] =
        {
-               { VK_RESOLVE_MODE_NONE_KHR,                             "none" },
-               { VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR,  "zero" },
-               { VK_RESOLVE_MODE_AVERAGE_BIT_KHR,              "average" },
-               { VK_RESOLVE_MODE_MIN_BIT_KHR,                  "min" },
-               { VK_RESOLVE_MODE_MAX_BIT_KHR,                  "max" },
+               { VK_RESOLVE_MODE_NONE,                         "none" },
+               { VK_RESOLVE_MODE_SAMPLE_ZERO_BIT,      "zero" },
+               { VK_RESOLVE_MODE_AVERAGE_BIT,          "average" },
+               { VK_RESOLVE_MODE_MIN_BIT,                      "min" },
+               { VK_RESOLVE_MODE_MAX_BIT,                      "max" },
        };
 
        struct ImageTestData
@@ -1220,24 +1220,24 @@ void initTests (tcu::TestCaseGroup* group)
                                                {
                                                        // there is no average resolve mode for stencil - go to next iteration
                                                        ResolveModeData& sResolve = resolveModes[stencilResolveModeNdx];
-                                                       if (sResolve.flag == VK_RESOLVE_MODE_AVERAGE_BIT_KHR)
+                                                       if (sResolve.flag == VK_RESOLVE_MODE_AVERAGE_BIT)
                                                                continue;
 
                                                        // if pDepthStencilResolveAttachment is not NULL and does not have the value VK_ATTACHMENT_UNUSED,
                                                        // depthResolveMode and stencilResolveMode must not both be VK_RESOLVE_MODE_NONE_KHR
                                                        ResolveModeData& dResolve = resolveModes[depthResolveModeNdx];
-                                                       if ((dResolve.flag == VK_RESOLVE_MODE_NONE_KHR) && (sResolve.flag == VK_RESOLVE_MODE_NONE_KHR))
+                                                       if ((dResolve.flag == VK_RESOLVE_MODE_NONE) && (sResolve.flag == VK_RESOLVE_MODE_NONE))
                                                                continue;
 
                                                        // If there is no depth, the depth resolve mode should be NONE, or
                                                        // match the stencil resolve mode.
-                                                       if (!hasDepth && (dResolve.flag != VK_RESOLVE_MODE_NONE_KHR) &&
+                                                       if (!hasDepth && (dResolve.flag != VK_RESOLVE_MODE_NONE) &&
                                                                (dResolve.flag != sResolve.flag))
                                                                continue;
 
                                                        // If there is no stencil, the stencil resmove mode should be NONE, or
                                                        // match the depth resolve mode.
-                                                       if (!hasStencil && (sResolve.flag != VK_RESOLVE_MODE_NONE_KHR) &&
+                                                       if (!hasStencil && (sResolve.flag != VK_RESOLVE_MODE_NONE) &&
                                                                (dResolve.flag != sResolve.flag))
                                                                continue;
 
@@ -1370,7 +1370,7 @@ void initTests (tcu::TestCaseGroup* group)
                                                                aspectFlags,
                                                                sampleCount,
                                                                mode.flag,
-                                                               VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR,
+                                                               VK_RESOLVE_MODE_SAMPLE_ZERO_BIT,
                                                                VB_DEPTH,
                                                                layeredTextureTestData.clearValue,
                                                                expectedValue,
@@ -1381,7 +1381,7 @@ void initTests (tcu::TestCaseGroup* group)
                                                }
 
                                                // there is no average resolve mode for stencil - go to next iteration
-                                               if (mode.flag == VK_RESOLVE_MODE_AVERAGE_BIT_KHR)
+                                               if (mode.flag == VK_RESOLVE_MODE_AVERAGE_BIT)
                                                        continue;
 
                                                if (hasStencil)
@@ -1400,7 +1400,7 @@ void initTests (tcu::TestCaseGroup* group)
                                                                layeredTextureTestData.renderArea,
                                                                aspectFlags,
                                                                sampleCount,
-                                                               VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR,
+                                                               VK_RESOLVE_MODE_SAMPLE_ZERO_BIT,
                                                                mode.flag,
                                                                VB_STENCIL,
                                                                layeredTextureTestData.clearValue,
index 65a9f6a..28dd49c 100644 (file)
@@ -176,9 +176,9 @@ Move<VkImage> createImage (const DeviceInterface&   vk,
        VkImageUsageFlags depthUsage    = (separateStencilUsage == TEST_DEPTH)   ? usage : (VkImageUsageFlags)VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT;
        VkImageUsageFlags stencilUsage  = (separateStencilUsage == TEST_STENCIL) ? usage : (VkImageUsageFlags)VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT;
 
-       const VkImageStencilUsageCreateInfoEXT stencilUsageInfo =
+       const VkImageStencilUsageCreateInfo stencilUsageInfo =
        {
-               VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT,
+               VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO,
                DE_NULL,
                stencilUsage
        };
@@ -272,9 +272,9 @@ Move<VkImage> createImage (const InstanceInterface& vki,
 
                if (separateStencilUsage)
                {
-                       const VkImageStencilUsageCreateInfoEXT  stencilUsageInfo =
+                       const VkImageStencilUsageCreateInfo     stencilUsageInfo =
                        {
-                               VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT,                  //      VkStructureType                 sType
+                               VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO,                              //      VkStructureType                 sType
                                DE_NULL,                                                                                                                //      const void*                             pNext
                                stencilUsage                                                                                                    //      VkImageUsageFlags               stencilUsage
                        };
index 828d7c4..90d2da6 100644 (file)
@@ -72,7 +72,7 @@ AttachmentDescription2::AttachmentDescription2 (const void*                                           pNext_,
                                                                                                VkImageLayout                                   initialLayout_,
                                                                                                VkImageLayout                                   finalLayout_)
 {
-       sType                   = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR;
+       sType                   = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2;
        pNext                   = pNext_;
        flags                   = flags_;
        format                  = format_;
@@ -104,7 +104,7 @@ AttachmentReference2::AttachmentReference2 (const void*                     pNext_,
                                                                                        VkImageLayout           layout_,
                                                                                        VkImageAspectFlags      aspectMask_)
 {
-       sType           = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR;
+       sType           = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2;
        pNext           = pNext_;
        attachment      = attachment_;
        layout          = layout_;
@@ -147,15 +147,15 @@ SubpassDescription2::SubpassDescription2 (const void*                                             pNext_,
                                                                                  VkPipelineBindPoint                           pipelineBindPoint_,
                                                                                  deUint32                                                      viewMask_,
                                                                                  deUint32                                                      inputAttachmentCount_,
-                                                                                 const VkAttachmentReference2KHR*      pInputAttachments_,
+                                                                                 const VkAttachmentReference2*         pInputAttachments_,
                                                                                  deUint32                                                      colorAttachmentCount_,
-                                                                                 const VkAttachmentReference2KHR*      pColorAttachments_,
-                                                                                 const VkAttachmentReference2KHR*      pResolveAttachments_,
-                                                                                 const VkAttachmentReference2KHR*      pDepthStencilAttachment_,
+                                                                                 const VkAttachmentReference2*         pColorAttachments_,
+                                                                                 const VkAttachmentReference2*         pResolveAttachments_,
+                                                                                 const VkAttachmentReference2*         pDepthStencilAttachment_,
                                                                                  deUint32                                                      preserveAttachmentCount_,
                                                                                  const deUint32*                                       pPreserveAttachments_)
 {
-       sType                                   = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR;
+       sType                                   = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2;
        pNext                                   = pNext_;
        flags                                   = flags_;
        pipelineBindPoint               = pipelineBindPoint_;
@@ -205,7 +205,7 @@ SubpassDependency2::SubpassDependency2 (const void*                         pNext_,
                                                                                VkDependencyFlags               dependencyFlags_,
                                                                                deInt32                                 viewOffset_)
 {
-       sType                   = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR;
+       sType                   = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2;
        pNext                   = pNext_;
        srcSubpass              = srcSubpass_;
        dstSubpass              = dstSubpass_;
@@ -252,15 +252,15 @@ Move<VkRenderPass>        RenderPassCreateInfo1::createRenderPass (const DeviceInterfac
 RenderPassCreateInfo2::RenderPassCreateInfo2 (const void*                                                      pNext_,
                                                                                          VkRenderPassCreateFlags                               flags_,
                                                                                          deUint32                                                              attachmentCount_,
-                                                                                         const VkAttachmentDescription2KHR*    pAttachments_,
+                                                                                         const VkAttachmentDescription2*               pAttachments_,
                                                                                          deUint32                                                              subpassCount_,
-                                                                                         const VkSubpassDescription2KHR*               pSubpasses_,
+                                                                                         const VkSubpassDescription2*                  pSubpasses_,
                                                                                          deUint32                                                              dependencyCount_,
-                                                                                         const VkSubpassDependency2KHR*                pDependencies_,
+                                                                                         const VkSubpassDependency2*                   pDependencies_,
                                                                                          deUint32                                                              correlatedViewMaskCount_,
                                                                                          const deUint32*                                               pCorrelatedViewMasks_)
 {
-       sType                                   = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR;
+       sType                                   = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2;
        pNext                                   = pNext_;
        flags                                   = flags_;
        attachmentCount                 = attachmentCount_;
@@ -275,7 +275,7 @@ RenderPassCreateInfo2::RenderPassCreateInfo2 (const void*                                                   pNext_,
 
 Move<VkRenderPass>     RenderPassCreateInfo2::createRenderPass (const DeviceInterface& vk, VkDevice device) const
 {
-       return vk::createRenderPass2KHR(vk, device, this);
+       return vk::createRenderPass2(vk, device, this);
 }
 
 SubpassBeginInfo1::SubpassBeginInfo1 (const void*              pNext_,
@@ -290,7 +290,7 @@ SubpassBeginInfo1::SubpassBeginInfo1 (const void*           pNext_,
 SubpassBeginInfo2::SubpassBeginInfo2 (const void*              pNext_,
                                                                          VkSubpassContents     contents_)
 {
-       sType           = VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR;
+       sType           = VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO;
        pNext           = pNext_;
        contents        = contents_;
 }
@@ -304,7 +304,7 @@ SubpassEndInfo1::SubpassEndInfo1 (const void*       pNext_)
 
 SubpassEndInfo2::SubpassEndInfo2 (const void*  pNext_)
 {
-       sType   = VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR;
+       sType   = VK_STRUCTURE_TYPE_SUBPASS_END_INFO;
        pNext   = pNext_;
 }
 
@@ -343,7 +343,7 @@ void RenderpassSubpass2::cmdBeginRenderPass (const DeviceInterface&                 vk,
                                                                                         const VkRenderPassBeginInfo*   pRenderPassBegin,
                                                                                         const SubpassBeginInfo*                pSubpassBeginInfo)
 {
-       vk.cmdBeginRenderPass2KHR(cmdBuffer, pRenderPassBegin, pSubpassBeginInfo);
+       vk.cmdBeginRenderPass2(cmdBuffer, pRenderPassBegin, pSubpassBeginInfo);
 }
 
 void RenderpassSubpass2::cmdNextSubpass (const DeviceInterface&                vk,
@@ -354,7 +354,7 @@ void RenderpassSubpass2::cmdNextSubpass (const DeviceInterface&             vk,
        DE_ASSERT(pSubpassBeginInfo != DE_NULL);
        DE_ASSERT(pSubpassEndInfo != DE_NULL);
 
-       vk.cmdNextSubpass2KHR(cmdBuffer, pSubpassBeginInfo, pSubpassEndInfo);
+       vk.cmdNextSubpass2(cmdBuffer, pSubpassBeginInfo, pSubpassEndInfo);
 }
 
 void RenderpassSubpass2::cmdEndRenderPass (const DeviceInterface&      vk,
@@ -363,7 +363,7 @@ void RenderpassSubpass2::cmdEndRenderPass (const DeviceInterface&   vk,
 {
        DE_ASSERT(pSubpassEndInfo != DE_NULL);
 
-       vk.cmdEndRenderPass2KHR(cmdBuffer, pSubpassEndInfo);
+       vk.cmdEndRenderPass2(cmdBuffer, pSubpassEndInfo);
 }
 
 // For internal to RP/RP2 conversions
@@ -614,7 +614,7 @@ const std::vector<VkInputAttachmentAspectReference>& RenderPass::getInputAspects
 template <typename AttachmentDesc>
 AttachmentDesc createAttachmentDescription (const Attachment& attachment)
 {
-       const AttachmentDesc attachmentDescription      //  VkAttachmentDescription                                                     ||  VkAttachmentDescription2KHR
+       const AttachmentDesc attachmentDescription      //  VkAttachmentDescription                                                     ||  VkAttachmentDescription2
        (
                                                                                                //                                                                                                      ||  VkStructureType                                     sType;
                DE_NULL,                                                                //                                                                                                      ||  const void*                                         pNext;
@@ -635,7 +635,7 @@ AttachmentDesc createAttachmentDescription (const Attachment& attachment)
 template <typename AttachmentRef>
 AttachmentRef createAttachmentReference (const AttachmentReference& referenceInfo)
 {
-       const AttachmentRef     reference               //  VkAttachmentReference                               ||  VkAttachmentReference2KHR
+       const AttachmentRef     reference               //  VkAttachmentReference                               ||  VkAttachmentReference2
        (
                                                                                //                                                                              ||  VkStructureType                             sType;
                DE_NULL,                                                //                                                                              ||  const void*                                 pNext;
@@ -674,7 +674,7 @@ SubpassDesc createSubpassDescription (const Subpass&                                subpass,
        DE_ASSERT(resolveAttachmentReferences.empty() || colorAttachmentReferences.size() == resolveAttachmentReferences.size());
 
        {
-               const SubpassDesc subpassDescription                                                                                                            //  VkSubpassDescription                                                                                ||  VkSubpassDescription2KHR
+               const SubpassDesc subpassDescription                                                                                                            //  VkSubpassDescription                                                                                ||  VkSubpassDescription2
                (
                                                                                                                                                                                                        //                                                                                                                              ||  VkStructureType                                             sType;
                        DE_NULL,                                                                                                                                                                //                                                                                                                              ||  const void*                                                 pNext;
@@ -682,11 +682,11 @@ SubpassDesc createSubpassDescription (const Subpass&                              subpass,
                        subpass.getPipelineBindPoint(),                                                                                                                 //  VkPipelineBindPoint                         pipelineBindPoint;                      ||  VkPipelineBindPoint                                 pipelineBindPoint;
                        0u,                                                                                                                                                                             //                                                                                                                              ||  deUint32                                                    viewMask;
                        (deUint32)inputAttachmentReferences.size(),                                                                                             //  deUint32                                            inputAttachmentCount;           ||  deUint32                                                    inputAttachmentCount;
-                       inputAttachmentReferences.empty() ? DE_NULL : &inputAttachmentReferences[0],                    //  const VkAttachmentReference*        pInputAttachments;                      ||  const VkAttachmentReference2KHR*    pInputAttachments;
+                       inputAttachmentReferences.empty() ? DE_NULL : &inputAttachmentReferences[0],                    //  const VkAttachmentReference*        pInputAttachments;                      ||  const VkAttachmentReference2*               pInputAttachments;
                        (deUint32)colorAttachmentReferences.size(),                                                                                             //  deUint32                                            colorAttachmentCount;           ||  deUint32                                                    colorAttachmentCount;
-                       colorAttachmentReferences.empty() ? DE_NULL :  &colorAttachmentReferences[0],                   //  const VkAttachmentReference*        pColorAttachments;                      ||  const VkAttachmentReference2KHR*    pColorAttachments;
-                       resolveAttachmentReferences.empty() ? DE_NULL : &resolveAttachmentReferences[0],                //  const VkAttachmentReference*        pResolveAttachments;            ||  const VkAttachmentReference2KHR*    pResolveAttachments;
-                       &depthStencilAttachmentReferences[0],                                                                                                   //  const VkAttachmentReference*        pDepthStencilAttachment;        ||  const VkAttachmentReference2KHR*    pDepthStencilAttachment;
+                       colorAttachmentReferences.empty() ? DE_NULL :  &colorAttachmentReferences[0],                   //  const VkAttachmentReference*        pColorAttachments;                      ||  const VkAttachmentReference2*               pColorAttachments;
+                       resolveAttachmentReferences.empty() ? DE_NULL : &resolveAttachmentReferences[0],                //  const VkAttachmentReference*        pResolveAttachments;            ||  const VkAttachmentReference2*               pResolveAttachments;
+                       &depthStencilAttachmentReferences[0],                                                                                                   //  const VkAttachmentReference*        pDepthStencilAttachment;        ||  const VkAttachmentReference2*               pDepthStencilAttachment;
                        (deUint32)preserveAttachmentReferences->size(),                                                                                 //  deUint32                                            preserveAttachmentCount;        ||  deUint32                                                    preserveAttachmentCount;
                        preserveAttachmentReferences->empty() ? DE_NULL : &(*preserveAttachmentReferences)[0]   //  const deUint32*                                     pPreserveAttachments;           ||  const deUint32*                                             pPreserveAttachments;
                );
@@ -698,7 +698,7 @@ SubpassDesc createSubpassDescription (const Subpass&                                subpass,
 template <typename SubpassDep>
 SubpassDep createSubpassDependency (const SubpassDependency& dependencyInfo)
 {
-       const SubpassDep dependency                             //  VkSubpassDependency                                         ||  VkSubpassDependency2KHR
+       const SubpassDep dependency                             //  VkSubpassDependency                                         ||  VkSubpassDependency2
        (
                                                                                        //                                                                                      ||      VkStructureType                         sType
                DE_NULL,                                                        //                                                                                      ||      const void*                                     pNext
@@ -758,17 +758,17 @@ Move<VkRenderPass> createRenderPass (const DeviceInterface&       vk,
        for (size_t depNdx = 0; depNdx < renderPassInfo.getDependencies().size(); depNdx++)
                dependencies.push_back(createSubpassDependency<SubpassDep>(renderPassInfo.getDependencies()[depNdx]));
 
-       const RenderPassCreateInfo      renderPassCreator                               //  VkRenderPassCreateInfo                                                              ||  VkRenderPassCreateInfo2KHR
+       const RenderPassCreateInfo      renderPassCreator                               //  VkRenderPassCreateInfo                                                              ||  VkRenderPassCreateInfo2
        (
                                                                                                                                //  VkStructureType                                     sType;                          ||  VkStructureType                                             sType;
                inputAspectCreateInfo.get(),                                                    //  const void*                                         pNext;                          ||  const void*                                                 pNext;
                (VkRenderPassCreateFlags)0u,                                                    //  VkRenderPassCreateFlags                     flags;                          ||  VkRenderPassCreateFlags                             flags;
                (deUint32)attachments.size(),                                                   //  deUint32                                            attachmentCount;        ||  deUint32                                                    attachmentCount;
-               (attachments.empty() ? DE_NULL : &attachments[0]),              //  const VkAttachmentDescription*      pAttachments;           ||  const VkAttachmentDescription2KHR*  pAttachments;
+               (attachments.empty() ? DE_NULL : &attachments[0]),              //  const VkAttachmentDescription*      pAttachments;           ||  const VkAttachmentDescription2*             pAttachments;
                (deUint32)subpasses.size(),                                                             //  deUint32                                            subpassCount;           ||  deUint32                                                    subpassCount;
-               (subpasses.empty() ? DE_NULL : &subpasses[0]),                  //  const VkSubpassDescription*         pSubpasses;                     ||  const VkSubpassDescription2KHR*             pSubpasses;
+               (subpasses.empty() ? DE_NULL : &subpasses[0]),                  //  const VkSubpassDescription*         pSubpasses;                     ||  const VkSubpassDescription2*                pSubpasses;
                (deUint32)dependencies.size(),                                                  //  deUint32                                            dependencyCount;        ||  deUint32                                                    dependencyCount;
-               (dependencies.empty() ? DE_NULL : &dependencies[0]),    //  const VkSubpassDependency*          pDependencies;          ||  const VkSubpassDependency2KHR*              pDependencies;
+               (dependencies.empty() ? DE_NULL : &dependencies[0]),    //  const VkSubpassDependency*          pDependencies;          ||  const VkSubpassDependency2*                 pDependencies;
                0u,                                                                                                             //                                                                                                              ||  deUint32                                                    correlatedViewMaskCount;
                DE_NULL                                                                                                 //                                                                                                              ||  const deUint32*                                             pCorrelatedViewMasks;
        );
index e2762dd..7ec2510 100644 (file)
@@ -59,7 +59,7 @@ public:
                                                         VkImageLayout                                  finalLayout);
 };
 
-class AttachmentDescription2 : public vk::VkAttachmentDescription2KHR
+class AttachmentDescription2 : public vk::VkAttachmentDescription2
 {
 public:
        AttachmentDescription2  (const void*                                    pNext,
@@ -83,7 +83,7 @@ public:
                                                         VkImageAspectFlags     aspectMask);
 };
 
-class AttachmentReference2 : public vk::VkAttachmentReference2KHR
+class AttachmentReference2 : public vk::VkAttachmentReference2
 {
 public:
        AttachmentReference2    (const void*            pNext,
@@ -109,7 +109,7 @@ public:
                                                 const deUint32*                                        pPreserveAttachments);
 };
 
-class SubpassDescription2 : public vk::VkSubpassDescription2KHR
+class SubpassDescription2 : public vk::VkSubpassDescription2
 {
 public:
        SubpassDescription2     (const void*                                            pNext,
@@ -117,11 +117,11 @@ public:
                                                 VkPipelineBindPoint                            pipelineBindPoint,
                                                 deUint32                                                       viewMask,
                                                 deUint32                                                       inputAttachmentCount,
-                                                const VkAttachmentReference2KHR*       pInputAttachments,
+                                                const VkAttachmentReference2*          pInputAttachments,
                                                 deUint32                                                       colorAttachmentCount,
-                                                const VkAttachmentReference2KHR*       pColorAttachments,
-                                                const VkAttachmentReference2KHR*       pResolveAttachments,
-                                                const VkAttachmentReference2KHR*       pDepthStencilAttachment,
+                                                const VkAttachmentReference2*          pColorAttachments,
+                                                const VkAttachmentReference2*          pResolveAttachments,
+                                                const VkAttachmentReference2*          pDepthStencilAttachment,
                                                 deUint32                                                       preserveAttachmentCount,
                                                 const deUint32*                                        pPreserveAttachments);
 };
@@ -140,7 +140,7 @@ public:
                                                 deInt32                                viewOffset);
 };
 
-class SubpassDependency2 : public vk::VkSubpassDependency2KHR
+class SubpassDependency2 : public vk::VkSubpassDependency2
 {
 public:
        SubpassDependency2      (const void*                    pNext,
@@ -172,17 +172,17 @@ public:
                                                                                                         VkDevice device) const;
 };
 
-class RenderPassCreateInfo2 : public VkRenderPassCreateInfo2KHR
+class RenderPassCreateInfo2 : public VkRenderPassCreateInfo2
 {
 public:
                                                        RenderPassCreateInfo2   (const void*                                            pNext,
                                                                                                         VkRenderPassCreateFlags                        flags,
                                                                                                         deUint32                                                       attachmentCount,
-                                                                                                        const VkAttachmentDescription2KHR*     pAttachments,
+                                                                                                        const VkAttachmentDescription2*        pAttachments,
                                                                                                         deUint32                                                       subpassCount,
-                                                                                                        const VkSubpassDescription2KHR*        pSubpasses,
+                                                                                                        const VkSubpassDescription2*           pSubpasses,
                                                                                                         deUint32                                                       dependencyCount,
-                                                                                                        const VkSubpassDependency2KHR*         pDependencies,
+                                                                                                        const VkSubpassDependency2*            pDependencies,
                                                                                                         deUint32                                                       correlatedViewMaskCount,
                                                                                                         const deUint32*                                        pCorrelatedViewMasks);
 
@@ -199,7 +199,7 @@ public:
        VkSubpassContents       contents;
 };
 
-class SubpassBeginInfo2 : public VkSubpassBeginInfoKHR
+class SubpassBeginInfo2 : public VkSubpassBeginInfo
 {
 public:
                                                SubpassBeginInfo2       (const void*            pNext,
@@ -212,7 +212,7 @@ public:
                                                SubpassEndInfo1 (const void*    pNext);
 };
 
-class SubpassEndInfo2 : public VkSubpassEndInfoKHR
+class SubpassEndInfo2 : public VkSubpassEndInfo
 {
 public:
                                                SubpassEndInfo2 (const void*    pNext);
index ed3244a..6f8cebb 100644 (file)
@@ -471,9 +471,9 @@ AtomicOperationCaseInstance::AtomicOperationCaseInstance (Context&                          context,
                if (!context.isDeviceFunctionalitySupported("VK_KHR_shader_atomic_int64"))
                        TCU_THROW(NotSupportedError, "Missing extension: VK_KHR_shader_atomic_int64");
 
-               VkPhysicalDeviceShaderAtomicInt64FeaturesKHR shaderAtomicInt64Features;
-               deMemset(&shaderAtomicInt64Features, 0x0, sizeof(VkPhysicalDeviceShaderAtomicInt64FeaturesKHR));
-               shaderAtomicInt64Features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR;
+               VkPhysicalDeviceShaderAtomicInt64Features shaderAtomicInt64Features;
+               deMemset(&shaderAtomicInt64Features, 0x0, sizeof(VkPhysicalDeviceShaderAtomicInt64Features));
+               shaderAtomicInt64Features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES;
                shaderAtomicInt64Features.pNext = DE_NULL;
 
                VkPhysicalDeviceFeatures2 features;
index 8af40be..750d354 100644 (file)
@@ -156,7 +156,7 @@ ShaderDiscardCase::ShaderDiscardCase (tcu::TestContext&             testCtx,
 
 void ShaderDiscardCase::checkSupport(Context& context) const
 {
-       if (m_demote && !context.getShaderDemoteToHelperInvocationFeatures().shaderDemoteToHelperInvocation)
+       if (m_demote && !context.getShaderDemoteToHelperInvocationFeaturesEXT().shaderDemoteToHelperInvocation)
                TCU_THROW(NotSupportedError, "VK_EXT_shader_demote_to_helper_invocation not supported");
 }
 
index 1b77886..78d039d 100644 (file)
@@ -61,6 +61,8 @@ set(DEQP_VK_SPIRV_ASSEMBLY_SRCS
        vktSpvAsmWorkgroupMemoryTests.hpp
        vktSpvAsmPtrAccessChainTests.cpp
        vktSpvAsmPtrAccessChainTests.hpp
+       vktSpvAsmFloatControlsExtensionlessTests.cpp
+       vktSpvAsmFloatControlsExtensionlessTests.hpp
        )
 
 set(DEQP_VK_SPIRV_ASSEMBLY_LIBS
index 504f70b..58ef31d 100644 (file)
@@ -60,7 +60,8 @@ typedef de::SharedPtr<SamplerHandleUp>                                SamplerHandleSp;
  * The memory is created as host visible and passed back as a vk::Allocation
  * instance via outMemory.
  *//*--------------------------------------------------------------------*/
-Move<VkBuffer> createBufferAndBindMemory (const DeviceInterface&       vkdi,
+Move<VkBuffer> createBufferAndBindMemory (vkt::Context&                                context,
+                                                                                 const DeviceInterface&        vkdi,
                                                                                  const VkDevice&                       device,
                                                                                  VkDescriptorType                      dtype,
                                                                                  Allocator&                            allocator,
@@ -72,7 +73,7 @@ Move<VkBuffer> createBufferAndBindMemory (const DeviceInterface&      vkdi,
        VkBufferUsageFlags                      usageFlags                      = (VkBufferUsageFlags)0u;
 
        if (physStorageBuffer)
-               usageFlags |= VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT;
+               usageFlags |= VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT;
 
        switch (dtype)
        {
@@ -98,7 +99,10 @@ Move<VkBuffer> createBufferAndBindMemory (const DeviceInterface&     vkdi,
 
        Move<VkBuffer>                          buffer                  (createBuffer(vkdi, device, &bufferCreateInfo));
        const VkMemoryRequirements      requirements    = getBufferMemoryRequirements(vkdi, device, *buffer);
-       AllocationMp                            bufferMemory    = allocator.allocate(requirements, coherent ? MemoryRequirement::Coherent | MemoryRequirement::HostVisible : MemoryRequirement::HostVisible);
+       AllocationMp                            bufferMemory    = allocator.allocate(requirements,
+                                                                                                       (coherent ? MemoryRequirement::Coherent : MemoryRequirement::Any) |
+                                                                                                       (context.isDeviceFunctionalitySupported("VK_KHR_buffer_device_address") && physStorageBuffer ? MemoryRequirement::DeviceAddress : MemoryRequirement::Any) |
+                                                                                                       MemoryRequirement::HostVisible);
 
        VK_CHECK(vkdi.bindBufferMemory(device, *buffer, bufferMemory->getMemory(), bufferMemory->getOffset()));
        *outMemory = bufferMemory;
@@ -419,11 +423,8 @@ tcu::TestStatus SpvAsmComputeShaderInstance::iterate (void)
        vector<VkDescriptorType>                        descriptorTypes;
 
        // Check all required extensions are supported
-       for (std::vector<std::string>::const_iterator i = m_shaderSpec.extensions.begin(); i != m_shaderSpec.extensions.end(); ++i)
-       {
-               if (!de::contains(m_context.getDeviceExtensions().begin(), m_context.getDeviceExtensions().end(), *i))
-                       TCU_THROW(NotSupportedError, (std::string("Extension not supported: ") + *i).c_str());
-       }
+       for (const auto& ext : m_shaderSpec.extensions)
+               m_context.requireDeviceFunctionality(ext);
 
        // Core features
        {
@@ -491,7 +492,7 @@ tcu::TestStatus SpvAsmComputeShaderInstance::iterate (void)
                if (!isFloatControlsFeaturesSupported(m_context, m_shaderSpec.requestedVulkanFeatures.floatControlsProperties))
                        TCU_THROW(NotSupportedError, "Requested Float Controls features not supported");
 
-               if (m_shaderSpec.usesPhysStorageBuffer && !m_context.getBufferDeviceAddressFeatures().bufferDeviceAddress)
+               if (m_shaderSpec.usesPhysStorageBuffer && !m_context.isBufferDeviceAddressSupported())
                        TCU_THROW(NotSupportedError, "Request physical storage buffer feature not supported");
        }
 
@@ -529,7 +530,7 @@ tcu::TestStatus SpvAsmComputeShaderInstance::iterate (void)
                        const size_t            numBytes                = inputBytes.size();
 
                        AllocationMp            bufferAlloc;
-                       BufferHandleUp*         buffer                  = new BufferHandleUp(createBufferAndBindMemory(vkdi, device, descType, allocator, numBytes, &bufferAlloc, m_shaderSpec.usesPhysStorageBuffer, m_shaderSpec.coherentMemory));
+                       BufferHandleUp*         buffer                  = new BufferHandleUp(createBufferAndBindMemory(m_context, vkdi, device, descType, allocator, numBytes, &bufferAlloc, m_shaderSpec.usesPhysStorageBuffer, m_shaderSpec.coherentMemory));
 
                        setMemory(vkdi, device, &*bufferAlloc, numBytes, &inputBytes.front(), m_shaderSpec.coherentMemory);
                        inputBuffers.push_back(BufferHandleSp(buffer));
@@ -546,7 +547,7 @@ tcu::TestStatus SpvAsmComputeShaderInstance::iterate (void)
                        const size_t                            numBytes                = inputBytes.size();
 
                        AllocationMp                            bufferAlloc;
-                       BufferHandleUp*                         buffer                  = new BufferHandleUp(createBufferAndBindMemory(vkdi, device, descType, allocator, numBytes, &bufferAlloc, m_shaderSpec.usesPhysStorageBuffer));
+                       BufferHandleUp*                         buffer                  = new BufferHandleUp(createBufferAndBindMemory(m_context, vkdi, device, descType, allocator, numBytes, &bufferAlloc, m_shaderSpec.usesPhysStorageBuffer));
 
                        AllocationMp                            imageAlloc;
                        ImageHandleUp*                          image                   = new ImageHandleUp(createImageAndBindMemory(vkdi, device, descType, allocator, queueFamilyIndex, &imageAlloc));
@@ -744,7 +745,7 @@ tcu::TestStatus SpvAsmComputeShaderInstance::iterate (void)
                output->getBytes(outputBytes);
 
                const size_t            numBytes        = outputBytes.size();
-               BufferHandleUp*         buffer          = new BufferHandleUp(createBufferAndBindMemory(vkdi, device, descriptorTypes.back(), allocator, numBytes, &alloc, m_shaderSpec.usesPhysStorageBuffer, m_shaderSpec.coherentMemory));
+               BufferHandleUp*         buffer          = new BufferHandleUp(createBufferAndBindMemory(m_context, vkdi, device, descriptorTypes.back(), allocator, numBytes, &alloc, m_shaderSpec.usesPhysStorageBuffer, m_shaderSpec.coherentMemory));
 
                fillMemoryWithValue(vkdi, device, &*alloc, numBytes, 0xff, m_shaderSpec.coherentMemory);
                descriptorInfos.push_back(vk::makeDescriptorBufferInfo(**buffer, 0u, numBytes));
@@ -757,9 +758,11 @@ tcu::TestStatus SpvAsmComputeShaderInstance::iterate (void)
        // all the descriptors with just a desciptor to this new buffer.
        if (m_shaderSpec.usesPhysStorageBuffer)
        {
-               VkBufferDeviceAddressInfoEXT info =
+               const bool useKHR = m_context.isDeviceFunctionalitySupported("VK_KHR_buffer_device_address");
+
+               VkBufferDeviceAddressInfo info =
                {
-                       VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT,       // VkStructureType      sType;
+                       VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO,           // VkStructureType      sType;
                        DE_NULL,                                                                                        // const void*          pNext;
                        0,                                                                                                      // VkBuffer                     buffer
                };
@@ -767,13 +770,21 @@ tcu::TestStatus SpvAsmComputeShaderInstance::iterate (void)
                for (deUint32 inputNdx = 0; inputNdx < m_shaderSpec.inputs.size(); ++inputNdx)
                {
                        info.buffer = **inputBuffers[inputNdx];
-                       VkDeviceAddress addr = vkdi.getBufferDeviceAddressEXT(device, &info);
+                       VkDeviceAddress addr;
+                       if (useKHR)
+                               addr = vkdi.getBufferDeviceAddress(device, &info);
+                       else
+                               addr = vkdi.getBufferDeviceAddressEXT(device, &info);
                        gpuAddrs.push_back(addr);
                }
                for (deUint32 outputNdx = 0; outputNdx < m_shaderSpec.outputs.size(); ++outputNdx)
                {
                        info.buffer = **outputBuffers[outputNdx];
-                       VkDeviceAddress addr = vkdi.getBufferDeviceAddressEXT(device, &info);
+                       VkDeviceAddress addr;
+                       if (useKHR)
+                               addr = vkdi.getBufferDeviceAddress(device, &info);
+                       else
+                               addr = vkdi.getBufferDeviceAddressEXT(device, &info);
                        gpuAddrs.push_back(addr);
                }
 
@@ -783,7 +794,7 @@ tcu::TestStatus SpvAsmComputeShaderInstance::iterate (void)
                const size_t            numBytes                = gpuAddrs.size() * sizeof(VkDeviceAddress);
 
                AllocationMp            bufferAlloc;
-               BufferHandleUp*         buffer                  = new BufferHandleUp(createBufferAndBindMemory(vkdi, device, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER,
+               BufferHandleUp*         buffer                  = new BufferHandleUp(createBufferAndBindMemory(m_context, vkdi, device, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER,
                                                                                                                                                                                   allocator, numBytes, &bufferAlloc, false, m_shaderSpec.coherentMemory));
 
                setMemory(vkdi, device, &*bufferAlloc, numBytes, &gpuAddrs.front(), m_shaderSpec.coherentMemory);
index 2d06d96..794b15f 100644 (file)
@@ -60,14 +60,18 @@ bool verifyOutputWithEpsilon (const std::vector<AllocationSp>& outputAllocs, con
 }
 }
 
-std::string getComputeAsmShaderPreamble (const std::string& capabilities, const std::string& extensions, const std::string& exeModes, const std::string& extraEntryPoints)
+std::string getComputeAsmShaderPreamble (const std::string& capabilities,
+                                                                                const std::string& extensions,
+                                                                                const std::string& exeModes,
+                                                                                const std::string& extraEntryPoints,
+                                                                                const std::string& extraEntryPointsArguments)
 {
        return
                std::string("OpCapability Shader\n") +
                capabilities +
                extensions +
                "OpMemoryModel Logical GLSL450\n"
-               "OpEntryPoint GLCompute %main \"main\" %id\n" +
+               "OpEntryPoint GLCompute %main \"main\" %id " + extraEntryPointsArguments + "\n" +
                extraEntryPoints +
                "OpExecutionMode %main LocalSize 1 1 1\n" +
                exeModes;
@@ -107,19 +111,19 @@ const char* getComputeAsmCommonInt64Types (void)
                "%i64arr    = OpTypeRuntimeArray %i64\n";
 }
 
-const char* getComputeAsmInputOutputBuffer (void)
-{
-       return
+std::string getComputeAsmInputOutputBuffer (std::string blockStorageClass)
+{      // Uniform | StorageBuffer
+       return std::string() +
                "%buf     = OpTypeStruct %f32arr\n"
-               "%bufptr  = OpTypePointer Uniform %buf\n"
-               "%indata    = OpVariable %bufptr Uniform\n"
-               "%outdata   = OpVariable %bufptr Uniform\n";
+               "%bufptr  = OpTypePointer " + blockStorageClass + " %buf\n"
+               "%indata    = OpVariable %bufptr " + blockStorageClass + "\n"
+               "%outdata   = OpVariable %bufptr " + blockStorageClass + "\n";
 }
 
-const char* getComputeAsmInputOutputBufferTraits (void)
-{
-       return
-               "OpDecorate %buf BufferBlock\n"
+std::string getComputeAsmInputOutputBufferTraits (std::string blockStorageClass)
+{      // BufferBlock | Block
+       return std::string() +
+               "OpDecorate %buf " + blockStorageClass + "\n"
                "OpDecorate %indata DescriptorSet 0\n"
                "OpDecorate %indata Binding 0\n"
                "OpDecorate %outdata DescriptorSet 0\n"
index 229413e..18f2b63 100644 (file)
@@ -353,6 +353,7 @@ struct ComputeShaderSpec
        SpirvVersion                                                    spirvVersion;
        bool                                                                    coherentMemory;
        bool                                                                    usesPhysStorageBuffer;
+       bool                                                                    spirvVersion14;
 
                                                                                        ComputeShaderSpec (void)
                                                                                                : entryPoint                                    ("main")
@@ -365,6 +366,7 @@ struct ComputeShaderSpec
                                                                                                , spirvVersion                                  (SPIRV_VERSION_1_0)
                                                                                                , coherentMemory                                (false)
                                                                                                , usesPhysStorageBuffer                 (false)
+                                                                                               , spirvVersion14                                (false)
                                                                                        {}
 };
 
@@ -372,7 +374,11 @@ struct ComputeShaderSpec
  * \brief Helper functions for SPIR-V assembly shared by various tests
  *//*--------------------------------------------------------------------*/
 
-std::string getComputeAsmShaderPreamble                                (const std::string& capabilities = "", const std::string& extensions = "", const std::string& exeModes = "", const std::string& extraEntryPoints = "");
+std::string getComputeAsmShaderPreamble                                (const std::string& capabilities                                = "",
+                                                                                                        const std::string& extensions                                  = "",
+                                                                                                        const std::string& exeModes                                    = "",
+                                                                                                        const std::string& extraEntryPoints                    = "",
+                                                                                                        const std::string& extraEntryPointsArguments   = "");
 const char* getComputeAsmShaderPreambleWithoutLocalSize         (void);
 std::string getComputeAsmCommonTypes                           (std::string blockStorageClass = "Uniform");
 const char*    getComputeAsmCommonInt64Types                   (void);
@@ -381,13 +387,13 @@ const char*       getComputeAsmCommonInt64Types                   (void);
  * Declares two uniform variables (indata, outdata) of type
  * "struct { float[] }". Depends on type "f32arr" (for "float[]").
  *//*--------------------------------------------------------------------*/
-const char* getComputeAsmInputOutputBuffer                     (void);
+std::string getComputeAsmInputOutputBuffer                     (std::string blockStorageClass = "Uniform");
 /*--------------------------------------------------------------------*//*!
  * Declares buffer type and layout for uniform variables indata and
  * outdata. Both of them are SSBO bounded to descriptor set 0.
  * indata is at binding point 0, while outdata is at 1.
  *//*--------------------------------------------------------------------*/
-const char* getComputeAsmInputOutputBufferTraits       (void);
+std::string getComputeAsmInputOutputBufferTraits       (std::string blockStorageClass = "BufferBlock");
 
 bool verifyOutput                                                                      (const std::vector<Resource>&,
                                                                                                        const std::vector<AllocationSp>&        outputAllocs,
diff --git a/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmFloatControlsExtensionlessTests.cpp b/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmFloatControlsExtensionlessTests.cpp
new file mode 100644 (file)
index 0000000..7551ede
--- /dev/null
@@ -0,0 +1,262 @@
+/*-------------------------------------------------------------------------
+ * Vulkan Conformance Tests
+ * ------------------------
+ *
+ * Copyright (c) 2019 The Khronos Group Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ *//*!
+ * \file
+ * \brief SPIR-V Float Control SPIR-V tokens test
+ *//*--------------------------------------------------------------------*/
+
+#include "vkApiVersion.hpp"
+
+#include "vktSpvAsmFloatControlsExtensionlessTests.hpp"
+#include "vktTestCase.hpp"
+#include "vktSpvAsmComputeShaderCase.hpp"
+
+#include "deRandom.hpp"
+#include "deStringUtil.hpp"
+#include "tcuCommandLine.hpp"
+#include "vkQueryUtil.hpp"
+
+namespace vkt
+{
+namespace SpirVAssembly
+{
+
+static const char* TEST_FEATURE_DENORM_PRESERVE                                        = "DenormPreserve";
+static const char* TEST_FEATURE_DENORM_FLUSH_TO_ZERO                   = "DenormFlushToZero";
+static const char* TEST_FEATURE_SIGNED_ZERO_INF_NAN_PRESERVE   = "SignedZeroInfNanPreserve";
+static const char* TEST_FEATURE_ROUNDING_MODE_RTE                              = "RoundingModeRTE";
+static const char* TEST_FEATURE_ROUNDING_MODE_RTZ                              = "RoundingModeRTZ";
+
+using namespace vk;
+using std::map;
+using std::string;
+using std::vector;
+
+static void getComputeSourceCode (std::string& computeSourceCode, const std::string& featureName, const int fpWideness)
+{
+       const std::string capability    = "OpCapability " + featureName + "\n";
+       const std::string exeModes              = "OpExecutionMode %main " + featureName + " " + de::toString(fpWideness) + "\n";
+
+       computeSourceCode =
+               string(getComputeAsmShaderPreamble(capability, "", exeModes, "", "%indata %outdata")) +
+
+               "OpSource GLSL 430\n"
+               "OpName %main \"main\"\n"
+               "OpName %id \"gl_GlobalInvocationID\"\n"
+
+               "OpDecorate %id BuiltIn GlobalInvocationId\n"
+
+               + getComputeAsmInputOutputBufferTraits("Block") + getComputeAsmCommonTypes("StorageBuffer") + getComputeAsmInputOutputBuffer("StorageBuffer") +
+
+               "%id        = OpVariable %uvec3ptr Input\n"
+               "%zero      = OpConstant %i32 0\n"
+
+               "%main      = OpFunction %void None %voidf\n"
+               "%label     = OpLabel\n"
+               "%idval     = OpLoad %uvec3 %id\n"
+               "%x         = OpCompositeExtract %u32 %idval 0\n"
+
+               "             OpNop\n" // Inside a function body
+
+               "%inloc     = OpAccessChain %f32ptr %indata %zero %x\n"
+               "%inval     = OpLoad %f32 %inloc\n"
+               "%neg       = OpFNegate %f32 %inval\n"
+               "%outloc    = OpAccessChain %f32ptr %outdata %zero %x\n"
+               "             OpStore %outloc %neg\n"
+               "             OpReturn\n"
+               "             OpFunctionEnd\n";
+}
+
+static ComputeShaderSpec getComputeShaderSpec (Context& ctx, const std::string& testCaseName)
+{
+       const deUint32          baseSeed                = deStringHash(testCaseName.c_str()) + static_cast<deUint32>(ctx.getTestContext().getCommandLine().getBaseSeed());
+       de::Random                      rnd                             (baseSeed);
+       const int                       numElements             = 64;
+       vector<float>           inputFloats             (numElements, 0);
+       vector<float>           outputFloats    (numElements, 0);
+       ComputeShaderSpec       spec;
+
+       for (size_t ndx = 0; ndx < numElements; ++ndx)
+               inputFloats[ndx] = rnd.getFloat(1.0f, 100.0f);
+
+       for (size_t ndx = 0; ndx < numElements; ++ndx)
+               outputFloats[ndx] = -inputFloats[ndx];
+
+       // Shader source code can be retrieved to complete definition of ComputeShaderSpec, though it is not required at this stage
+       // getComputeSourceCode (spec.assembly);
+
+       spec.inputs.push_back(BufferSp(new Float32Buffer(inputFloats)));
+       spec.outputs.push_back(BufferSp(new Float32Buffer(outputFloats)));
+
+       spec.numWorkGroups      = tcu::IVec3(numElements, 1, 1);
+       spec.verifyIO           = &verifyOutput;
+
+       return spec;
+}
+
+VkBool32 getFloatControlsProperty(Context& context, const int fpWideness, const std::string& featureName)
+{
+       VkPhysicalDeviceFloatControlsProperties floatControlsProperties;
+       deMemset(&floatControlsProperties, 0, sizeof(floatControlsProperties));
+       floatControlsProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES;
+
+       VkPhysicalDeviceProperties2 properties;
+       deMemset(&properties, 0, sizeof(properties));
+       properties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2;
+       properties.pNext = &floatControlsProperties;
+
+       context.getInstanceInterface().getPhysicalDeviceProperties2(context.getPhysicalDevice(), &properties);
+
+       if (fpWideness == 16)
+       {
+               if (featureName == TEST_FEATURE_DENORM_PRESERVE                         ) return floatControlsProperties.shaderDenormPreserveFloat16;
+               if (featureName == TEST_FEATURE_DENORM_FLUSH_TO_ZERO            ) return floatControlsProperties.shaderDenormFlushToZeroFloat16;
+               if (featureName == TEST_FEATURE_SIGNED_ZERO_INF_NAN_PRESERVE) return floatControlsProperties.shaderSignedZeroInfNanPreserveFloat16;
+               if (featureName == TEST_FEATURE_ROUNDING_MODE_RTE                       ) return floatControlsProperties.shaderRoundingModeRTEFloat16;
+               if (featureName == TEST_FEATURE_ROUNDING_MODE_RTZ                       ) return floatControlsProperties.shaderRoundingModeRTZFloat16;
+       }
+
+       if (fpWideness == 32)
+       {
+               if (featureName == TEST_FEATURE_DENORM_PRESERVE                         ) return floatControlsProperties.shaderDenormPreserveFloat32;
+               if (featureName == TEST_FEATURE_DENORM_FLUSH_TO_ZERO            ) return floatControlsProperties.shaderDenormFlushToZeroFloat32;
+               if (featureName == TEST_FEATURE_SIGNED_ZERO_INF_NAN_PRESERVE) return floatControlsProperties.shaderSignedZeroInfNanPreserveFloat32;
+               if (featureName == TEST_FEATURE_ROUNDING_MODE_RTE                       ) return floatControlsProperties.shaderRoundingModeRTEFloat32;
+               if (featureName == TEST_FEATURE_ROUNDING_MODE_RTZ                       ) return floatControlsProperties.shaderRoundingModeRTZFloat32;
+       }
+
+       if (fpWideness == 64)
+       {
+               if (featureName == TEST_FEATURE_DENORM_PRESERVE                         ) return floatControlsProperties.shaderDenormPreserveFloat64;
+               if (featureName == TEST_FEATURE_DENORM_FLUSH_TO_ZERO            ) return floatControlsProperties.shaderDenormFlushToZeroFloat64;
+               if (featureName == TEST_FEATURE_SIGNED_ZERO_INF_NAN_PRESERVE) return floatControlsProperties.shaderSignedZeroInfNanPreserveFloat64;
+               if (featureName == TEST_FEATURE_ROUNDING_MODE_RTE                       ) return floatControlsProperties.shaderRoundingModeRTEFloat64;
+               if (featureName == TEST_FEATURE_ROUNDING_MODE_RTZ                       ) return floatControlsProperties.shaderRoundingModeRTZFloat64;
+       }
+
+       TCU_THROW(InternalError, "Unknown property requested");
+}
+
+class SpvAsmFloatControlsExtensionlessInstance : public ComputeShaderSpec, public SpvAsmComputeShaderInstance
+{
+public:
+       SpvAsmFloatControlsExtensionlessInstance        (Context& ctx, const std::string& testCaseName);
+};
+
+SpvAsmFloatControlsExtensionlessInstance::SpvAsmFloatControlsExtensionlessInstance (Context& ctx, const std::string& testCaseName)
+       : ComputeShaderSpec(getComputeShaderSpec(ctx, testCaseName))
+       , SpvAsmComputeShaderInstance(ctx, *this)
+{
+}
+
+SpvAsmFloatControlsExtensionlessCase::SpvAsmFloatControlsExtensionlessCase (tcu::TestContext& testCtx, const char* name, const char* description, const char* featureName, const int fpWideness, const bool spirv14)
+       : TestCase              (testCtx, name, description)
+       , m_featureName (featureName)
+       , m_fpWideness  (fpWideness)
+       , m_spirv14             (spirv14)
+{
+}
+
+void SpvAsmFloatControlsExtensionlessCase::initPrograms (SourceCollections& programCollection) const
+{
+       const bool      allowSpirv14    = true;
+       std::string     comp;
+
+       getComputeSourceCode(comp, m_featureName, m_fpWideness);
+
+       programCollection.spirvAsmSources.add("compute") << SpirVAsmBuildOptions(programCollection.usedVulkanVersion, SPIRV_VERSION_1_4, allowSpirv14) << comp;
+}
+
+void SpvAsmFloatControlsExtensionlessCase::checkSupport (Context& context) const
+{
+       if (m_spirv14)
+       {
+               context.requireDeviceFunctionality("VK_KHR_spirv_1_4");
+       }
+       else
+       {
+               if (!context.contextSupports(vk::ApiVersion(1, 2, 0)))
+                       TCU_THROW(NotSupportedError, "Test requires Vulkan 1.2");
+       }
+
+       if (m_fpWideness == 16)
+       {
+               context.requireDeviceFunctionality("VK_KHR_shader_float16_int8");
+               if (!isFloat16Int8FeaturesSupported(context, EXTFLOAT16INT8FEATURES_FLOAT16))
+                       TCU_THROW(NotSupportedError, "Floating point number of width 16 bit are not supported");
+       }
+
+       if (m_fpWideness == 64)
+       {
+               context.requireDeviceCoreFeature(DEVICE_CORE_FEATURE_SHADER_FLOAT64);
+       }
+
+       if (!getFloatControlsProperty(context, m_fpWideness, m_featureName))
+               TCU_THROW(NotSupportedError, "Property is not supported");
+}
+
+TestInstance* SpvAsmFloatControlsExtensionlessCase::createInstance (Context& context) const
+{
+       return new SpvAsmFloatControlsExtensionlessInstance(context, getName());
+}
+
+tcu::TestCaseGroup* createFloatControlsExtensionlessGroup (tcu::TestContext& testCtx)
+{
+       const char*                                             spirVersions[]                  = { "spirv1p4", "vulkan1_2" };
+       const int                                               floatingPointWideness[] = { 16, 32, 64 };
+       const struct FpFeatures
+       {
+               const char* testName;
+               const char* featureName;
+       }
+       fpFeatures[] =
+       {
+               { "denorm_preserve",                            TEST_FEATURE_DENORM_PRESERVE                            },
+               { "denorm_flush_to_zero",                       TEST_FEATURE_DENORM_FLUSH_TO_ZERO                       },
+               { "signed_zero_inf_nan_preserve",       TEST_FEATURE_SIGNED_ZERO_INF_NAN_PRESERVE       },
+               { "rounding_mode_rte",                          TEST_FEATURE_ROUNDING_MODE_RTE                          },
+               { "rounding_mode_rtz",                          TEST_FEATURE_ROUNDING_MODE_RTZ                          },
+       };
+       de::MovePtr<tcu::TestCaseGroup> group                                   (new tcu::TestCaseGroup(testCtx, "float_controls_extensionless", "Tests float controls without extension"));
+
+       for (int spirVersionsNdx = 0; spirVersionsNdx < DE_LENGTH_OF_ARRAY(spirVersions); ++spirVersionsNdx)
+       {
+               const bool                                              spirv14                         = (spirVersionsNdx == 0);
+               de::MovePtr<tcu::TestCaseGroup> spirVersionGroup        (new tcu::TestCaseGroup(testCtx, spirVersions[spirVersionsNdx], ""));
+
+               for (int fpWidenessNdx = 0; fpWidenessNdx < DE_LENGTH_OF_ARRAY(floatingPointWideness); ++fpWidenessNdx)
+               for (int execModeNdx = 0; execModeNdx < DE_LENGTH_OF_ARRAY(fpFeatures); ++execModeNdx)
+               {
+                       const int                       fpWideness              = floatingPointWideness[fpWidenessNdx];
+                       const std::string       testName                = fpFeatures[execModeNdx].testName;
+                       const char*                     featureName             = fpFeatures[execModeNdx].featureName;
+                       const std::string       fullTestName    = "fp" + de::toString(fpWideness) + "_" + testName;
+
+                       spirVersionGroup->addChild(new SpvAsmFloatControlsExtensionlessCase(testCtx, fullTestName.c_str(), "", featureName, fpWideness, spirv14));
+               }
+
+               group->addChild(spirVersionGroup.release());
+       }
+
+       return group.release();
+}
+
+
+} // SpirVAssembly
+} // vkt
diff --git a/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmFloatControlsExtensionlessTests.hpp b/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmFloatControlsExtensionlessTests.hpp
new file mode 100644 (file)
index 0000000..1cc7ea8
--- /dev/null
@@ -0,0 +1,55 @@
+#ifndef _VKTSPVASMFLOATCONTROLSEXTENSIONLESSTESTS_HPP
+#define _VKTSPVASMFLOATCONTROLSEXTENSIONLESSTESTS_HPP
+/*-------------------------------------------------------------------------
+ * Vulkan Conformance Tests
+ * ------------------------
+ *
+ * Copyright (c) 2019 The Khronos Group Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ *//*!
+ * \file
+ * \brief SPIR-V Float Control SPIR-V tokens test
+ *//*--------------------------------------------------------------------*/
+
+#include "vkPrograms.hpp"
+#include "vktTestCase.hpp"
+
+#include "vktSpvAsmComputeShaderTestUtil.hpp"
+
+namespace vkt
+{
+namespace SpirVAssembly
+{
+
+class SpvAsmFloatControlsExtensionlessCase : public TestCase
+{
+public:
+                                       SpvAsmFloatControlsExtensionlessCase    (tcu::TestContext& testCtx, const char* name, const char* description, const char* featureName, const int fpWideness, const bool spirv14);
+       void                    initPrograms                                                    (vk::SourceCollections& programCollection) const;
+       TestInstance*   createInstance                                                  (Context& context) const;
+       virtual void    checkSupport                                                    (Context& context) const;
+
+protected:
+       const char*             m_featureName;
+       const int               m_fpWideness;
+       const bool              m_spirv14;
+};
+
+tcu::TestCaseGroup* createFloatControlsExtensionlessGroup (tcu::TestContext& testCtx);
+
+} // SpirVAssembly
+} // vkt
+
+#endif // _VKTSPVASMFLOATCONTROLSEXTENSIONLESSTESTS_HPP
index 2c0a3e8..c054d1d 100644 (file)
@@ -2541,7 +2541,7 @@ protected:
        {
                const char*                                                             name;
                SettingsMode                                                    testedMode;
-               VkShaderFloatControlsIndependenceKHR    independenceSetting;
+               VkShaderFloatControlsIndependence               independenceSetting;
 
                SettingsOption                                                  fp16Option;
                SettingsOption                                                  fp32Option;
@@ -3036,7 +3036,7 @@ void ComputeTestGroupBuilder::createSettingsTests(TestCaseGroup* parentGroup)
        TestCaseGroup*  group   = new TestCaseGroup(testCtx, "independence_settings", "");
        parentGroup->addChild(group);
 
-       using SFCI = VkShaderFloatControlsIndependenceKHR;
+       using SFCI = VkShaderFloatControlsIndependence;
        const SFCI independence32       = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR;
        const SFCI independenceAll      = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR;
 
index 9361ff5..6e18155 100644 (file)
@@ -832,7 +832,7 @@ string makeGeometryShaderAssembly (const map<string, string>& fragments)
                "${capability:opt}\n"
                "${extension:opt}\n"
                "OpMemoryModel Logical GLSL450\n"
-               "OpEntryPoint Geometry %BP_main \"main\" %BP_out_gl_position %BP_gl_PrimitiveID %BP_gl_in %BP_out_color %BP_in_color ${IF_entrypoint:opt} \n"
+               "OpEntryPoint Geometry %BP_main \"main\" %BP_out_gl_position %BP_gl_PrimitiveID %BP_gl_in %BP_out_color %BP_in_color ${IF_entrypoint:opt} ${GL_entrypoint:opt} \n"
                "OpExecutionMode %BP_main Triangles\n"
                "OpExecutionMode %BP_main Invocations 1\n"
                "OpExecutionMode %BP_main OutputTriangleStrip\n"
index 57f5bc1..d165387 100644 (file)
@@ -99,12 +99,14 @@ struct GraphicsResources
        VerifyIOFunc                            verifyIO;
        GraphicsVerifyBinaryFunc        verifyBinary;
        SpirvVersion                            spirvVersion;
+       bool                                            spirvVersion14;
 
                                                        GraphicsResources()
-                                                               : inputFormat   (VK_FORMAT_R32G32B32A32_SFLOAT)
-                                                               , verifyIO              (DE_NULL)
-                                                               , verifyBinary  (DE_NULL)
-                                                               , spirvVersion  (SPIRV_VERSION_1_0)
+                                                               : inputFormat           (VK_FORMAT_R32G32B32A32_SFLOAT)
+                                                               , verifyIO                      (DE_NULL)
+                                                               , verifyBinary          (DE_NULL)
+                                                               , spirvVersion          (SPIRV_VERSION_1_0)
+                                                               , spirvVersion14        (false)
                                                        {}
 };
 
index 0b2e1cb..a9c17e1 100644 (file)
@@ -76,6 +76,7 @@
 #include "vktSpvAsmWorkgroupMemoryTests.hpp"
 #include "vktSpvAsmSignedIntCompareTests.hpp"
 #include "vktSpvAsmPtrAccessChainTests.hpp"
+#include "vktSpvAsmFloatControlsExtensionlessTests.hpp"
 #include "vktSpvAsm64bitCompareTests.hpp"
 
 #include <cmath>
@@ -19085,6 +19086,7 @@ tcu::TestCaseGroup* createInstructionTests (tcu::TestContext& testCtx)
        computeTests->addChild(createOpNMinGroup(testCtx));
        computeTests->addChild(createOpNMaxGroup(testCtx));
        computeTests->addChild(createOpNClampGroup(testCtx));
+       computeTests->addChild(createFloatControlsExtensionlessGroup(testCtx));
        {
                de::MovePtr<tcu::TestCaseGroup> computeAndroidTests     (new tcu::TestCaseGroup(testCtx, "android", "Android CTS Tests"));
 
index 12d57ef..75b8952 100644 (file)
@@ -29,6 +29,7 @@
 #include "tcuDefs.hpp"
 
 #include "vkDefs.hpp"
+#include "vktTestGroupUtil.hpp"
 #include "vktAmberTestCase.hpp"
 #include "vktSpvAsmSpirvVersion1p4Tests.hpp"
 #include "vktTestGroupUtil.hpp"
index 8f64746..3fb0781 100644 (file)
@@ -99,6 +99,9 @@ static InstanceContext initGraphicsInstanceContext (const TestParameters& testPa
                "OpReturnValue %ret\n"
                "OpFunctionEnd\n";
 
+       if (testParameters.spirvVersion > SPIRV_VERSION_1_3)
+               opSimpleTest["GL_entrypoint"] = "%BP_vertexIdInCurrentPatch";
+
        switch (testParameters.operation)
        {
                case OPERATION_GRAPHICS_VERTEX:                                 return createInstanceContext(vertFragPipelineStages, opSimpleTest);
@@ -110,20 +113,24 @@ static InstanceContext initGraphicsInstanceContext (const TestParameters& testPa
        }
 }
 
-static void getComputeSourceCode (std::string& computeSourceCode)
+static void getComputeSourceCode (std::string& computeSourceCode, SpirvVersion spirvVersion)
 {
-       computeSourceCode =
-               string(getComputeAsmShaderPreamble()) +
+       computeSourceCode = "";
+       if (spirvVersion > SPIRV_VERSION_1_3)
+               computeSourceCode += string(getComputeAsmShaderPreamble("", "", "", "", "%indata %outdata"));
+       else
+               computeSourceCode += string(getComputeAsmShaderPreamble());
 
+       computeSourceCode +=
                "OpSource GLSL 430\n"
                "OpName %main           \"main\"\n"
                "OpName %id             \"gl_GlobalInvocationID\"\n"
 
                "OpDecorate %id BuiltIn GlobalInvocationId\n" +
 
-               string(getComputeAsmInputOutputBufferTraits()) +
-               string(getComputeAsmCommonTypes()) +
-               string(getComputeAsmInputOutputBuffer()) +
+               string(getComputeAsmInputOutputBufferTraits((spirvVersion > SPIRV_VERSION_1_3) ? "Block" : "BufferBlock")) +
+               string(getComputeAsmCommonTypes((spirvVersion > SPIRV_VERSION_1_3) ? "StorageBuffer" : "Uniform")) +
+               string(getComputeAsmInputOutputBuffer((spirvVersion > SPIRV_VERSION_1_3) ? "StorageBuffer" : "Uniform")) +
 
                "%id        = OpVariable %uvec3ptr Input\n"
                "%zero      = OpConstant %i32 0\n"
@@ -278,7 +285,7 @@ void SpvAsmSpirvVersionsCase::initPrograms (SourceCollections& programCollection
                {
                        std::string comp;
 
-                       getComputeSourceCode(comp);
+                       getComputeSourceCode(comp, m_testParameters.spirvVersion);
 
                        programCollection.spirvAsmSources.add("compute", &spirVAsmBuildOptions) << comp;
 
index 3182a79..5f25daf 100644 (file)
@@ -53,7 +53,7 @@ bool is8BitStorageFeaturesSupported (const Context& context, Extension8BitStorag
        VkPhysicalDevice8BitStorageFeaturesKHR extensionFeatures = context.get8BitStorageFeatures();
 
        if ((toCheck & EXT8BITSTORAGEFEATURES_STORAGE_BUFFER) != 0 && extensionFeatures.storageBuffer8BitAccess == VK_FALSE)
-               TCU_FAIL("storageBuffer8BitAccess has to be supported");
+               return false;
 
        if ((toCheck & EXT8BITSTORAGEFEATURES_UNIFORM_STORAGE_BUFFER) != 0 && extensionFeatures.uniformAndStorageBuffer8BitAccess == VK_FALSE)
                return false;
@@ -166,7 +166,7 @@ bool isVariablePointersFeaturesSupported (const Context& context, ExtensionVaria
 
 bool isFloat16Int8FeaturesSupported (const Context& context, ExtensionFloat16Int8Features toCheck)
 {
-       const VkPhysicalDeviceFloat16Int8FeaturesKHR& extensionFeatures = context.getShaderFloat16Int8Features();
+       const VkPhysicalDeviceShaderFloat16Int8Features& extensionFeatures = context.getShaderFloat16Int8Features();
 
        if ((toCheck & EXTFLOAT16INT8FEATURES_FLOAT16) != 0 && extensionFeatures.shaderFloat16 == VK_FALSE)
                return false;
@@ -217,7 +217,7 @@ bool isFloatControlsFeaturesSupported (const Context& context, const ExtensionFl
                instanceInterface.getPhysicalDeviceProperties2(physicalDevice, &deviceProperties);
        }
 
-       using FCIndependence = VkShaderFloatControlsIndependenceKHR;
+       using FCIndependence = VkShaderFloatControlsIndependence;
        FCIndependence fcInd32          = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR;
        FCIndependence fcIndAll         = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR;
        FCIndependence fcIndNone        = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR;
@@ -266,6 +266,8 @@ deUint32 getMinRequiredVulkanVersion (const SpirvVersion version)
        case SPIRV_VERSION_1_3:
        case SPIRV_VERSION_1_4:
                return VK_API_VERSION_1_1;
+       case SPIRV_VERSION_1_5:
+               return VK_API_VERSION_1_2;
        default:
                DE_ASSERT(0);
        }
index f5630b5..3f535d0 100644 (file)
@@ -249,7 +249,7 @@ enum ExtensionFloat16Int8FeaturesBits
        EXTFLOAT16INT8FEATURES_INT8             = (1u << 2),
 };
 typedef deUint32 ExtensionFloat16Int8Features;
-typedef vk::VkPhysicalDeviceFloatControlsPropertiesKHR ExtensionFloatControlsFeatures;
+typedef vk::VkPhysicalDeviceFloatControlsProperties ExtensionFloatControlsFeatures;
 
 struct VulkanFeatures
 {
@@ -295,11 +295,6 @@ bool isCoreFeaturesSupported (const Context&                                               context,
                                                          const char**                                                  missingFeature);
 
 // Returns true if the given 16bit storage extension features in `toCheck` are all supported.
-bool isCoreFeaturesSupported (const Context&                                           context,
-                                                         const vk::VkPhysicalDeviceFeatures&   toCheck,
-                                                         const char**                                                  missingFeature);
-
-// Returns true if the given 16bit storage extension features in `toCheck` are all supported.
 bool is16BitStorageFeaturesSupported (const Context&                           context,
                                                                          Extension16BitStorageFeatures toCheck);
 
index 01141e1..e20712b 100644 (file)
@@ -211,8 +211,6 @@ void addPhysicalOrVariablePointersComputeGroup (tcu::TestCaseGroup* group, bool
                incrAmuxBOutputFloats[i] = (inputSFloats[i] < 0) ? 1 + inputAFloats[i]   : 1 + inputBFloats[i];
        }
 
-       const char *extensions = physPtrs ? "VK_EXT_buffer_device_address" : "VK_KHR_variable_pointers";
-
        std::string stringTemplate =
                "OpCapability Shader\n"
 
@@ -399,7 +397,8 @@ void addPhysicalOrVariablePointersComputeGroup (tcu::TestCaseGroup* group, bool
                        spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputBFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
                        spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputSFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
                        spec.outputs.push_back(Resource(BufferSp(new Float32Buffer(expectedOutput))));
-                       spec.extensions.push_back(extensions);
+                       if (!physPtrs)
+                               spec.extensions.push_back("VK_KHR_variable_pointers");
                        group->addChild(new SpvAsmComputeShaderCase(testCtx, name.c_str(), name.c_str(), spec));
                }
                { // Variable Pointer Reads (using OpFunctionCall)
@@ -422,7 +421,8 @@ void addPhysicalOrVariablePointersComputeGroup (tcu::TestCaseGroup* group, bool
                        spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputBFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
                        spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputSFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
                        spec.outputs.push_back(Resource(BufferSp(new Float32Buffer(expectedOutput))));
-                       spec.extensions.push_back(extensions);
+                       if (!physPtrs)
+                               spec.extensions.push_back("VK_KHR_variable_pointers");
                        group->addChild(new SpvAsmComputeShaderCase(testCtx, name.c_str(), name.c_str(), spec));
                }
                { // Variable Pointer Reads (using OpPhi)
@@ -453,7 +453,8 @@ void addPhysicalOrVariablePointersComputeGroup (tcu::TestCaseGroup* group, bool
                        spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputBFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
                        spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputSFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
                        spec.outputs.push_back(Resource(BufferSp(new Float32Buffer(expectedOutput))));
-                       spec.extensions.push_back(extensions);
+                       if (!physPtrs)
+                               spec.extensions.push_back("VK_KHR_variable_pointers");
                        group->addChild(new SpvAsmComputeShaderCase(testCtx, name.c_str(), name.c_str(), spec));
                }
                { // Variable Pointer Reads (using OpCopyObject)
@@ -479,7 +480,8 @@ void addPhysicalOrVariablePointersComputeGroup (tcu::TestCaseGroup* group, bool
                        spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputBFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
                        spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputSFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
                        spec.outputs.push_back(Resource(BufferSp(new Float32Buffer(expectedOutput))));
-                       spec.extensions.push_back(extensions);
+                       if (!physPtrs)
+                               spec.extensions.push_back("VK_KHR_variable_pointers");
                        group->addChild(new SpvAsmComputeShaderCase(testCtx, name.c_str(), name.c_str(), spec));
                }
                { // Test storing into Private variables.
@@ -511,7 +513,8 @@ void addPhysicalOrVariablePointersComputeGroup (tcu::TestCaseGroup* group, bool
                                spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputBFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
                                spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputSFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
                                spec.outputs.push_back(Resource(BufferSp(new Float32Buffer(expectedOutput))));
-                               spec.extensions.push_back(extensions);
+                               if (!physPtrs)
+                                       spec.extensions.push_back("VK_KHR_variable_pointers");
                                group->addChild(new SpvAsmComputeShaderCase(testCtx, name.c_str(), description.c_str(), spec));
                        }
                }
@@ -547,7 +550,8 @@ void addPhysicalOrVariablePointersComputeGroup (tcu::TestCaseGroup* group, bool
                        spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputBFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
                        spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputSFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
                        spec.outputs.push_back(Resource(BufferSp(new Float32Buffer(expectedOutput))));
-                       spec.extensions.push_back(extensions);
+                       if (!physPtrs)
+                               spec.extensions.push_back("VK_KHR_variable_pointers");
                        group->addChild(new SpvAsmComputeShaderCase(testCtx, name.c_str(), name.c_str(), spec));
                }
                {   // Variable Pointer Writes
@@ -573,7 +577,8 @@ void addPhysicalOrVariablePointersComputeGroup (tcu::TestCaseGroup* group, bool
                        spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputBFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
                        spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputSFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
                        spec.outputs.push_back(Resource(BufferSp(new Float32Buffer(expectedIncrOutput))));
-                       spec.extensions.push_back(extensions);
+                       if (!physPtrs)
+                               spec.extensions.push_back("VK_KHR_variable_pointers");
                        group->addChild(new SpvAsmComputeShaderCase(testCtx, name.c_str(), name.c_str(), spec));
                }
 
@@ -616,7 +621,8 @@ void addPhysicalOrVariablePointersComputeGroup (tcu::TestCaseGroup* group, bool
                        spec.inputs.push_back (Resource(BufferSp(new Float32Buffer(inputBFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
                        spec.inputs.push_back (Resource(BufferSp(new Float32Buffer(inputSFloats)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
                        spec.outputs.push_back(Resource(BufferSp(new Float32Buffer(expectedOutput))));
-                       spec.extensions.push_back(extensions);
+                       if (!physPtrs)
+                               spec.extensions.push_back("VK_KHR_variable_pointers");
                        group->addChild(new SpvAsmComputeShaderCase(testCtx, name.c_str(), name.c_str(), spec));
                }
        }
@@ -864,8 +870,6 @@ void addComplexTypesPhysicalOrVariablePointersComputeGroup (tcu::TestCaseGroup*
                "%inputC_b                              = OpAccessChain %outer_struct_ptr %inputC %c_i32_1\n"
        );
 
-       const char *extensions = physPtrs ? "VK_EXT_buffer_device_address" : "VK_KHR_variable_pointers";
-
        std::string stringTemplate =
                "OpCapability Shader\n"
 
@@ -1091,7 +1095,8 @@ void addComplexTypesPhysicalOrVariablePointersComputeGroup (tcu::TestCaseGroup*
                                        spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputB)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
                                        spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputC)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
                                        spec.outputs.push_back(Resource(BufferSp(new Float32Buffer(expectedOutput))));
-                                       spec.extensions.push_back(extensions);
+                                       if (!physPtrs)
+                                               spec.extensions.push_back("VK_KHR_variable_pointers");
                                        group->addChild(new SpvAsmComputeShaderCase(testCtx, name.c_str(), name.c_str(), spec));
                                }
 
@@ -1126,7 +1131,8 @@ void addComplexTypesPhysicalOrVariablePointersComputeGroup (tcu::TestCaseGroup*
                                        spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputB)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
                                        spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputC)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
                                        spec.outputs.push_back(Resource(BufferSp(new Float32Buffer(expectedOutput))));
-                                       spec.extensions.push_back(extensions);
+                                       if (!physPtrs)
+                                               spec.extensions.push_back("VK_KHR_variable_pointers");
                                        group->addChild(new SpvAsmComputeShaderCase(testCtx, name.c_str(), name.c_str(), spec));
                                }
 
@@ -1170,7 +1176,8 @@ void addComplexTypesPhysicalOrVariablePointersComputeGroup (tcu::TestCaseGroup*
                                        spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputB)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
                                        spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputC)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
                                        spec.outputs.push_back(Resource(BufferSp(new Float32Buffer(expectedOutput))));
-                                       spec.extensions.push_back(extensions);
+                                       if (!physPtrs)
+                                               spec.extensions.push_back("VK_KHR_variable_pointers");
                                        group->addChild(new SpvAsmComputeShaderCase(testCtx, name.c_str(), name.c_str(), spec));
                                }
 
@@ -1203,7 +1210,8 @@ void addComplexTypesPhysicalOrVariablePointersComputeGroup (tcu::TestCaseGroup*
                                        spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputB)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
                                        spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputC)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
                                        spec.outputs.push_back(Resource(BufferSp(new Float32Buffer(expectedOutput))));
-                                       spec.extensions.push_back(extensions);
+                                       if (!physPtrs)
+                                               spec.extensions.push_back("VK_KHR_variable_pointers");
                                        group->addChild(new SpvAsmComputeShaderCase(testCtx, name.c_str(), name.c_str(), spec));
                                }
 
@@ -1237,7 +1245,8 @@ void addComplexTypesPhysicalOrVariablePointersComputeGroup (tcu::TestCaseGroup*
                                        spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputB)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
                                        spec.inputs.push_back(Resource(BufferSp(new Float32Buffer(inputC)), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER));
                                        spec.outputs.push_back(Resource(BufferSp(new Float32Buffer(expectedOutput))));
-                                       spec.extensions.push_back(extensions);
+                                       if (!physPtrs)
+                                               spec.extensions.push_back("VK_KHR_variable_pointers");
                                        group->addChild(new SpvAsmComputeShaderCase(testCtx, name.c_str(), name.c_str(), spec));
                                }
                        }
index e0ef17c..136f65a 100644 (file)
@@ -2234,8 +2234,13 @@ tcu::TestStatus SSBOLayoutCaseInstance::iterate (void)
        vector<BlockDataPtr>  mappedBlockPtrs;
 
        vk::VkFlags usageFlags = vk::VK_BUFFER_USAGE_STORAGE_BUFFER_BIT;
+       bool memoryDeviceAddress = false;
        if (m_usePhysStorageBuffer)
-               usageFlags |= vk::VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT;
+       {
+               usageFlags |= vk::VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT;
+               if (m_context.isDeviceFunctionalitySupported("VK_KHR_buffer_device_address"))
+                       memoryDeviceAddress = true;
+       }
 
        // Upload base buffers
        const std::vector<int> bufferSizes      = computeBufferSizes(m_interface, m_refLayout);
@@ -2256,7 +2261,7 @@ tcu::TestStatus SSBOLayoutCaseInstance::iterate (void)
                                blockLocations[blockNdx] = BlockLocation(blockNdx, 0, bufferSize);
 
                                vk::Move<vk::VkBuffer>                          buffer          = createBuffer(m_context, bufferSize, usageFlags);
-                               de::MovePtr<vk::Allocation>                     alloc           = allocateAndBindMemory(m_context, *buffer, vk::MemoryRequirement::HostVisible);
+                               de::MovePtr<vk::Allocation>                     alloc           = allocateAndBindMemory(m_context, *buffer, vk::MemoryRequirement::HostVisible | (memoryDeviceAddress ? vk::MemoryRequirement::DeviceAddress : vk::MemoryRequirement::Any));
 
                                descriptors[blockNdx] = makeDescriptorBufferInfo(*buffer, 0ull, bufferSize);
 
@@ -2288,7 +2293,7 @@ tcu::TestStatus SSBOLayoutCaseInstance::iterate (void)
 
                        const int                                               totalBufferSize = curOffset;
                        vk::Move<vk::VkBuffer>                  buffer                  = createBuffer(m_context, totalBufferSize, usageFlags);
-                       de::MovePtr<vk::Allocation>             alloc                   = allocateAndBindMemory(m_context, *buffer, vk::MemoryRequirement::HostVisible);
+                       de::MovePtr<vk::Allocation>             alloc                   = allocateAndBindMemory(m_context, *buffer, vk::MemoryRequirement::HostVisible | (memoryDeviceAddress ? vk::MemoryRequirement::DeviceAddress : vk::MemoryRequirement::Any));
 
                        mapPtrs.push_back(alloc->getHostPtr());
 
@@ -2336,9 +2341,11 @@ tcu::TestStatus SSBOLayoutCaseInstance::iterate (void)
        // Query the buffer device addresses and push them via push constants
        if (m_usePhysStorageBuffer)
        {
-               vk::VkBufferDeviceAddressInfoEXT info =
+               const bool useKHR = m_context.isDeviceFunctionalitySupported("VK_KHR_buffer_device_address");
+
+               vk::VkBufferDeviceAddressInfo info =
                {
-                       vk::VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT,   // VkStructureType      sType;
+                       vk::VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO,               // VkStructureType      sType;
                        DE_NULL,                                                                                                // const void*          pNext;
                        0,                                                                                                              // VkBuffer                     buffer
                };
@@ -2346,7 +2353,11 @@ tcu::TestStatus SSBOLayoutCaseInstance::iterate (void)
                for (deUint32 i = 0; i < descriptors.size(); ++i)
                {
                        info.buffer = descriptors[i].buffer;
-                       vk::VkDeviceAddress addr = vk.getBufferDeviceAddressEXT(device, &info);
+                       vk::VkDeviceAddress addr;
+                       if (useKHR)
+                               addr = vk.getBufferDeviceAddress(device, &info);
+                       else
+                               addr = vk.getBufferDeviceAddressEXT(device, &info);
                        addr += descriptors[i].offset;
                        gpuAddrs.push_back(addr);
                }
@@ -2371,7 +2382,7 @@ tcu::TestStatus SSBOLayoutCaseInstance::iterate (void)
                (vk::VkPipelineLayoutCreateFlags)0,
                1u,                                                                                                     // deUint32                                             descriptorSetCount;
                &*descriptorSetLayout,                                                          // const VkDescriptorSetLayout* pSetLayouts;
-        m_usePhysStorageBuffer ? 1u : 0u,                                      // deUint32                                             pushConstantRangeCount;
+               m_usePhysStorageBuffer ? 1u : 0u,                                       // deUint32                                             pushConstantRangeCount;
                &pushConstRange,                                                                        // const VkPushConstantRange*   pPushConstantRanges;
        };
        vk::Move<vk::VkPipelineLayout> pipelineLayout(createPipelineLayout(vk, device, &pipelineLayoutParams));
@@ -2545,7 +2556,7 @@ TestInstance* SSBOLayoutCase::createInstance (Context& context) const
                TCU_THROW(NotSupportedError, "storageBuffer8BitAccess not supported");
        if (!context.getScalarBlockLayoutFeatures().scalarBlockLayout && usesScalarLayout(m_interface))
                TCU_THROW(NotSupportedError, "scalarBlockLayout not supported");
-       if (!context.getBufferDeviceAddressFeatures().bufferDeviceAddress && m_usePhysStorageBuffer)
+       if (m_usePhysStorageBuffer && !context.isBufferDeviceAddressSupported())
                TCU_THROW(NotSupportedError, "Physical storage buffer pointers not supported");
        return new SSBOLayoutCaseInstance(context, m_bufferMode, m_interface, m_refLayout, m_initialData, m_writeData, m_usePhysStorageBuffer);
 }
index 0b1b4e3..759f1b7 100755 (executable)
@@ -39,6 +39,7 @@ namespace
 enum OpType
 {
        OPTYPE_BROADCAST = 0,
+       OPTYPE_BROADCAST_NONCONST,
        OPTYPE_BROADCAST_FIRST,
        OPTYPE_LAST
 };
@@ -56,7 +57,7 @@ static bool checkCompute(std::vector<const void*> datas,
        return vkt::subgroups::checkCompute(datas, numWorkgroups, localSize, 3);
 }
 
-std::string getOpTypeName(int opType)
+std::string getOpTypeCaseName(int opType)
 {
        switch (opType)
        {
@@ -64,12 +65,15 @@ std::string getOpTypeName(int opType)
                        DE_FATAL("Unsupported op type");
                        return "";
                case OPTYPE_BROADCAST:
-                       return "subgroupBroadcast";
+                       return "subgroupbroadcast";
+               case OPTYPE_BROADCAST_NONCONST:
+                       return "subgroupbroadcast_nonconst";
                case OPTYPE_BROADCAST_FIRST:
-                       return "subgroupBroadcastFirst";
+                       return "subgroupbroadcastfirst";
        }
 }
 
+
 struct CaseDefinition
 {
        int                                     opType;
@@ -120,15 +124,16 @@ std::string getTestSrc(const CaseDefinition &caseDef)
                        << "  uint sgInvocation = gl_SubgroupInvocationID;\n";
        }
 
-       if (OPTYPE_BROADCAST == caseDef.opType)
+       const std::string fmt = subgroups::getFormatNameForGLSL(caseDef.format);
+
+       if (caseDef.opType == OPTYPE_BROADCAST)
        {
                bdy     << "  tempRes = 0x3;\n";
                for (int i = 0; i < max; i++)
                {
                        bdy << "  {\n"
                        << "    const uint id = "<< i << ";\n"
-                       << "    " << subgroups::getFormatNameForGLSL(caseDef.format) << " op = "
-                               << broadcast << "(data[sgInvocation], id);\n"
+                       << "    " << fmt << " op = " << broadcast << "(data[sgInvocation], id);\n"
                        << "    if ((id < sgSize) && subgroupBallotBitExtract(mask, id))\n"
                        << "    {\n"
                        << "      if (op != data[id])\n"
@@ -139,6 +144,25 @@ std::string getTestSrc(const CaseDefinition &caseDef)
                        << "  }\n";
                }
        }
+       else if (caseDef.opType == OPTYPE_BROADCAST_NONCONST)
+       {
+               const std::string validate =    "    if (subgroupBallotBitExtract(mask, id) && op != data[id])\n"
+                                                                               "        tempResult = 0;\n";
+
+               bdy     << "  uint tempResult = 0x3;\n"
+                       << "  for (uint id = 0; id < sgSize; id++)\n"
+                       << "  {\n"
+                       << "    " << fmt << " op = " << broadcast << "(data[sgInvocation], id);\n"
+                       << validate
+                       << "  }\n"
+                       << "  // Test lane id that is only uniform across active lanes\n"
+                       << "  if (sgInvocation >= sgSize / 2)\n"
+                       << "  {\n"
+                       << "    uint id = sgInvocation & ~((sgSize / 2) - 1);\n"
+                       << "    " << fmt << " op = " << broadcast << "(data[sgInvocation], id);\n"
+                       << validate
+                       << "  }\n";
+       }
        else
        {
                bdy << "  tempRes = 0;\n"
@@ -196,7 +220,8 @@ std::string getHelperFunctionARB(const CaseDefinition &caseDef)
 
 void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
 {
-       const vk::ShaderBuildOptions    buildOptions    (programCollection.usedVulkanVersion, vk::SPIRV_VERSION_1_3, 0u);
+       const vk::SpirvVersion                  spirvVersion = (caseDef.opType == OPTYPE_BROADCAST_NONCONST) ? vk::SPIRV_VERSION_1_5 : vk::SPIRV_VERSION_1_3;
+       const vk::ShaderBuildOptions    buildOptions    (programCollection.usedVulkanVersion, spirvVersion, 0u);
 
        std::string extHeader = getExtHeader(caseDef);
        std::string testSrc = getTestSrc(caseDef);
@@ -207,7 +232,8 @@ void initFrameBufferPrograms(SourceCollections& programCollection, CaseDefinitio
 
 void initPrograms(SourceCollections& programCollection, CaseDefinition caseDef)
 {
-       const vk::ShaderBuildOptions    buildOptions    (programCollection.usedVulkanVersion, vk::SPIRV_VERSION_1_3, 0u);
+       const vk::SpirvVersion                  spirvVersion = (caseDef.opType == OPTYPE_BROADCAST_NONCONST) ? vk::SPIRV_VERSION_1_5 : vk::SPIRV_VERSION_1_3;
+       const vk::ShaderBuildOptions    buildOptions    (programCollection.usedVulkanVersion, spirvVersion, 0u);
 
        std::string extHeader = getExtHeader(caseDef);
        std::string testSrc = getTestSrc(caseDef);
@@ -233,6 +259,9 @@ void supportedCheck (Context& context, CaseDefinition caseDef)
        if (caseDef.extShaderSubGroupBallotTests && !subgroups::isInt64SupportedForDevice(context))
                TCU_THROW(NotSupportedError, "Device does not support int64 data types");
 
+       if ((caseDef.opType == OPTYPE_BROADCAST_NONCONST) && !subgroups::isSubgroupBroadcastDynamicIdSupported(context))
+               TCU_THROW(NotSupportedError, "Device does not support SubgroupBroadcastDynamicId");
+
        *caseDef.geometryPointSizeSupported = subgroups::isTessellationAndGeometryPointSizeSupported(context);
 }
 
@@ -368,8 +397,7 @@ tcu::TestCaseGroup* createSubgroupsBallotBroadcastTests(tcu::TestContext& testCt
 
                for (int opTypeIndex = 0; opTypeIndex < OPTYPE_LAST; ++opTypeIndex)
                {
-                       const std::string op = de::toLower(getOpTypeName(opTypeIndex));
-                       const std::string name = op + "_" + subgroups::getFormatNameForGLSL(format);
+                       const std::string name = getOpTypeCaseName(opTypeIndex) + "_" + subgroups::getFormatNameForGLSL(format);
 
                        {
                                CaseDefinition caseDef = {opTypeIndex, VK_SHADER_STAGE_COMPUTE_BIT, format, de::SharedPtr<bool>(new bool), DE_FALSE};
index ab4752f..28921a9 100644 (file)
@@ -1334,14 +1334,14 @@ bool vkt::subgroups::isTessellationAndGeometryPointSizeSupported (Context& conte
 
 bool vkt::subgroups::isFormatSupportedForDevice(Context& context, vk::VkFormat format)
 {
-       VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR subgroupExtendedTypesFeatures;
+       VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures subgroupExtendedTypesFeatures;
        deMemset(&subgroupExtendedTypesFeatures, 0, sizeof(subgroupExtendedTypesFeatures));
-       subgroupExtendedTypesFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR;
+       subgroupExtendedTypesFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES;
        subgroupExtendedTypesFeatures.pNext = DE_NULL;
 
-       VkPhysicalDeviceShaderFloat16Int8FeaturesKHR float16Int8Features;
+       VkPhysicalDeviceShaderFloat16Int8Features float16Int8Features;
        deMemset(&float16Int8Features, 0, sizeof(float16Int8Features));
-       float16Int8Features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR;
+       float16Int8Features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES;
        float16Int8Features.pNext = DE_NULL;
 
        VkPhysicalDeviceFeatures2 features2;
@@ -1406,6 +1406,12 @@ bool vkt::subgroups::isFormatSupportedForDevice(Context& context, vk::VkFormat f
        }
 }
 
+bool vkt::subgroups::isSubgroupBroadcastDynamicIdSupported (Context& context)
+{
+       return context.contextSupports(vk::ApiVersion(1, 2, 0)) &&
+               vk::getPhysicalDeviceVulkan12Features(context.getInstanceInterface(), context.getPhysicalDevice()).subgroupBroadcastDynamicId;
+}
+
 std::string vkt::subgroups::getFormatNameForGLSL (VkFormat format)
 {
        switch (format)
index 4fe6d57..80e48e1 100644 (file)
@@ -140,6 +140,8 @@ bool isInt64SupportedForDevice(Context& context);
 
 bool isTessellationAndGeometryPointSizeSupported(Context& context);
 
+bool isSubgroupBroadcastDynamicIdSupported(Context& context);
+
 std::string getFormatNameForGLSL (vk::VkFormat format);
 
 std::string getAdditionalExtensionForFormat (vk::VkFormat format);
index f697be1..208e9a4 100644 (file)
@@ -47,8 +47,8 @@ using namespace vk;
 
 struct TestConfig
 {
-       bool                            useTypeCreate;
-       VkSemaphoreTypeKHR      semaphoreType;
+       bool                    useTypeCreate;
+       VkSemaphoreType semaphoreType;
 };
 
 static const int basicChainLength      = 32768;
@@ -83,18 +83,18 @@ tcu::TestStatus basicOneQueueCase (Context& context, const TestConfig config)
                                                                                                                                };
        const VkPipelineStageFlags                              stageBits[]                     = { VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT };
        const deUint64                                                  timelineValue           = 1u;
-       const VkTimelineSemaphoreSubmitInfoKHR  timelineWaitInfo        =
+       const VkTimelineSemaphoreSubmitInfo             timelineWaitInfo        =
                                                                                                                                {
-                                                                                                                                       VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR,   // VkStructureType      sType;
+                                                                                                                                       VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO,               // VkStructureType      sType;
                                                                                                                                        DE_NULL,                                                                                                // const void*          pNext;
                                                                                                                                        1u,                                                                                                             // deUint32                     waitSemaphoreValueCount
                                                                                                                                        &timelineValue,                                                                                 // const deUint64*      pWaitSemaphoreValues
                                                                                                                                        0u,                                                                                                             // deUint32                     signalSemaphoreValueCount
                                                                                                                                        DE_NULL,                                                                                                // const deUint64*      pSignalSemaphoreValues
                                                                                                                                };
-       const VkTimelineSemaphoreSubmitInfoKHR  timelineSignalInfo      =
+       const VkTimelineSemaphoreSubmitInfo             timelineSignalInfo      =
                                                                                                                                {
-                                                                                                                                       VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR,   // VkStructureType      sType;
+                                                                                                                                       VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO,               // VkStructureType      sType;
                                                                                                                                        DE_NULL,                                                                                                // const void*          pNext;
                                                                                                                                        0u,                                                                                                             // deUint32                     waitSemaphoreValueCount
                                                                                                                                        DE_NULL,                                                                                                // const deUint64*      pWaitSemaphoreValues
@@ -196,7 +196,7 @@ tcu::TestStatus basicChainTimelineCase (Context& context)
        const VkDevice&                                 device          = context.getDevice();
        const VkQueue                                   queue           = context.getUniversalQueue();
        VkPipelineStageFlags                    flags           = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT;
-       VkSemaphoreTypeCreateInfoKHR    scti            = { VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR, DE_NULL, VK_SEMAPHORE_TYPE_TIMELINE_KHR, 0 };
+       VkSemaphoreTypeCreateInfo               scti            = { VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR, DE_NULL, VK_SEMAPHORE_TYPE_TIMELINE_KHR, 0 };
        VkSemaphoreCreateInfo                   sci                     = { VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO, &scti, 0 };
        VkFenceCreateInfo                               fci                     = { VK_STRUCTURE_TYPE_FENCE_CREATE_INFO, DE_NULL, 0 };
        VkSemaphore                                             semaphore;
@@ -209,11 +209,11 @@ tcu::TestStatus basicChainTimelineCase (Context& context)
 
        for (int i = 0; err == VK_SUCCESS && i < basicChainLength; i++)
        {
-               deUint64                                                        waitValue = i;
-               deUint64                                                        signalValue = i + 1;
-               VkTimelineSemaphoreSubmitInfoKHR        tsi =
+               deUint64                                                waitValue = i;
+               deUint64                                                signalValue = i + 1;
+               VkTimelineSemaphoreSubmitInfo   tsi =
                {
-                       VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR,   // VkStructureType      sType;
+                       VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO,               // VkStructureType      sType;
                        DE_NULL,                                                                                                // const void*          pNext;
                        i == 0 ? 0u : 1u,                                                                               // deUint32                     waitSemaphoreValueCount
                        &waitValue,                                                                                             // const deUint64*      pWaitSemaphoreValues
@@ -237,10 +237,10 @@ tcu::TestStatus basicChainTimelineCase (Context& context)
 
        VK_CHECK(vk.createFence(device, &fci, DE_NULL, &fence));
 
-       deUint64                                                        waitValue = basicChainLength;
-       VkTimelineSemaphoreSubmitInfoKHR        tsi =
+       deUint64                                                waitValue = basicChainLength;
+       VkTimelineSemaphoreSubmitInfo   tsi =
        {
-               VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR,   // VkStructureType      sType;
+               VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO,               // VkStructureType      sType;
                DE_NULL,                                                                                                // const void*          pNext;
                1u,                                                                                                             // deUint32                     waitSemaphoreValueCount
                &waitValue,                                                                                             // const deUint64*      pWaitSemaphoreValues
@@ -310,7 +310,7 @@ tcu::TestStatus basicMultiQueueCase (Context& context, TestConfig config)
        Move<VkCommandBuffer>                                   cmdBuffer[COUNT];
        const VkPipelineStageFlags                              stageBits[]                                     = { VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT };
        VkSubmitInfo                                                    submitInfo[COUNT];
-       VkTimelineSemaphoreSubmitInfoKHR                timelineSubmitInfo[COUNT];
+       VkTimelineSemaphoreSubmitInfo                   timelineSubmitInfo[COUNT];
        deUint64                                                                timelineValues[COUNT];
        Move<VkFence>                                                   fence[COUNT];
 
@@ -380,7 +380,7 @@ tcu::TestStatus basicMultiQueueCase (Context& context, TestConfig config)
 
        timelineValues[FIRST]                                                                   = 1ull;
 
-       timelineSubmitInfo[FIRST].sType                                                 = VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR;
+       timelineSubmitInfo[FIRST].sType                                                 = VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO;
        timelineSubmitInfo[FIRST].pNext                                                 = DE_NULL;
        timelineSubmitInfo[FIRST].waitSemaphoreValueCount               = 0;
        timelineSubmitInfo[FIRST].pWaitSemaphoreValues                  = DE_NULL;
@@ -399,7 +399,7 @@ tcu::TestStatus basicMultiQueueCase (Context& context, TestConfig config)
 
        timelineValues[SECOND]                                                                  = 2ull;
 
-       timelineSubmitInfo[SECOND].sType                                                = VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR;
+       timelineSubmitInfo[SECOND].sType                                                = VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO;
        timelineSubmitInfo[SECOND].pNext                                                = DE_NULL;
        timelineSubmitInfo[SECOND].waitSemaphoreValueCount              = 1;
        timelineSubmitInfo[SECOND].pWaitSemaphoreValues                 = &timelineValues[FIRST];
index 74e3b4b..08f1dc6 100644 (file)
@@ -58,7 +58,7 @@ using de::SharedPtr;
 struct TestConfig
 {
                                                                TestConfig              (const ResourceDescription&                                             resource_,
-                                                                                                vk::VkSemaphoreTypeKHR                                                 semaphoreType_,
+                                                                                                vk::VkSemaphoreType                                                    semaphoreType_,
                                                                                                 OperationName                                                                  writeOp_,
                                                                                                 OperationName                                                                  readOp_,
                                                                                                 vk::VkExternalMemoryHandleTypeFlagBits                 memoryHandleType_,
@@ -75,7 +75,7 @@ struct TestConfig
        }
 
        const ResourceDescription                                                       resource;
-       const vk::VkSemaphoreTypeKHR                                            semaphoreType;
+       const vk::VkSemaphoreType                                                       semaphoreType;
        const OperationName                                                                     writeOp;
        const OperationName                                                                     readOp;
        const vk::VkExternalMemoryHandleTypeFlagBits            memoryHandleType;
@@ -95,29 +95,29 @@ public:
        : m_context     (context)
        {
                // Check instance support
-               requireInstanceExtension("VK_KHR_get_physical_device_properties2");
+               m_context.requireInstanceFunctionality("VK_KHR_get_physical_device_properties2");
 
-               requireInstanceExtension("VK_KHR_external_semaphore_capabilities");
-               requireInstanceExtension("VK_KHR_external_memory_capabilities");
+               m_context.requireInstanceFunctionality("VK_KHR_external_semaphore_capabilities");
+               m_context.requireInstanceFunctionality("VK_KHR_external_memory_capabilities");
 
                // Check device support
                if (config.dedicated)
-                       requireDeviceExtension("VK_KHR_dedicated_allocation");
+                       m_context.requireDeviceFunctionality("VK_KHR_dedicated_allocation");
 
-               requireDeviceExtension("VK_KHR_external_semaphore");
-               requireDeviceExtension("VK_KHR_external_memory");
+               m_context.requireDeviceFunctionality("VK_KHR_external_semaphore");
+               m_context.requireDeviceFunctionality("VK_KHR_external_memory");
 
                if (config.semaphoreType == vk::VK_SEMAPHORE_TYPE_TIMELINE_KHR)
                {
-                       requireDeviceExtension("VK_KHR_timeline_semaphore");
+                       m_context.requireDeviceFunctionality("VK_KHR_timeline_semaphore");
                }
 
                if (config.memoryHandleType == vk::VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR
                        || config.semaphoreHandleType == vk::VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR
                        || config.semaphoreHandleType == vk::VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR)
                {
-                       requireDeviceExtension("VK_KHR_external_semaphore_fd");
-                       requireDeviceExtension("VK_KHR_external_memory_fd");
+                       m_context.requireDeviceFunctionality("VK_KHR_external_semaphore_fd");
+                       m_context.requireDeviceFunctionality("VK_KHR_external_memory_fd");
                }
 
                if (config.memoryHandleType == vk::VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR
@@ -125,8 +125,8 @@ public:
                        || config.semaphoreHandleType == vk::VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR
                        || config.semaphoreHandleType == vk::VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR)
                {
-                       requireDeviceExtension("VK_KHR_external_semaphore_win32");
-                       requireDeviceExtension("VK_KHR_external_memory_win32");
+                       m_context.requireDeviceFunctionality("VK_KHR_external_semaphore_win32");
+                       m_context.requireDeviceFunctionality("VK_KHR_external_memory_win32");
                }
 
                TestLog&                                                log                             = context.getTestContext().getLog();
@@ -260,17 +260,6 @@ public:
        }
 
 private:
-       void requireDeviceExtension(const char* name) const
-       {
-               if (!de::contains(m_context.getDeviceExtensions().begin(), m_context.getDeviceExtensions().end(), name))
-                       TCU_THROW(NotSupportedError, (std::string(name) + " is not supported").c_str());
-       }
-
-       void requireInstanceExtension(const char* name) const
-       {
-               if (!de::contains(m_context.getInstanceExtensions().begin(), m_context.getInstanceExtensions().end(), name))
-                       TCU_THROW(NotSupportedError, (std::string(name) + " is not supported").c_str());
-       }
 
        const Context& m_context;
 };
@@ -324,8 +313,7 @@ vk::Move<vk::VkDevice> createTestDevice (const Context&                                     context,
                                                                                 const vk::PlatformInterface&   vkp,
                                                                                 vk::VkInstance                                 instance,
                                                                                 const vk::InstanceInterface&   vki,
-                                                                                const vk::VkPhysicalDevice             physicalDevice,
-                                                                                bool                                                   timelineSemaphores)
+                                                                                const vk::VkPhysicalDevice             physicalDevice)
 {
        const bool                                                                              validationEnabled               = context.getTestContext().getCommandLine().isValidationEnabled();
        const float                                                                             priority                                = 0.0f;
@@ -354,7 +342,7 @@ vk::Move<vk::VkDevice> createTestDevice (const Context&                                     context,
        if (context.isDeviceFunctionalitySupported("VK_KHR_external_memory_win32"))
                extensions.push_back("VK_KHR_external_memory_win32");
 
-       if (timelineSemaphores)
+       if (context.isDeviceFunctionalitySupported("VK_KHR_timeline_semaphore"))
                extensions.push_back("VK_KHR_timeline_semaphore");
 
        try
@@ -414,34 +402,74 @@ vk::Move<vk::VkDevice> createTestDevice (const Context&                                   context,
 // Class to wrap a singleton instance and device
 class InstanceAndDevice
 {
-public:
-       InstanceAndDevice       (Context&                       context,
-                            const TestConfig&  config)
+       InstanceAndDevice       (Context& context)
                : m_instance            (createTestInstance(context))
                , m_vki                         (m_instance.getDriver())
                , m_physicalDevice      (vk::chooseDevice(m_vki, m_instance, context.getTestContext().getCommandLine()))
-               , m_logicalDevice       (createTestDevice(context, context.getPlatformInterface(), m_instance, m_vki, m_physicalDevice, config.semaphoreType == vk::VK_SEMAPHORE_TYPE_TIMELINE_KHR))
+               , m_logicalDevice       (createTestDevice(context, context.getPlatformInterface(), m_instance, m_vki, m_physicalDevice))
        {
        }
 
-       vk::VkInstance                          getInstance()
+public:
+
+       static vk::VkInstance getInstanceA(Context& context)
        {
-               return m_instance;
+               if (!m_instanceA)
+                       m_instanceA = SharedPtr<InstanceAndDevice>(new InstanceAndDevice(context));
+
+               return m_instanceA->m_instance;
        }
+       static vk::VkInstance getInstanceB(Context& context)
+       {
+               if (!m_instanceB)
+                       m_instanceB = SharedPtr<InstanceAndDevice>(new InstanceAndDevice(context));
 
-       const vk::InstanceDriver&       getDriver()
+               return m_instanceB->m_instance;
+       }
+       static const vk::InstanceDriver& getDriverA()
        {
-               return m_vki;
+               DE_ASSERT(m_instanceA);
+               return m_instanceA->m_instance.getDriver();
        }
-
-       vk::VkPhysicalDevice            getPhysicalDevice()
+       static const vk::InstanceDriver& getDriverB()
        {
-               return m_physicalDevice;
+               DE_ASSERT(m_instanceB);
+               return m_instanceB->m_instance.getDriver();
        }
-
-       const Unique<vk::VkDevice>& getDevice()
+       static vk::VkPhysicalDevice getPhysicalDeviceA()
+       {
+               DE_ASSERT(m_instanceA);
+               return m_instanceA->m_physicalDevice;
+       }
+       static vk::VkPhysicalDevice getPhysicalDeviceB()
+       {
+               DE_ASSERT(m_instanceB);
+               return m_instanceB->m_physicalDevice;
+       }
+       static const Unique<vk::VkDevice>& getDeviceA()
+       {
+               DE_ASSERT(m_instanceA);
+               return m_instanceA->m_logicalDevice;
+       }
+       static const Unique<vk::VkDevice>& getDeviceB()
+       {
+               DE_ASSERT(m_instanceB);
+               return m_instanceB->m_logicalDevice;
+       }
+       static void collectMessagesA()
        {
-               return m_logicalDevice;
+               DE_ASSERT(m_instanceA);
+               m_instanceA->m_instance.collectMessages();
+       }
+       static void collectMessagesB()
+       {
+               DE_ASSERT(m_instanceB);
+               m_instanceB->m_instance.collectMessages();
+       }
+       static void destroy()
+       {
+               m_instanceA.clear();
+               m_instanceB.clear();
        }
 
 private:
@@ -449,7 +477,12 @@ private:
        const vk::InstanceDriver&               m_vki;
        const vk::VkPhysicalDevice              m_physicalDevice;
        const Unique<vk::VkDevice>              m_logicalDevice;
+
+       static SharedPtr<InstanceAndDevice>     m_instanceA;
+       static SharedPtr<InstanceAndDevice>     m_instanceB;
 };
+SharedPtr<InstanceAndDevice>           InstanceAndDevice::m_instanceA;
+SharedPtr<InstanceAndDevice>           InstanceAndDevice::m_instanceB;
 
 
 vk::VkQueue getQueue (const vk::DeviceInterface&       vkd,
@@ -968,7 +1001,6 @@ private:
 
        const bool                                                                                      m_getMemReq2Supported;
 
-       InstanceAndDevice                                                                       m_instanceAndDeviceA;
        const vk::VkInstance                                                            m_instanceA;
        const vk::InstanceDriver&                                                       m_vkiA;
        const vk::VkPhysicalDevice                                                      m_physicalDeviceA;
@@ -977,7 +1009,6 @@ private:
        const vk::Unique<vk::VkDevice>&                                         m_deviceA;
        const vk::DeviceDriver                                                          m_vkdA;
 
-       InstanceAndDevice                                                                       m_instanceAndDeviceB;
        const vk::VkInstance                                                            m_instanceB;
        const vk::InstanceDriver&                                                       m_vkiB;
        const vk::VkPhysicalDevice                                                      m_physicalDeviceB;
@@ -1005,22 +1036,20 @@ SharingTestInstance::SharingTestInstance (Context&              context,
        , m_notSupportedChecker         (context, m_config, *m_supportWriteOp, *m_supportReadOp)
        , m_getMemReq2Supported         (context.isDeviceFunctionalitySupported("VK_KHR_get_memory_requirements2"))
 
-       , m_instanceAndDeviceA          (context, config)
-       , m_instanceA                           (m_instanceAndDeviceA.getInstance())
-       , m_vkiA                                        (m_instanceAndDeviceA.getDriver())
-       , m_physicalDeviceA                     (m_instanceAndDeviceA.getPhysicalDevice())
+       , m_instanceA                           (InstanceAndDevice::getInstanceA(context))
+       , m_vkiA                                        (InstanceAndDevice::getDriverA())
+       , m_physicalDeviceA                     (InstanceAndDevice::getPhysicalDeviceA())
        , m_queueFamiliesA                      (vk::getPhysicalDeviceQueueFamilyProperties(m_vkiA, m_physicalDeviceA))
        , m_queueFamilyIndicesA         (getFamilyIndices(m_queueFamiliesA))
-       , m_deviceA                                     (m_instanceAndDeviceA.getDevice())
+       , m_deviceA                                     (InstanceAndDevice::getDeviceA())
        , m_vkdA                                        (context.getPlatformInterface(), m_instanceA, *m_deviceA)
 
-       , m_instanceAndDeviceB          (context, config)
-       , m_instanceB                           (m_instanceAndDeviceB.getInstance())
-       , m_vkiB                                        (m_instanceAndDeviceB.getDriver())
-       , m_physicalDeviceB                     (m_instanceAndDeviceB.getPhysicalDevice())
+       , m_instanceB                           (InstanceAndDevice::getInstanceB(context))
+       , m_vkiB                                        (InstanceAndDevice::getDriverB())
+       , m_physicalDeviceB                     (InstanceAndDevice::getPhysicalDeviceB())
        , m_queueFamiliesB                      (vk::getPhysicalDeviceQueueFamilyProperties(m_vkiB, m_physicalDeviceB))
        , m_queueFamilyIndicesB         (getFamilyIndices(m_queueFamiliesB))
-       , m_deviceB                                     (m_instanceAndDeviceB.getDevice())
+       , m_deviceB                                     (InstanceAndDevice::getDeviceB())
        , m_vkdB                                        (context.getPlatformInterface(), m_instanceB, *m_deviceB)
 
        , m_semaphoreHandleType         (m_config.semaphoreHandleType)
@@ -1096,9 +1125,9 @@ tcu::TestStatus SharingTestInstance::iterate (void)
                        const deUint64                                                          timelineValue                           = rng.getInt(1, deIntMaxValue32(32));
                        const vk::VkCommandBuffer                                       commandBuffer                           = *commandBufferA;
                        const vk::VkSemaphore                                           semaphore                                       = *semaphoreA;
-                       const vk::VkTimelineSemaphoreSubmitInfoKHR      semaphoreSubmitInfo     =
+                       const vk::VkTimelineSemaphoreSubmitInfo         semaphoreSubmitInfo     =
                        {
-                               vk::VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR,       // VkStructureType      sType;
+                               vk::VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO,           // VkStructureType      sType;
                                DE_NULL,                                                                                                        // const void*          pNext;
                                0u,                                                                                                                     // deUint32                     waitSemaphoreValueCount
                                DE_NULL,                                                                                                        // const deUint64*      pWaitSemaphoreValues
@@ -1132,9 +1161,9 @@ tcu::TestStatus SharingTestInstance::iterate (void)
                        const vk::VkCommandBuffer                                       commandBuffer                   = *commandBufferB;
                        const vk::VkSemaphore                                           semaphore                               = *semaphoreB;
                        const vk::VkPipelineStageFlags                          dstStage                                = readSync.stageMask;
-                       const vk::VkTimelineSemaphoreSubmitInfoKHR      semaphoreSubmitInfo             =
+                       const vk::VkTimelineSemaphoreSubmitInfo         semaphoreSubmitInfo             =
                        {
-                               vk::VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR,       // VkStructureType      sType;
+                               vk::VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO,           // VkStructureType      sType;
                                DE_NULL,                                                                                                        // const void*          pNext;
                                1u,                                                                                                                     // deUint32                     waitSemaphoreValueCount
                                &timelineValue,                                                                                         // const deUint64*      pWaitSemaphoreValues
@@ -1167,8 +1196,8 @@ tcu::TestStatus SharingTestInstance::iterate (void)
                        deUint64        valueA;
                        deUint64        valueB;
 
-                       VK_CHECK(m_vkdA.getSemaphoreCounterValueKHR(*m_deviceA, *semaphoreA, &valueA));
-                       VK_CHECK(m_vkdB.getSemaphoreCounterValueKHR(*m_deviceB, *semaphoreB, &valueB));
+                       VK_CHECK(m_vkdA.getSemaphoreCounterValue(*m_deviceA, *semaphoreA, &valueA));
+                       VK_CHECK(m_vkdB.getSemaphoreCounterValue(*m_deviceB, *semaphoreB, &valueB));
 
                        if (valueA != valueB)
                                return tcu::TestStatus::fail("Inconsistent values between shared semaphores");
@@ -1250,6 +1279,10 @@ tcu::TestStatus SharingTestInstance::iterate (void)
                m_resultCollector.fail(std::string("Exception: ") + error.getMessage());
        }
 
+       // Collect possible validation errors.
+       InstanceAndDevice::collectMessagesA();
+       InstanceAndDevice::collectMessagesB();
+
        // Move to next queue
        {
                m_queueBNdx++;
@@ -1320,7 +1353,7 @@ static void createTests (tcu::TestCaseGroup* group)
                },
        };
 
-       const std::string semaphoreNames[vk::VK_SEMAPHORE_TYPE_KHR_LAST] =
+       const std::string semaphoreNames[vk::VK_SEMAPHORE_TYPE_LAST] =
        {
                "_binary_semaphore",
                "_timeline_semaphore",
@@ -1347,11 +1380,11 @@ static void createTests (tcu::TestCaseGroup* group)
 
                                for (size_t caseNdx = 0; caseNdx < DE_LENGTH_OF_ARRAY(cases); caseNdx++)
                                {
-                                       for (int semaphoreType = 0; semaphoreType < vk::VK_SEMAPHORE_TYPE_KHR_LAST; semaphoreType++)
+                                       for (int semaphoreType = 0; semaphoreType < vk::VK_SEMAPHORE_TYPE_LAST; semaphoreType++)
                                        {
                                                if (isResourceSupported(writeOp, resource) && isResourceSupported(readOp, resource))
                                                {
-                                                       const TestConfig        config (resource, (vk::VkSemaphoreTypeKHR)semaphoreType, writeOp, readOp, cases[caseNdx].memoryType, cases[caseNdx].semaphoreType, dedicated);
+                                                       const TestConfig        config (resource, (vk::VkSemaphoreType)semaphoreType, writeOp, readOp, cases[caseNdx].memoryType, cases[caseNdx].semaphoreType, dedicated);
                                                        std::string                     name    = getResourceName(resource) + semaphoreNames[semaphoreType] + cases[caseNdx].nameSuffix;
 
                                                        opGroup->addChild(new InstanceFactory1<SharingTestInstance, TestConfig, Progs>(testCtx, tcu::NODETYPE_SELF_VALIDATE,  name, "", Progs(), config));
@@ -1373,7 +1406,7 @@ static void cleanupGroup (tcu::TestCaseGroup* group)
 {
        DE_UNREF(group);
        // Destroy singleton object
-
+       InstanceAndDevice::destroy();
 }
 
 tcu::TestCaseGroup* createCrossInstanceSharingTest (tcu::TestContext& testCtx)
index 60b04f7..c149a35 100644 (file)
@@ -114,6 +114,9 @@ class MultiQueues
                const VkPhysicalDevice                                          physicalDevice                  = context.getPhysicalDevice();
                const std::vector<VkQueueFamilyProperties>      queueFamilyProperties   = getPhysicalDeviceQueueFamilyProperties(instance, physicalDevice);
 
+               if (timelineSemaphore)
+                       context.requireDeviceFunctionality("VK_KHR_timeline_semaphore");
+
                for (deUint32 queuePropertiesNdx = 0; queuePropertiesNdx < queueFamilyProperties.size(); ++queuePropertiesNdx)
                {
                        addQueueIndex(queuePropertiesNdx,
@@ -157,9 +160,6 @@ class MultiQueues
                                &context.getDeviceFeatures()                                                                    //const VkPhysicalDeviceFeatures*       pEnabledFeatures;
                        };
 
-                       if (timelineSemaphore && !context.getTimelineSemaphoreFeatures().timelineSemaphore)
-                               TCU_THROW(NotSupportedError, "Timeline semaphore not supported");
-
                        m_logicalDevice = createCustomDevice(context.getTestContext().getCommandLine().isValidationEnabled(), context.getPlatformInterface(), context.getInstance(), instance, physicalDevice, &deviceInfo);
                        m_deviceDriver  = MovePtr<DeviceDriver>(new DeviceDriver(context.getPlatformInterface(), context.getInstance(), *m_logicalDevice));
                        m_allocator             = MovePtr<Allocator>(new SimpleAllocator(*m_deviceDriver, *m_logicalDevice, getPhysicalDeviceMemoryProperties(instance, physicalDevice)));
@@ -586,9 +586,9 @@ public:
                for (deUint32 opIdx = 0; opIdx < m_ops.size(); opIdx++)
                {
                        const VkPipelineStageFlags                              stageBits[]                             = { VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT };
-                       const VkTimelineSemaphoreSubmitInfoKHR  timelineSubmitInfo              =
+                       const VkTimelineSemaphoreSubmitInfo             timelineSubmitInfo              =
                        {
-                               VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR,   // VkStructureType      sType;
+                               VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO,               // VkStructureType      sType;
                                DE_NULL,                                                                                                // const void*          pNext;
                                opIdx == 0 ? 0u : 1u,                                                                   // deUint32                     waitSemaphoreValueCount
                                opIdx == 0 ? DE_NULL : &timelineValues[opIdx - 1],              // const deUint64*      pWaitSemaphoreValues
index 64d5920..f21b98c 100644 (file)
@@ -353,7 +353,7 @@ public:
                std::vector<VkCommandBuffer>                                                    cmdBuffers;
                const VkPipelineStageFlags                                                              stageBits[]                             = { VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT };
                std::vector<deUint64>                                                                   timelineValues;
-               std::vector<VkTimelineSemaphoreSubmitInfoKHR>                   timelineSubmitInfos;
+               std::vector<VkTimelineSemaphoreSubmitInfo>                              timelineSubmitInfos;
                std::vector<VkSubmitInfo>                                                               submitInfos;
 
                for (deUint32 opNdx = 0; opNdx < m_ops.size(); opNdx++)
@@ -371,9 +371,9 @@ public:
 
                for (deUint32 opNdx = 0; opNdx < m_ops.size(); opNdx++)
                {
-                       const VkTimelineSemaphoreSubmitInfoKHR  timelineSubmitInfo      =
+                       const VkTimelineSemaphoreSubmitInfo             timelineSubmitInfo      =
                        {
-                               VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR,   // VkStructureType      sType;
+                               VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO,               // VkStructureType      sType;
                                DE_NULL,                                                                                                // const void*          pNext;
                                opNdx == 0 ? 0u : 1u,                                                                   // deUint32                     waitSemaphoreValueCount
                                opNdx == 0 ? DE_NULL : &timelineValues[opNdx - 1],              // const deUint64*      pWaitSemaphoreValues
index 6ab78aa..3446dd1 100644 (file)
@@ -84,43 +84,34 @@ void hostSignal (const DeviceInterface& vk, const VkDevice& device, VkSemaphore
 {
        VkSemaphoreSignalInfoKHR        ssi     =
        {
-               VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR,// VkStructureType                          sType;
+               VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO,        // VkStructureType                              sType;
                DE_NULL,                                                                        // const void*                                  pNext;
                semaphore,                                                                      // VkSemaphore                                  semaphore;
                timelineValue,                                                          // deUint64                                             value;
        };
 
-       VK_CHECK(vk.signalSemaphoreKHR(device, &ssi));
+       VK_CHECK(vk.signalSemaphore(device, &ssi));
 }
 
-Move<VkDevice> createDevice (const deUint32                                                    apiVersion,
-                                                        const VkPhysicalDeviceFeatures&                deviceFeatures,
-                                                        const PlatformInterface&                               vkp,
-                                                        VkInstance                                                             instance,
-                                                        const vk::InstanceInterface&                   vki,
-                                                        VkPhysicalDevice                                               physicalDevice,
-                                                        VkSemaphoreTypeKHR                                             semaphoreType,
-                                                        VkExternalSemaphoreHandleTypeFlagBits  semaphoreHandleType)
+Move<VkDevice> createDevice (const Context& context)
 {
        const float                                                                     priority                                = 0.0f;
-       const std::vector<VkQueueFamilyProperties>      queueFamilyProperties   = getPhysicalDeviceQueueFamilyProperties(vki, physicalDevice);
+       const std::vector<VkQueueFamilyProperties>      queueFamilyProperties   = getPhysicalDeviceQueueFamilyProperties(context.getInstanceInterface(), context.getPhysicalDevice());
        std::vector<deUint32>                                           queueFamilyIndices              (queueFamilyProperties.size(), 0xFFFFFFFFu);
        std::vector<const char*>                                        extensions;
 
-       if (semaphoreType == VK_SEMAPHORE_TYPE_TIMELINE_KHR)
+       if (context.isDeviceFunctionalitySupported("VK_KHR_timeline_semaphore"))
                extensions.push_back("VK_KHR_timeline_semaphore");
 
-       if (!isCoreDeviceExtension(apiVersion, "VK_KHR_external_semaphore"))
+       if (!isCoreDeviceExtension(context.getUsedApiVersion(), "VK_KHR_external_semaphore"))
                extensions.push_back("VK_KHR_external_semaphore");
-       if (!isCoreDeviceExtension(apiVersion, "VK_KHR_external_memory"))
+       if (!isCoreDeviceExtension(context.getUsedApiVersion(), "VK_KHR_external_memory"))
                extensions.push_back("VK_KHR_external_memory");
 
-       if (semaphoreHandleType == VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT ||
-               semaphoreHandleType == VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT)
+       if (context.isDeviceFunctionalitySupported("VK_KHR_external_semaphore_fd"))
                extensions.push_back("VK_KHR_external_semaphore_fd");
 
-       if (semaphoreHandleType == VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT ||
-               semaphoreHandleType == VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT)
+       if (context.isDeviceFunctionalitySupported("VK_KHR_external_semaphore_win32"))
                extensions.push_back("VK_KHR_external_semaphore_win32");
 
        try
@@ -147,7 +138,7 @@ Move<VkDevice> createDevice (const deUint32                                                 apiVersion,
                {
                        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2,
                        DE_NULL,
-                       deviceFeatures,
+                       context.getDeviceFeatures(),
                };
                const VkDeviceCreateInfo                                createInfo                              =
                {
@@ -166,7 +157,7 @@ Move<VkDevice> createDevice (const deUint32                                                 apiVersion,
                        0u
                };
 
-               return createDevice(vkp, instance, vki, physicalDevice, &createInfo);
+               return createDevice(context.getPlatformInterface(), context.getInstance(), context.getInstanceInterface(), context.getPhysicalDevice(), &createInfo);
        }
        catch (const vk::Error& error)
        {
@@ -177,6 +168,43 @@ Move<VkDevice> createDevice (const deUint32                                                        apiVersion,
        }
 }
 
+// Class to wrap a singleton instance and device
+class SingletonDevice
+{
+       SingletonDevice (const Context& context)
+               : m_logicalDevice       (createDevice(context))
+       {
+       }
+
+public:
+
+       static const Unique<vk::VkDevice>& getDevice(const Context& context)
+       {
+               if (!m_singletonDevice)
+                       m_singletonDevice = SharedPtr<SingletonDevice>(new SingletonDevice(context));
+
+               DE_ASSERT(m_singletonDevice);
+               return m_singletonDevice->m_logicalDevice;
+       }
+
+       static void destroy()
+       {
+               m_singletonDevice.clear();
+       }
+
+private:
+       const Unique<vk::VkDevice>                                      m_logicalDevice;
+
+       static SharedPtr<SingletonDevice>       m_singletonDevice;
+};
+SharedPtr<SingletonDevice>             SingletonDevice::m_singletonDevice;
+
+static void cleanupGroup ()
+{
+       // Destroy singleton object
+       SingletonDevice::destroy();
+}
+
 class SimpleAllocation : public Allocation
 {
 public:
@@ -550,7 +578,7 @@ public:
                                                                                          const SharedPtr<OperationSupport>                     readOpSupport,
                                                                                          const ResourceDescription&                            resourceDesc,
                                                                                          VkExternalMemoryHandleTypeFlagBits            memoryHandleType,
-                                                                                         VkSemaphoreTypeKHR                                            semaphoreType,
+                                                                                         VkSemaphoreType                                                       semaphoreType,
                                                                                          VkExternalSemaphoreHandleTypeFlagBits         semaphoreHandleType,
                                                                                          PipelineCacheData&                                            pipelineCacheData)
                : TestInstance                  (context)
@@ -607,14 +635,7 @@ public:
                // We're using 2 devices to make sure we have 2 queues even on
                // implementations that only have a single queue.
                const VkDevice&                                                                         deviceA                                         = m_context.getDevice();
-               const Unique<VkDevice>                                                          deviceB                                         (createDevice(m_context.getUsedApiVersion(),
-                                                                                                                                                                                                         m_context.getDeviceFeatures(),
-                                                                                                                                                                                                         m_context.getPlatformInterface(),
-                                                                                                                                                                                                         m_context.getInstance(),
-                                                                                                                                                                                                         m_context.getInstanceInterface(),
-                                                                                                                                                                                                         m_context.getPhysicalDevice(),
-                                                                                                                                                                                                         m_semaphoreType,
-                                                                                                                                                                                                         m_semaphoreHandleType));
+               const Unique<VkDevice>&                                                         deviceB                                         (SingletonDevice::getDevice(m_context));
                const DeviceInterface&                                                          vkA                                                     = m_context.getDeviceInterface();
                const DeviceDriver                                                                      vkB                                                     (m_context.getPlatformInterface(), m_context.getInstance(), *deviceB);
                UniquePtr<SimpleAllocator>                                                      allocatorA                                      (new SimpleAllocator(vkA, deviceA, vk::getPhysicalDeviceMemoryProperties(m_context.getInstanceInterface(),
@@ -826,9 +847,9 @@ public:
 
                        if (m_semaphoreType == VK_SEMAPHORE_TYPE_TIMELINE_KHR)
                        {
-                               const VkSemaphoreWaitInfoKHR            waitInfo        =
+                               const VkSemaphoreWaitInfo               waitInfo        =
                                {
-                                       VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR,// VkStructureType                    sType;
+                                       VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO,  // VkStructureType                      sType;
                                        DE_NULL,                                                                // const void*                          pNext;
                                        0u,                                                                             // VkSemaphoreWaitFlagsKHR      flags;
                                        1u,                                                                             // deUint32                                     semaphoreCount;
@@ -839,7 +860,7 @@ public:
                                // Unblock the whole lot.
                                hostSignal(vkA, deviceA, semaphoreHandlesA.front(), 1);
 
-                               VK_CHECK(vkB.waitSemaphoresKHR(*deviceB, &waitInfo, ~0ull));
+                               VK_CHECK(vkB.waitSemaphores(*deviceB, &waitInfo, ~0ull));
                        }
                        else
                        {
@@ -1000,7 +1021,7 @@ private:
        SharedPtr<OperationSupport>                                     m_readOpSupport;
        const ResourceDescription&                                      m_resourceDesc;
        VkExternalMemoryHandleTypeFlagBits                      m_memoryHandleType;
-       VkSemaphoreTypeKHR                                                      m_semaphoreType;
+       VkSemaphoreType                                                         m_semaphoreType;
        VkExternalSemaphoreHandleTypeFlagBits           m_semaphoreHandleType;
        PipelineCacheData&                                                      m_pipelineCacheData;
        de::Random                                                                      m_rng;
@@ -1016,7 +1037,7 @@ public:
                                                                                  OperationName                                                 readOp,
                                                                                  const ResourceDescription&                    resourceDesc,
                                                                                  VkExternalMemoryHandleTypeFlagBits    memoryHandleType,
-                                                                                 VkSemaphoreTypeKHR                                    semaphoreType,
+                                                                                 VkSemaphoreType                                               semaphoreType,
                                                                                  VkExternalSemaphoreHandleTypeFlagBits semaphoreHandleType,
                                                                                  PipelineCacheData&                                    pipelineCacheData)
                : TestCase                              (testCtx, name.c_str(), "")
@@ -1030,6 +1051,23 @@ public:
        {
        }
 
+       virtual void checkSupport(Context& context) const
+       {
+               if (m_semaphoreType == VK_SEMAPHORE_TYPE_TIMELINE_KHR &&
+                       !context.getTimelineSemaphoreFeatures().timelineSemaphore)
+                       TCU_THROW(NotSupportedError, "Timeline semaphore not supported");
+
+               if ((m_semaphoreHandleType == VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT ||
+                        m_semaphoreHandleType == VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT) &&
+                        !context.isDeviceFunctionalitySupported("VK_KHR_external_semaphore_fd"))
+                       TCU_THROW(NotSupportedError, "VK_KHR_external_semaphore_fd not supported");
+
+               if ((m_semaphoreHandleType == VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT ||
+                        m_semaphoreHandleType == VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT) &&
+                       !context.isDeviceFunctionalitySupported("VK_KHR_external_semaphore_win32"))
+                       TCU_THROW(NotSupportedError, "VK_KHR_external_semaphore_win32 not supported");
+       }
+
        TestInstance* createInstance (Context& context) const
        {
                return new QueueSubmitSignalOrderSharedTestInstance(context,
@@ -1053,7 +1091,7 @@ private:
        SharedPtr<OperationSupport>                             m_readOpSupport;
        const ResourceDescription&                              m_resourceDesc;
        VkExternalMemoryHandleTypeFlagBits              m_memoryHandleType;
-       VkSemaphoreTypeKHR                                              m_semaphoreType;
+       VkSemaphoreType                                                 m_semaphoreType;
        VkExternalSemaphoreHandleTypeFlagBits   m_semaphoreHandleType;
        PipelineCacheData&                                              m_pipelineCacheData;
 };
@@ -1061,7 +1099,7 @@ private:
 class QueueSubmitSignalOrderSharedTests : public tcu::TestCaseGroup
 {
 public:
-       QueueSubmitSignalOrderSharedTests (tcu::TestContext& testCtx, VkSemaphoreTypeKHR semaphoreType, const char *name)
+       QueueSubmitSignalOrderSharedTests (tcu::TestContext& testCtx, VkSemaphoreType semaphoreType, const char *name)
                : tcu::TestCaseGroup    (testCtx, name, "Signal ordering of semaphores")
                , m_semaphoreType               (semaphoreType)
        {
@@ -1185,8 +1223,13 @@ public:
                }
        }
 
+       void deinit (void)
+       {
+               cleanupGroup();
+       }
+
 private:
-       VkSemaphoreTypeKHR      m_semaphoreType;
+       VkSemaphoreType         m_semaphoreType;
        // synchronization.op tests share pipeline cache data to speed up test
        // execution.
        PipelineCacheData       m_pipelineCacheData;
@@ -1220,21 +1263,14 @@ public:
                                                                                const SharedPtr<OperationSupport>                       writeOpSupport,
                                                                                const SharedPtr<OperationSupport>                       readOpSupport,
                                                                                const ResourceDescription&                                      resourceDesc,
-                                                                               VkSemaphoreTypeKHR                                                      semaphoreType,
+                                                                               VkSemaphoreType                                                         semaphoreType,
                                                                                PipelineCacheData&                                                      pipelineCacheData)
                : TestInstance                  (context)
                , m_writeOpSupport              (writeOpSupport)
                , m_readOpSupport               (readOpSupport)
                , m_resourceDesc                (resourceDesc)
                , m_semaphoreType               (semaphoreType)
-               , m_device                              (createDevice(context.getUsedApiVersion(),
-                                                                                         context.getDeviceFeatures(),
-                                                                                         context.getPlatformInterface(),
-                                                                                         context.getInstance(),
-                                                                                         context.getInstanceInterface(),
-                                                                                         context.getPhysicalDevice(),
-                                                                                         semaphoreType,
-                                                                                         (VkExternalSemaphoreHandleTypeFlagBits)0))
+               , m_device                              (SingletonDevice::getDevice(context))
                , m_deviceInterface             (context.getPlatformInterface(), context.getInstance(), *m_device)
                , m_allocator                   (new SimpleAllocator(m_deviceInterface,
                                                                                                         *m_device,
@@ -1465,9 +1501,9 @@ public:
 
                        if (m_semaphoreType == VK_SEMAPHORE_TYPE_TIMELINE_KHR)
                        {
-                               const VkSemaphoreWaitInfoKHR            waitInfo        =
+                               const VkSemaphoreWaitInfo               waitInfo        =
                                {
-                                       VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR,// VkStructureType                    sType;
+                                       VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO,  // VkStructureType                      sType;
                                        DE_NULL,                                                                // const void*                          pNext;
                                        0u,                                                                             // VkSemaphoreWaitFlagsKHR      flags;
                                        1u,                                                                             // deUint32                                     semaphoreCount;
@@ -1478,7 +1514,7 @@ public:
                                // Unblock the whole lot.
                                hostSignal(vk, device, semaphoreHandlesA.front(), 1);
 
-                               VK_CHECK(vk.waitSemaphoresKHR(device, &waitInfo, ~0ull));
+                               VK_CHECK(vk.waitSemaphores(device, &waitInfo, ~0ull));
                        }
                        else
                        {
@@ -1543,8 +1579,8 @@ private:
        SharedPtr<OperationSupport>                                     m_writeOpSupport;
        SharedPtr<OperationSupport>                                     m_readOpSupport;
        const ResourceDescription&                                      m_resourceDesc;
-       VkSemaphoreTypeKHR                                                      m_semaphoreType;
-       Unique<VkDevice>                                                        m_device;
+       VkSemaphoreType                                                         m_semaphoreType;
+       const Unique<VkDevice>&                                         m_device;
        const DeviceDriver                                                      m_deviceInterface;
        UniquePtr<SimpleAllocator>                                      m_allocator;
        UniquePtr<OperationContext>                                     m_operationContext;
@@ -1563,7 +1599,7 @@ public:
                                                                        OperationName                           writeOp,
                                                                        OperationName                           readOp,
                                                                        const ResourceDescription&      resourceDesc,
-                                                                       VkSemaphoreTypeKHR                      semaphoreType,
+                                                                       VkSemaphoreType                         semaphoreType,
                                                                        PipelineCacheData&                      pipelineCacheData)
                : TestCase                              (testCtx, name.c_str(), "")
                , m_writeOpSupport              (makeOperationSupport(writeOp, resourceDesc).release())
@@ -1574,6 +1610,13 @@ public:
        {
        }
 
+       virtual void checkSupport(Context& context) const
+       {
+               if (m_semaphoreType == VK_SEMAPHORE_TYPE_TIMELINE_KHR &&
+                       !context.getTimelineSemaphoreFeatures().timelineSemaphore)
+                       TCU_THROW(NotSupportedError, "Timeline semaphore not supported");
+       }
+
        TestInstance* createInstance (Context& context) const
        {
                return new QueueSubmitSignalOrderTestInstance(context,
@@ -1594,14 +1637,14 @@ private:
        SharedPtr<OperationSupport>                             m_writeOpSupport;
        SharedPtr<OperationSupport>                             m_readOpSupport;
        const ResourceDescription&                              m_resourceDesc;
-       VkSemaphoreTypeKHR                                              m_semaphoreType;
+       VkSemaphoreType                                                 m_semaphoreType;
        PipelineCacheData&                                              m_pipelineCacheData;
 };
 
 class QueueSubmitSignalOrderTests : public tcu::TestCaseGroup
 {
 public:
-       QueueSubmitSignalOrderTests (tcu::TestContext& testCtx, VkSemaphoreTypeKHR semaphoreType, const char *name)
+       QueueSubmitSignalOrderTests (tcu::TestContext& testCtx, VkSemaphoreType semaphoreType, const char *name)
                : tcu::TestCaseGroup    (testCtx, name, "Signal ordering of semaphores")
                , m_semaphoreType               (semaphoreType)
        {
@@ -1696,8 +1739,13 @@ public:
                }
        }
 
+       void deinit (void)
+       {
+               cleanupGroup();
+       }
+
 private:
-       VkSemaphoreTypeKHR              m_semaphoreType;
+       VkSemaphoreType         m_semaphoreType;
        // synchronization.op tests share pipeline cache data to speed up test
        // execution.
        PipelineCacheData       m_pipelineCacheData;
index 24abcec..c4624b6 100644 (file)
@@ -973,11 +973,11 @@ static void initSubmitInfo (VkSubmitInfo* submitInfo, deUint32 submitInfoCount)
        }
 }
 
-static void initTimelineSemaphoreSubmitInfo (VkTimelineSemaphoreSubmitInfoKHR* submitInfo, deUint32 submitInfoCount)
+static void initTimelineSemaphoreSubmitInfo (VkTimelineSemaphoreSubmitInfo* submitInfo, deUint32 submitInfoCount)
 {
        for (deUint32 ndx = 0; ndx < submitInfoCount; ndx++)
        {
-               submitInfo[ndx].sType                                           = VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR;
+               submitInfo[ndx].sType                                           = VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO;
                submitInfo[ndx].pNext                                           = DE_NULL;
                submitInfo[ndx].waitSemaphoreValueCount         = 0;
                submitInfo[ndx].pWaitSemaphoreValues            = DE_NULL;
@@ -1090,19 +1090,19 @@ tcu::TestStatus testFences (Context& context)
        return TestStatus::pass("synchronization-fences passed");
 }
 
-tcu::TestStatus testSemaphores (Context& context, VkSemaphoreTypeKHR semaphoreType)
+tcu::TestStatus testSemaphores (Context& context, VkSemaphoreType semaphoreType)
 {
-       TestLog&                                                        log                                             = context.getTestContext().getLog();
-       const PlatformInterface&                        platformInterface               = context.getPlatformInterface();
-       const InstanceInterface&                        instanceInterface               = context.getInstanceInterface();
-       const VkPhysicalDevice                          physicalDevice                  = context.getPhysicalDevice();
-       deUint32                                                        queueFamilyIdx;
-       vk::Move<VkDevice>                                      device                                  = createTestDevice(platformInterface, context.getInstance(), instanceInterface, physicalDevice, context.getTestContext().getCommandLine().isValidationEnabled(), &queueFamilyIdx);
-       const DeviceDriver                                      deviceInterface                 (platformInterface, context.getInstance(), *device);
-       SimpleAllocator                                         allocator                               (deviceInterface,
-                                                                                                                                *device,
-                                                                                                                                getPhysicalDeviceMemoryProperties(instanceInterface, physicalDevice));
-       const VkQueue                                           queue[2]                                =
+       TestLog&                                        log                                     = context.getTestContext().getLog();
+       const PlatformInterface&        platformInterface       = context.getPlatformInterface();
+       const InstanceInterface&        instanceInterface       = context.getInstanceInterface();
+       const VkPhysicalDevice          physicalDevice          = context.getPhysicalDevice();
+       deUint32                                        queueFamilyIdx;
+       vk::Move<VkDevice>                      device                          = createTestDevice(platformInterface, context.getInstance(), instanceInterface, physicalDevice, context.getTestContext().getCommandLine().isValidationEnabled(), &queueFamilyIdx);
+       const DeviceDriver                      deviceInterface         (platformInterface, context.getInstance(), *device);
+       SimpleAllocator                         allocator                       (deviceInterface,
+                                                                                                        *device,
+                                                                                                        getPhysicalDeviceMemoryProperties(instanceInterface, physicalDevice));
+       const VkQueue                           queue[2]                        =
        {
                getDeviceQueue(deviceInterface, *device, queueFamilyIdx, 0),
                getDeviceQueue(deviceInterface, *device, queueFamilyIdx, 1)
@@ -1112,7 +1112,7 @@ tcu::TestStatus testSemaphores (Context& context, VkSemaphoreTypeKHR semaphoreTy
        TestContext                                                     testContext2                    (deviceInterface, device.get(), queueFamilyIdx, context.getBinaryCollection(), allocator);
        Unique<VkSemaphore>                                     semaphore                               (createSemaphoreType(deviceInterface, *device, semaphoreType));
        VkSubmitInfo                                            submitInfo[2];
-       VkTimelineSemaphoreSubmitInfoKHR        timelineSubmitInfo[2];
+       VkTimelineSemaphoreSubmitInfo           timelineSubmitInfo[2];
        const deUint64                                          timelineValue                   = 1u;
 
        void*                                           resultImage;
@@ -1161,12 +1161,12 @@ tcu::TestStatus testSemaphores (Context& context, VkSemaphoreTypeKHR semaphoreTy
        submitInfo[0].pSignalSemaphores                                 = &semaphore.get();
        timelineSubmitInfo[0].pSignalSemaphoreValues    = &timelineValue;
        timelineSubmitInfo[0].signalSemaphoreValueCount = 1;
-       submitInfo[0].pNext = (semaphoreType == VK_SEMAPHORE_TYPE_TIMELINE_KHR ? &timelineSubmitInfo[0] : DE_NULL);
+       submitInfo[0].pNext = (semaphoreType == VK_SEMAPHORE_TYPE_TIMELINE ? &timelineSubmitInfo[0] : DE_NULL);
        submitInfo[1].waitSemaphoreCount                                = 1;
        submitInfo[1].pWaitSemaphores                                   = &semaphore.get();
        timelineSubmitInfo[1].pWaitSemaphoreValues              = &timelineValue;
        timelineSubmitInfo[1].waitSemaphoreValueCount   = 1;
-       submitInfo[1].pNext = (semaphoreType == VK_SEMAPHORE_TYPE_TIMELINE_KHR ? &timelineSubmitInfo[1] : DE_NULL);
+       submitInfo[1].pNext = (semaphoreType == VK_SEMAPHORE_TYPE_TIMELINE ? &timelineSubmitInfo[1] : DE_NULL);
        submitInfo[1].pWaitDstStageMask                                 = &waitDstStageMask;
 
        VK_CHECK(deviceInterface.queueSubmit(queue[0], 1, &submitInfo[0], testContext1.fences[0]));
index cc2db0c..2f6b54d 100644 (file)
@@ -84,11 +84,11 @@ inline SharedPtr<T> makeSharedPtr (T* ptr)
 deUint64 getMaxTimelineSemaphoreValueDifference(const InstanceInterface& vk,
                                                                                                const VkPhysicalDevice physicalDevice)
 {
-       VkPhysicalDeviceTimelineSemaphorePropertiesKHR  timelineSemaphoreProperties;
+       VkPhysicalDeviceTimelineSemaphoreProperties             timelineSemaphoreProperties;
        VkPhysicalDeviceProperties2                                             properties;
 
        deMemset(&timelineSemaphoreProperties, 0, sizeof(timelineSemaphoreProperties));
-       timelineSemaphoreProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR;
+       timelineSemaphoreProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES;
 
        deMemset(&properties, 0, sizeof(properties));
        properties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2;
@@ -106,9 +106,9 @@ void deviceSignal (const DeviceInterface&   vk,
                                   const VkSemaphore            semaphore,
                                   const deUint64                       timelineValue)
 {
-       VkTimelineSemaphoreSubmitInfoKHR        tsi                     =
+       VkTimelineSemaphoreSubmitInfo           tsi                     =
        {
-               VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR,   // VkStructureType                              sType;
+               VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO,               // VkStructureType                              sType;
                DE_NULL,                                                                                                // const void*                                  pNext;
                0u,                                                                                                             // deUint32                                             waitSemaphoreValueCount
                DE_NULL,                                                                                                // const deUint64*                              pWaitSemaphoreValues
@@ -152,13 +152,13 @@ void hostSignal (const DeviceInterface& vk, const VkDevice& device, VkSemaphore
 {
        VkSemaphoreSignalInfoKHR        ssi     =
        {
-               VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR,// VkStructureType                          sType;
+               VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO,        // VkStructureType                              sType;
                DE_NULL,                                                                        // const void*                                  pNext;
                semaphore,                                                                      // VkSemaphore                                  semaphore;
                timelineValue,                                                          // deUint64                                             value;
        };
 
-       VK_CHECK(vk.signalSemaphoreKHR(device, &ssi));
+       VK_CHECK(vk.signalSemaphore(device, &ssi));
 }
 
 class WaitTestInstance : public TestInstance
@@ -169,8 +169,6 @@ public:
                , m_waitAll                             (waitAll)
                , m_signalFromDevice    (signalFromDevice)
        {
-               if (!context.getTimelineSemaphoreFeatures().timelineSemaphore)
-                       TCU_THROW(NotSupportedError, "Timeline semaphore not supported");
        }
 
        tcu::TestStatus iterate (void)
@@ -215,18 +213,18 @@ public:
                }
 
                {
-                       const VkSemaphoreWaitInfoKHR    waitInfo        =
+                       const VkSemaphoreWaitInfo               waitInfo        =
                        {
-                               VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR,                                                                      // VkStructureType                      sType;
-                               DE_NULL,                                                                                                                                        // const void*                          pNext;
-                               m_waitAll ? 0u : (VkSemaphoreWaitFlagsKHR) VK_SEMAPHORE_WAIT_ANY_BIT_KHR,       // VkSemaphoreWaitFlagsKHR      flags;
-                               (deUint32) semaphores.size(),                                                                                           // deUint32                                     semaphoreCount;
-                               &semaphores[0],                                                                                                                         // const VkSemaphore*           pSemaphores;
-                               &timelineValues[0],                                                                                                                     // const deUint64*                      pValues;
+                               VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO,                                                                  // VkStructureType                      sType;
+                               DE_NULL,                                                                                                                                // const void*                          pNext;
+                               m_waitAll ? 0u : (VkSemaphoreWaitFlags) VK_SEMAPHORE_WAIT_ANY_BIT_KHR,  // VkSemaphoreWaitFlagsKHR      flags;
+                               (deUint32) semaphores.size(),                                                                                   // deUint32                                     semaphoreCount;
+                               &semaphores[0],                                                                                                                 // const VkSemaphore*           pSemaphores;
+                               &timelineValues[0],                                                                                                             // const deUint64*                      pValues;
                        };
                        VkResult                                                result;
 
-                       result = vk.waitSemaphoresKHR(device, &waitInfo, 0ull);
+                       result = vk.waitSemaphores(device, &waitInfo, 0ull);
 
                        if (result != VK_SUCCESS)
                                return tcu::TestStatus::fail("Wait failed");
@@ -263,6 +261,11 @@ public:
        {
        }
 
+       virtual void checkSupport(Context& context) const
+       {
+               context.requireDeviceFunctionality("VK_KHR_timeline_semaphore");
+       }
+
        TestInstance* createInstance (Context& context) const
        {
                return new WaitTestInstance(context, m_waitAll, m_signalFromDevice);
@@ -281,8 +284,6 @@ public:
        HostWaitBeforeSignalTestInstance (Context& context)
                : TestInstance                  (context)
        {
-               if (!context.getTimelineSemaphoreFeatures().timelineSemaphore)
-                       TCU_THROW(NotSupportedError, "Timeline semaphore not supported");
        }
 
        tcu::TestStatus iterate (void)
@@ -300,9 +301,9 @@ public:
                for (deUint32 i = 0; i < 12; i++)
                {
                        const deUint64                                                  newTimelineValue        = (timelineValues.back() + rng.getInt(1, 10000));
-                       const VkTimelineSemaphoreSubmitInfoKHR  timelineSubmitInfo      =
+                       const VkTimelineSemaphoreSubmitInfo             timelineSubmitInfo      =
                        {
-                               VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR,   // VkStructureType      sType;
+                               VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO,               // VkStructureType      sType;
                                DE_NULL,                                                                                                // const void*          pNext;
                                1u,                                                                                                             // deUint32                     waitSemaphoreValueCount
                                &timelineValues.back(),                                                                 // const deUint64*      pWaitSemaphoreValues
@@ -340,7 +341,7 @@ public:
                        };
                        VkResult                                                result;
 
-                       result = vk.waitSemaphoresKHR(device, &waitInfo, 0ull);
+                       result = vk.waitSemaphores(device, &waitInfo, 0ull);
 
                        if (result != VK_TIMEOUT)
                                return tcu::TestStatus::fail("Wait failed");
@@ -360,7 +361,7 @@ public:
                        };
                        VkResult                                                result;
 
-                       result = vk.waitSemaphoresKHR(device, &waitInfo, ~(0ull));
+                       result = vk.waitSemaphores(device, &waitInfo, ~(0ull));
 
                        if (result != VK_SUCCESS)
                                return tcu::TestStatus::fail("Wait failed");
@@ -392,6 +393,11 @@ public:
        {
        }
 
+       virtual void checkSupport(Context& context) const
+       {
+               context.requireDeviceFunctionality("VK_KHR_timeline_semaphore");
+       }
+
        TestInstance* createInstance (Context& context) const
        {
                return new HostWaitBeforeSignalTestInstance(context);
@@ -422,7 +428,7 @@ public:
                {
                        deUint64 value;
 
-                       VK_CHECK(m_vkd.getSemaphoreCounterValueKHR(m_device, m_semaphore, &value));
+                       VK_CHECK(m_vkd.getSemaphoreCounterValue(m_device, m_semaphore, &value));
 
                        if (value < lastValue) {
                                m_status = tcu::TestStatus::fail("Value not monotically increasing");
@@ -497,7 +503,7 @@ tcu::TestStatus maxDifferenceValueCase (Context& context)
                        deviceSignal(vk, device, queue, DE_NULL, *semaphore, ++timelineFrontValue);
 
                deUint64 value;
-               VK_CHECK(vk.getSemaphoreCounterValueKHR(device, *semaphore, &value));
+               VK_CHECK(vk.getSemaphoreCounterValue(device, *semaphore, &value));
 
                VK_CHECK(vk.waitForFences(device, 1, &fence.get(), VK_TRUE, ~(0ull)));
                VK_CHECK(vk.resetFences(device, 1, &fence.get()));
@@ -523,9 +529,9 @@ tcu::TestStatus initialValueCase (Context& context)
        const Unique<VkSemaphore>                                               semaphoreDefaultValue           (createSemaphoreType(vk, device, VK_SEMAPHORE_TYPE_TIMELINE_KHR));
        const Unique<VkSemaphore>                                               semaphoreInitialValue           (createSemaphoreType(vk, device, VK_SEMAPHORE_TYPE_TIMELINE_KHR, 0, nonZeroValue));
        deUint64                                                                                initialValue;
-       VkSemaphoreWaitInfoKHR                                                  waitInfo                                        =
+       VkSemaphoreWaitInfo                                                             waitInfo                                        =
        {
-               VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR,      // VkStructureType                      sType;
+               VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO,          // VkStructureType                      sType;
                DE_NULL,                                                                        // const void*                          pNext;
                0u,                                                                                     // VkSemaphoreWaitFlagsKHR      flags;
                1u,                                                                                     // deUint32                                     semaphoreCount;
@@ -537,21 +543,21 @@ tcu::TestStatus initialValueCase (Context& context)
 
        waitInfo.pSemaphores = &semaphoreDefaultValue.get();
        initialValue = 0;
-       result = vk.waitSemaphoresKHR(device, &waitInfo, 0ull);
+       result = vk.waitSemaphores(device, &waitInfo, 0ull);
        if (result != VK_SUCCESS)
                return tcu::TestStatus::fail("Wait zero initial value failed");
 
-       VK_CHECK(vk.getSemaphoreCounterValueKHR(device, *semaphoreDefaultValue, &value));
+       VK_CHECK(vk.getSemaphoreCounterValue(device, *semaphoreDefaultValue, &value));
        if (value != initialValue)
                return tcu::TestStatus::fail("Invalid zero initial value");
 
        waitInfo.pSemaphores = &semaphoreInitialValue.get();
        initialValue = nonZeroValue;
-       result = vk.waitSemaphoresKHR(device, &waitInfo, 0ull);
+       result = vk.waitSemaphores(device, &waitInfo, 0ull);
        if (result != VK_SUCCESS)
                return tcu::TestStatus::fail("Wait non zero initial value failed");
 
-       VK_CHECK(vk.getSemaphoreCounterValueKHR(device, *semaphoreInitialValue, &value));
+       VK_CHECK(vk.getSemaphoreCounterValue(device, *semaphoreInitialValue, &value));
        if (value != nonZeroValue)
                return tcu::TestStatus::fail("Invalid non zero initial value");
 
@@ -562,11 +568,11 @@ tcu::TestStatus initialValueCase (Context& context)
 
                waitInfo.pSemaphores = &semaphoreMaxValue.get();
                initialValue = nonZeroMaxValue;
-               result = vk.waitSemaphoresKHR(device, &waitInfo, 0ull);
+               result = vk.waitSemaphores(device, &waitInfo, 0ull);
                if (result != VK_SUCCESS)
                        return tcu::TestStatus::fail("Wait max value failed");
 
-               VK_CHECK(vk.getSemaphoreCounterValueKHR(device, *semaphoreMaxValue, &value));
+               VK_CHECK(vk.getSemaphoreCounterValue(device, *semaphoreMaxValue, &value));
                if (value != nonZeroMaxValue)
                        return tcu::TestStatus::fail("Invalid max value initial value");
        }
@@ -659,7 +665,7 @@ public:
                                };
                                VkResult                                                result;
 
-                               result = m_vkd.waitSemaphoresKHR(m_device, &waitInfo, ~(deUint64)0u);
+                               result = m_vkd.waitSemaphores(m_device, &waitInfo, ~(deUint64)0u);
                                if (result != VK_SUCCESS)
                                        return;
                        }
@@ -679,7 +685,7 @@ public:
                                };
                                VkResult                                                result;
 
-                               result = m_vkd.signalSemaphoreKHR(m_device, &signalInfo);
+                               result = m_vkd.signalSemaphore(m_device, &signalInfo);
                                if (result != VK_SUCCESS)
                                        return;
                        }
@@ -745,9 +751,6 @@ public:
        {
                de::Random      rng             (1234);
 
-               if (!context.getTimelineSemaphoreFeatures().timelineSemaphore)
-                       TCU_THROW(NotSupportedError, "Timeline semaphore not supported");
-
                // Create a dozen couple of operations and their associated
                // resource.
                for (deUint32 i = 0; i < 12; i++)
@@ -769,7 +772,7 @@ public:
                HostCopyThread                                                                          hostCopyThread                  (vk, device, *semaphore, m_iterations);
                std::vector<SharedPtr<Move<VkCommandBuffer> > >         ptrCmdBuffers;
                std::vector<VkCommandBuffer>                                            cmdBuffers;
-               std::vector<VkTimelineSemaphoreSubmitInfoKHR>           timelineSubmitInfos;
+               std::vector<VkTimelineSemaphoreSubmitInfo>                      timelineSubmitInfos;
                std::vector<VkSubmitInfo>                                                       submitInfos;
 
                hostCopyThread.start();
@@ -800,9 +803,9 @@ public:
                {
                        // Write operation
                        {
-                               const VkTimelineSemaphoreSubmitInfoKHR  timelineSubmitInfo      =
+                               const VkTimelineSemaphoreSubmitInfo             timelineSubmitInfo      =
                                {
-                                       VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR,                   // VkStructureType      sType;
+                                       VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO,                               // VkStructureType      sType;
                                        DE_NULL,                                                                                                                // const void*          pNext;
                                        iterIdx == 0 ? 0u : 1u,                                                                                 // deUint32                     waitSemaphoreValueCount
                                        iterIdx == 0 ? DE_NULL : &m_iterations[iterIdx - 1]->cpuValue,  // const deUint64*      pWaitSemaphoreValues
@@ -858,9 +861,9 @@ public:
 
                        // Read operation
                        {
-                               const VkTimelineSemaphoreSubmitInfoKHR  timelineSubmitInfo      =
+                               const VkTimelineSemaphoreSubmitInfo             timelineSubmitInfo      =
                                {
-                                       VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR,   // VkStructureType      sType;
+                                       VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO,               // VkStructureType      sType;
                                        DE_NULL,                                                                                                // const void*          pNext;
                                        1u,                                                                                                             // deUint32                     waitSemaphoreValueCount
                                        &m_iterations[iterIdx]->writeValue,                                             // const deUint64*      pWaitSemaphoreValues
@@ -930,6 +933,11 @@ public:
        {
        }
 
+       virtual void checkSupport(Context& context) const
+       {
+               context.requireDeviceFunctionality("VK_KHR_timeline_semaphore");
+       }
+
        void initPrograms (SourceCollections& programCollection) const
        {
                m_writeOp->initPrograms(programCollection);
@@ -1095,7 +1103,7 @@ std::vector<VkDeviceQueueCreateInfo> getQueueCreateInfo(const std::vector<VkQueu
        return infos;
 }
 
-Move<VkDevice> createDevice(Context& context)
+Move<VkDevice> createDevice(const Context& context)
 {
        const std::vector<VkQueueFamilyProperties>              queueFamilyProperties   = getPhysicalDeviceQueueFamilyProperties(context.getInstanceInterface(), context.getPhysicalDevice());
        std::vector<VkDeviceQueueCreateInfo>                    queueCreateInfos                = getQueueCreateInfo(queueFamilyProperties);
@@ -1129,13 +1137,48 @@ Move<VkDevice> createDevice(Context& context)
                queueCreateInfo.pQueuePriorities = &(*queuePriorities.back().get())[0];
        }
 
-       if (!context.getTimelineSemaphoreFeatures().timelineSemaphore)
-               TCU_THROW(NotSupportedError, "Timeline semaphore not supported");
-
        return createDevice(context.getPlatformInterface(), context.getInstance(),
                                                context.getInstanceInterface(), context.getPhysicalDevice(), &deviceInfo);
 }
 
+
+// Class to wrap a singleton instance and device
+class SingletonDevice
+{
+       SingletonDevice (const Context& context)
+               : m_logicalDevice       (createDevice(context))
+       {
+       }
+
+public:
+
+       static const Unique<vk::VkDevice>& getDevice(const Context& context)
+       {
+               if (!m_singletonDevice)
+                       m_singletonDevice = SharedPtr<SingletonDevice>(new SingletonDevice(context));
+
+               DE_ASSERT(m_singletonDevice);
+               return m_singletonDevice->m_logicalDevice;
+       }
+
+       static void destroy()
+       {
+               m_singletonDevice.clear();
+       }
+
+private:
+       const Unique<vk::VkDevice>                                      m_logicalDevice;
+
+       static SharedPtr<SingletonDevice>       m_singletonDevice;
+};
+SharedPtr<SingletonDevice>             SingletonDevice::m_singletonDevice;
+
+static void cleanupGroup ()
+{
+       // Destroy singleton object
+       SingletonDevice::destroy();
+}
+
 // Create a chain of operations with data copied across queues & host
 // and submit the operations out of order to verify that the queues
 // are properly unblocked as the work progresses.
@@ -1149,7 +1192,7 @@ public:
                                                                  PipelineCacheData&                                    pipelineCacheData)
                : TestInstance          (context)
                , m_resourceDesc        (resourceDesc)
-               , m_device                      (createDevice(context))
+               , m_device                      (SingletonDevice::getDevice(context))
                , m_deviceDriver        (MovePtr<DeviceDriver>(new DeviceDriver(context.getPlatformInterface(), context.getInstance(), *m_device)))
                , m_allocator           (new SimpleAllocator(*m_deviceDriver, *m_device,
                                                                                                 getPhysicalDeviceMemoryProperties(context.getInstanceInterface(),
@@ -1265,9 +1308,9 @@ public:
                        // exercise the wait-before-submit behavior.
                        deUint32 iterIdx = (deUint32)(m_iterations.size() - 2 - _iterIdx);
 
-                       const VkTimelineSemaphoreSubmitInfoKHR  timelineSubmitInfo      =
+                       const VkTimelineSemaphoreSubmitInfo             timelineSubmitInfo      =
                        {
-                               VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR,                                                           // VkStructureType      sType;
+                               VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO,                                                                       // VkStructureType      sType;
                                DE_NULL,                                                                                                                                                        // const void*          pNext;
                                1u,                                                                                                                                                                     // deUint32                     waitSemaphoreValueCount
                                iterIdx == 0 ? &m_hostTimelineValue : &m_iterations[iterIdx - 1]->timelineValue,        // const deUint64*      pWaitSemaphoreValues
@@ -1327,9 +1370,9 @@ public:
                // Submit the last read operation in order.
                {
                        const deUint32                                                  iterIdx                         = (deUint32) (m_iterations.size() - 1);
-                       const VkTimelineSemaphoreSubmitInfoKHR  timelineSubmitInfo      =
+                       const VkTimelineSemaphoreSubmitInfo             timelineSubmitInfo      =
                        {
-                               VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR,                           // VkStructureType      sType;
+                               VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO,                                       // VkStructureType      sType;
                                DE_NULL,                                                                                                                        // const void*          pNext;
                                1u,                                                                                                                                     // deUint32                     waitSemaphoreValueCount
                                &m_iterations[iterIdx - 1]->timelineValue,                                                      // const deUint64*      pWaitSemaphoreValues
@@ -1375,7 +1418,7 @@ public:
 
 protected:
        const ResourceDescription                                               m_resourceDesc;
-       Move<VkDevice>                                                                  m_device;
+       const Unique<VkDevice>&                                                 m_device;
        MovePtr<DeviceDriver>                                                   m_deviceDriver;
        MovePtr<Allocator>                                                              m_allocator;
        OperationContext                                                                m_opContext;
@@ -1402,6 +1445,11 @@ public:
        {
        }
 
+       virtual void checkSupport(Context& context) const
+       {
+               context.requireDeviceFunctionality("VK_KHR_timeline_semaphore");
+       }
+
        void initPrograms (SourceCollections& programCollection) const
        {
                m_writeOp->initPrograms(programCollection);
@@ -1518,6 +1566,11 @@ public:
                }
        }
 
+       void deinit (void)
+       {
+               cleanupGroup();
+       }
+
 private:
        // synchronization.op tests share pipeline cache data to speed up test
        // execution.
@@ -1541,7 +1594,7 @@ public:
                                                PipelineCacheData&                                      pipelineCacheData)
                : TestInstance          (context)
                , m_resourceDesc        (resourceDesc)
-               , m_device                      (createDevice(context))
+               , m_device                      (SingletonDevice::getDevice(context))
                , m_deviceDriver        (MovePtr<DeviceDriver>(new DeviceDriver(context.getPlatformInterface(), context.getInstance(), *m_device)))
                , m_allocator           (new SimpleAllocator(*m_deviceDriver, *m_device,
                                                                                                 getPhysicalDeviceMemoryProperties(context.getInstanceInterface(),
@@ -1680,9 +1733,9 @@ public:
                        VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
                        VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
                };
-               const VkTimelineSemaphoreSubmitInfoKHR  timelineSubmitInfo      =
+               const VkTimelineSemaphoreSubmitInfo             timelineSubmitInfo      =
                {
-                       VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR,                   // VkStructureType      sType;
+                       VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO,                               // VkStructureType      sType;
                        DE_NULL,                                                                                                                // const void*          pNext;
                        waitValuesCount,                                                                                                // deUint32                     waitSemaphoreValueCount
                        waitValues,                                                                                                             // const deUint64*      pWaitSemaphoreValues
@@ -1818,7 +1871,7 @@ public:
 
 protected:
        ResourceDescription                                                             m_resourceDesc;
-       Move<VkDevice>                                                                  m_device;
+       const Unique<VkDevice>&                                                 m_device;
        MovePtr<DeviceDriver>                                                   m_deviceDriver;
        MovePtr<Allocator>                                                              m_allocator;
        OperationContext                                                                m_opContext;
@@ -1848,6 +1901,11 @@ public:
        {
        }
 
+       virtual void checkSupport(Context& context) const
+       {
+               context.requireDeviceFunctionality("VK_KHR_timeline_semaphore");
+       }
+
        void initPrograms (SourceCollections& programCollection) const
        {
                m_writeOp->initPrograms(programCollection);
@@ -1964,6 +2022,11 @@ public:
                }
        }
 
+       void deinit (void)
+       {
+               cleanupGroup();
+       }
+
 private:
        // synchronization.op tests share pipeline cache data to speed up test
        // execution.
index 7c24146..5deb063 100644 (file)
@@ -121,7 +121,7 @@ Texture2DFilteringTestInstance::Texture2DFilteringTestInstance (Context& context
 
        if ((testParameters.wrapS == Sampler::MIRRORED_ONCE ||
                testParameters.wrapT == Sampler::MIRRORED_ONCE) &&
-               !de::contains(context.getDeviceExtensions().begin(), context.getDeviceExtensions().end(), "VK_KHR_sampler_mirror_clamp_to_edge"))
+               !context.isDeviceFunctionalitySupported("VK_KHR_sampler_mirror_clamp_to_edge"))
                TCU_THROW(NotSupportedError, "VK_KHR_sampler_mirror_clamp_to_edge not supported");
 
        // Create 2 textures.
@@ -320,7 +320,7 @@ TextureCubeFilteringTestInstance::TextureCubeFilteringTestInstance (Context& con
 
        if ((testParameters.wrapS == Sampler::MIRRORED_ONCE ||
                testParameters.wrapT == Sampler::MIRRORED_ONCE) &&
-               !de::contains(context.getDeviceExtensions().begin(), context.getDeviceExtensions().end(), "VK_KHR_sampler_mirror_clamp_to_edge"))
+               !context.isDeviceFunctionalitySupported("VK_KHR_sampler_mirror_clamp_to_edge"))
                TCU_THROW(NotSupportedError, "VK_KHR_sampler_mirror_clamp_to_edge not supported");
 
        m_textures.reserve(2);
@@ -542,7 +542,7 @@ Texture2DArrayFilteringTestInstance::Texture2DArrayFilteringTestInstance (Contex
 
        if ((testParameters.wrapS == Sampler::MIRRORED_ONCE ||
                testParameters.wrapT == Sampler::MIRRORED_ONCE) &&
-               !de::contains(context.getDeviceExtensions().begin(), context.getDeviceExtensions().end(), "VK_KHR_sampler_mirror_clamp_to_edge"))
+               !context.isDeviceFunctionalitySupported("VK_KHR_sampler_mirror_clamp_to_edge"))
                TCU_THROW(NotSupportedError, "VK_KHR_sampler_mirror_clamp_to_edge not supported");
 
        // Create textures.
@@ -746,7 +746,7 @@ Texture3DFilteringTestInstance::Texture3DFilteringTestInstance (Context& context
        if ((testParameters.wrapS == Sampler::MIRRORED_ONCE ||
                testParameters.wrapT == Sampler::MIRRORED_ONCE ||
                testParameters.wrapR == Sampler::MIRRORED_ONCE) &&
-               !de::contains(context.getDeviceExtensions().begin(), context.getDeviceExtensions().end(), "VK_KHR_sampler_mirror_clamp_to_edge"))
+               !context.isDeviceFunctionalitySupported("VK_KHR_sampler_mirror_clamp_to_edge"))
                TCU_THROW(NotSupportedError, "VK_KHR_sampler_mirror_clamp_to_edge not supported");
 
        // Create textures.
index 8e67dc5..f0f617d 100644 (file)
@@ -1657,7 +1657,7 @@ InterfaceBlockCaseInstance::InterfaceBlockCaseInstance (Context&                                                  ctx,
        const deUint32                                                                                  componentsRequired                      = m_locationsRequired * componentsPerLocation;
        const InstanceInterface&                                                                vki                                                     = m_context.getInstanceInterface();
        const VkPhysicalDevice                                                                  physDevice                                      = m_context.getPhysicalDevice();
-       const VkPhysicalDeviceTransformFeedbackFeaturesEXT&             transformFeedbackFeatures       = m_context.getTransformFeedbackFeatures();
+       const VkPhysicalDeviceTransformFeedbackFeaturesEXT&             transformFeedbackFeatures       = m_context.getTransformFeedbackFeaturesEXT();
        const VkPhysicalDeviceLimits                                                    limits                                          = getPhysicalDeviceProperties(vki, physDevice).limits;
        VkPhysicalDeviceTransformFeedbackPropertiesEXT                  transformFeedbackProperties;
        VkPhysicalDeviceProperties2                                                             deviceProperties2;
index 649733a..8bdcf96 100644 (file)
@@ -390,7 +390,7 @@ TransformFeedbackTestInstance::TransformFeedbackTestInstance (Context& context,
        , m_parameters          (parameters)
        , m_rnd                         (0)
 {
-       const VkPhysicalDeviceTransformFeedbackFeaturesEXT&             transformFeedbackFeatures       = m_context.getTransformFeedbackFeatures();
+       const VkPhysicalDeviceTransformFeedbackFeaturesEXT&             transformFeedbackFeatures       = m_context.getTransformFeedbackFeaturesEXT();
        VkPhysicalDeviceProperties2                                                             deviceProperties2;
 
        if (transformFeedbackFeatures.transformFeedback == DE_FALSE)
@@ -911,7 +911,7 @@ TransformFeedbackMultistreamTestInstance::TransformFeedbackMultistreamTestInstan
        const InstanceInterface&                                                                vki                                                     = m_context.getInstanceInterface();
        const VkPhysicalDevice                                                                  physDevice                                      = m_context.getPhysicalDevice();
        const VkPhysicalDeviceFeatures                                                  features                                        = getPhysicalDeviceFeatures(vki, physDevice);
-       const VkPhysicalDeviceTransformFeedbackFeaturesEXT&             transformFeedbackFeatures       = m_context.getTransformFeedbackFeatures();
+       const VkPhysicalDeviceTransformFeedbackFeaturesEXT&             transformFeedbackFeatures       = m_context.getTransformFeedbackFeaturesEXT();
        const deUint32                                                                                  streamsSupported                        = m_transformFeedbackProperties.maxTransformFeedbackStreams;
        const deUint32                                                                                  streamsRequired                         = m_parameters.streamId + 1;
        const deUint32                                                                                  tfBuffersSupported                      = m_transformFeedbackProperties.maxTransformFeedbackBuffers;
@@ -1045,7 +1045,7 @@ TransformFeedbackStreamsTestInstance::TransformFeedbackStreamsTestInstance (Cont
        const InstanceInterface&                                                                vki                                                     = m_context.getInstanceInterface();
        const VkPhysicalDevice                                                                  physDevice                                      = m_context.getPhysicalDevice();
        const VkPhysicalDeviceFeatures                                                  features                                        = getPhysicalDeviceFeatures(vki, physDevice);
-       const VkPhysicalDeviceTransformFeedbackFeaturesEXT&             transformFeedbackFeatures       = m_context.getTransformFeedbackFeatures();
+       const VkPhysicalDeviceTransformFeedbackFeaturesEXT&             transformFeedbackFeatures       = m_context.getTransformFeedbackFeaturesEXT();
        const deUint32                                                                                  streamsSupported                        = m_transformFeedbackProperties.maxTransformFeedbackStreams;
        const deUint32                                                                                  streamsRequired                         = m_parameters.streamId + 1;
        const bool                                                                                              geomPointSizeRequired           = m_parameters.testType == TEST_TYPE_STREAMS_POINTSIZE;
@@ -1467,7 +1467,7 @@ TransformFeedbackQueryTestInstance::TransformFeedbackQueryTestInstance (Context&
        const InstanceInterface&                                                                vki                                                     = m_context.getInstanceInterface();
        const VkPhysicalDevice                                                                  physDevice                                      = m_context.getPhysicalDevice();
        const VkPhysicalDeviceFeatures                                                  features                                        = getPhysicalDeviceFeatures(vki, physDevice);
-       const VkPhysicalDeviceTransformFeedbackFeaturesEXT&             transformFeedbackFeatures       = m_context.getTransformFeedbackFeatures();
+       const VkPhysicalDeviceTransformFeedbackFeaturesEXT&             transformFeedbackFeatures       = m_context.getTransformFeedbackFeaturesEXT();
        const deUint32                                                                                  streamsSupported                        = m_transformFeedbackProperties.maxTransformFeedbackStreams;
        const deUint32                                                                                  streamsRequired                         = m_parameters.streamId + 1;
 
@@ -1607,7 +1607,7 @@ tcu::TestStatus TransformFeedbackQueryTestInstance::iterate (void)
        endCommandBuffer(vk, *cmdBuffer);
 
        if (m_parameters.testType == TEST_TYPE_QUERY_RESET)
-               vk.resetQueryPoolEXT(device, *queryPool, queryIndex, queryCountersNumber);
+               vk.resetQueryPool(device, *queryPool, queryIndex, queryCountersNumber);
        submitCommandsAndWait(vk, device, queue, *cmdBuffer);
 
        {
@@ -1666,7 +1666,7 @@ tcu::TestStatus TransformFeedbackQueryTestInstance::iterate (void)
                        queryResults->elements32[2] = 1u;       // Availability bit
                }
 
-               vk.resetQueryPoolEXT(device, *queryPool, queryIndex, queryCountersNumber);
+               vk.resetQueryPool(device, *queryPool, queryIndex, queryCountersNumber);
 
                vk::VkResult    res                                             = vk.getQueryPoolResults(device, *queryPool, queryIndex, queryCountersNumber, queryDataAvailSize, queryData.data(), queryDataAvailSize, (vk::VK_QUERY_RESULT_WITH_AVAILABILITY_BIT | queryExtraFlags));
                const deUint64  numPrimitivesWritten    = (m_parameters.query64bits ? queryResults->elements64[0] : queryResults->elements32[0]);
index c9f2a46..32d8d88 100644 (file)
@@ -714,12 +714,12 @@ vk::Move<vk::VkSemaphore> createExportableSemaphore (const vk::DeviceInterface&
 
 vk::Move<vk::VkSemaphore> createExportableSemaphoreType (const vk::DeviceInterface&                                    vkd,
                                                                                                                 vk::VkDevice                                                           device,
-                                                                                                                vk::VkSemaphoreTypeKHR                                         semaphoreType,
+                                                                                                                vk::VkSemaphoreType                                            semaphoreType,
                                                                                                                 vk::VkExternalSemaphoreHandleTypeFlagBits      externalType)
 {
-       const vk::VkSemaphoreTypeCreateInfoKHR          semaphoreTypeCreateInfo =
+       const vk::VkSemaphoreTypeCreateInfo             semaphoreTypeCreateInfo =
        {
-               vk::VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR,
+               vk::VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO,
                DE_NULL,
                semaphoreType,
                0,
index 3dc9be5..14d21f7 100644 (file)
@@ -191,7 +191,7 @@ vk::Move<vk::VkSemaphore>           createExportableSemaphore                       (const vk::DeviceInterfac
 
 vk::Move<vk::VkSemaphore>              createExportableSemaphoreType           (const vk::DeviceInterface&                                     vkd,
                                                                                                                                         vk::VkDevice                                                           device,
-                                                                                                                                        vk::VkSemaphoreTypeKHR                                         semaphoreType,
+                                                                                                                                        vk::VkSemaphoreType                                            semaphoreType,
                                                                                                                                         vk::VkExternalSemaphoreHandleTypeFlagBits      externalType);
 
 int                                                            getSemaphoreFd                                          (const vk::DeviceInterface&                                     vkd,
index f93bb00..5ff16ca 100644 (file)
@@ -583,14 +583,15 @@ void registerOptions (de::cmdline::Parser& parser)
        {
                { "1.0",        VK_MAKE_VERSION(1, 0, 0)        },
                { "1.1",        VK_MAKE_VERSION(1, 1, 0)        },
+               { "1.2",        VK_MAKE_VERSION(1, 2, 0)        },
        };
 
-       DE_STATIC_ASSERT(vk::SPIRV_VERSION_1_4 + 1 == vk::SPIRV_VERSION_LAST);
+       DE_STATIC_ASSERT(vk::SPIRV_VERSION_1_5 + 1 == vk::SPIRV_VERSION_LAST);
 
        parser << Option<opt::DstPath>("d", "dst-path", "Destination path", "out")
                << Option<opt::Cases>("n", "deqp-case", "Case path filter (works as in test binaries)")
                << Option<opt::Validate>("v", "validate-spv", "Validate generated SPIR-V binaries")
-               << Option<opt::VulkanVersion>("t", "target-vulkan-version", "Target Vulkan version", s_vulkanVersion, "1.1")
+               << Option<opt::VulkanVersion>("t", "target-vulkan-version", "Target Vulkan version", s_vulkanVersion, "1.2")
                << Option<opt::ShaderCache>("s", "shadercache", "Enable or disable shader cache", s_enableNames, "enable")
                << Option<opt::ShaderCacheFilename>("r", "shadercache-filename", "Write shader cache to given file", "shadercache.bin")
                << Option<opt::ShaderCacheTruncate>("x", "shadercache-truncate", "Truncate shader cache before running", s_enableNames, "enable")
@@ -653,7 +654,7 @@ int main (int argc, const char* argv[])
 
                if (cmdLine.hasOption<opt::SpirvOptimize>())
                {
-            deqpArgv.push_back("--deqp-optimize-spirv");
+                       deqpArgv.push_back("--deqp-optimize-spirv");
                        if (cmdLine.getOption<opt::SpirvOptimize>())
                                deqpArgv.push_back("enable");
                         else
index bd0e7c6..0daf4bd 100644 (file)
@@ -227,9 +227,13 @@ CustomInstance createCustomInstanceWithExtensions (Context& context, const std::
        const std::vector<vk::VkExtensionProperties>    availableExtensions     = vk::enumerateInstanceExtensionProperties(vkp, DE_NULL);
        vector<string>                                                                  extensionPtrs;
 
+       vector<string> availableExtensionNames;
+       for (const auto& ext : availableExtensions)
+               availableExtensionNames.push_back(ext.extensionName);
+
        for (const auto& ext : extensions)
        {
-               if (!context.isInstanceFunctionalitySupported(ext))
+               if (!vk::isInstanceExtensionSupported(apiVersion, availableExtensionNames, ext))
                        TCU_THROW(NotSupportedError, ext + " is not supported");
 
                if (!vk::isCoreInstanceExtension(apiVersion, ext))
index aa0009c..aeae132 100644 (file)
@@ -32,6 +32,7 @@
 #include "vkPlatform.hpp"
 #include "vkDebugReportUtil.hpp"
 #include "vkDeviceFeatures.hpp"
+#include "vkDeviceProperties.hpp"
 
 #include "tcuCommandLine.hpp"
 #include "tcuTestLog.hpp"
@@ -275,21 +276,28 @@ public:
 
        VkPhysicalDevice                                                                                                getPhysicalDevice                                               (void) const { return m_physicalDevice;                                                                 }
        deUint32                                                                                                                getDeviceVersion                                                (void) const { return m_deviceVersion;                                                                  }
+
+       bool                                                                                                                    isDeviceFeatureInitialized                              (VkStructureType sType) const { return m_deviceFeatures.isDeviceFeatureInitialized(sType);              }
        const VkPhysicalDeviceFeatures&                                                                 getDeviceFeatures                                               (void) const { return m_deviceFeatures.getCoreFeatures2().features;             }
        const VkPhysicalDeviceFeatures2&                                                                getDeviceFeatures2                                              (void) const { return m_deviceFeatures.getCoreFeatures2();                              }
+       const VkPhysicalDeviceVulkan11Features&                                                 getVulkan11Features                                             (void) const { return m_deviceFeatures.getVulkan11Features(); }
+       const VkPhysicalDeviceVulkan12Features&                                                 getVulkan12Features                                             (void) const { return m_deviceFeatures.getVulkan12Features(); }
 
 #include "vkDeviceFeaturesForDefaultDeviceDefs.inl"
 
-       VkDevice                                                                                                                getDevice                                                               (void) const { return *m_device;                                        }
-       const DeviceInterface&                                                                                  getDeviceInterface                                              (void) const { return m_deviceInterface;                        }
-       const VkPhysicalDeviceProperties&                                                               getDeviceProperties                                             (void) const { return m_deviceProperties;                       }
-       const vector<string>&                                                                                   getDeviceExtensions                                             (void) const { return m_deviceExtensions;                       }
+       bool                                                                                                                    isDevicePropertyInitialized                             (VkStructureType sType) const { return m_devicePropertiesFull.isDevicePropertyInitialized(sType);       }
+       const VkPhysicalDeviceProperties&                                                               getDeviceProperties                                             (void) const { return m_deviceProperties;                                                                       }
+       const VkPhysicalDeviceProperties2&                                                              getDeviceProperties2                                    (void) const { return m_devicePropertiesFull.getCoreProperties2();                      }
 
-       deUint32                                                                                                                getUsedApiVersion                                               (void) const { return m_usedApiVersion;                         }
+#include "vkDevicePropertiesForDefaultDeviceDefs.inl"
 
-       deUint32                                                                                                                getUniversalQueueFamilyIndex                    (void) const { return m_universalQueueFamilyIndex;      }
+       VkDevice                                                                                                                getDevice                                                               (void) const { return *m_device;                                                                                        }
+       const DeviceInterface&                                                                                  getDeviceInterface                                              (void) const { return m_deviceInterface;                                                                        }
+       const vector<string>&                                                                                   getDeviceExtensions                                             (void) const { return m_deviceExtensions;                                                                       }
+       deUint32                                                                                                                getUsedApiVersion                                               (void) const { return m_usedApiVersion;                                                                         }
+       deUint32                                                                                                                getUniversalQueueFamilyIndex                    (void) const { return m_universalQueueFamilyIndex;                                                      }
        VkQueue                                                                                                                 getUniversalQueue                                               (void) const;
-       deUint32                                                                                                                getSparseQueueFamilyIndex                               (void) const { return m_sparseQueueFamilyIndex;         }
+       deUint32                                                                                                                getSparseQueueFamilyIndex                               (void) const { return m_sparseQueueFamilyIndex;                                                         }
        VkQueue                                                                                                                 getSparseQueue                                                  (void) const;
 
 private:
@@ -314,10 +322,10 @@ private:
        const deUint32                                          m_universalQueueFamilyIndex;
        const deUint32                                          m_sparseQueueFamilyIndex;
        const VkPhysicalDeviceProperties        m_deviceProperties;
+       const DeviceProperties                          m_devicePropertiesFull;
 
        const Unique<VkDevice>                          m_device;
        const DeviceDriver                                      m_deviceInterface;
-
 };
 
 static deUint32 sanitizeApiVersion(deUint32 v)
@@ -344,6 +352,7 @@ DefaultDevice::DefaultDevice (const PlatformInterface& vkPlatform, const tcu::Co
        , m_universalQueueFamilyIndex           (findQueueFamilyIndexWithCaps(m_instanceInterface, m_physicalDevice, VK_QUEUE_GRAPHICS_BIT|VK_QUEUE_COMPUTE_BIT))
        , m_sparseQueueFamilyIndex                      (m_deviceFeatures.getCoreFeatures2().features.sparseBinding ? findQueueFamilyIndexWithCaps(m_instanceInterface, m_physicalDevice, VK_QUEUE_SPARSE_BINDING_BIT) : 0)
        , m_deviceProperties                            (getPhysicalDeviceProperties(m_instanceInterface, m_physicalDevice))
+       , m_devicePropertiesFull                        (m_instanceInterface, m_usedApiVersion, m_physicalDevice, m_instanceExtensions, m_deviceExtensions)
        , m_device                                                      (createDefaultDevice(vkPlatform, *m_instance, m_instanceInterface, m_physicalDevice, m_usedApiVersion, m_universalQueueFamilyIndex, m_sparseQueueFamilyIndex, m_deviceFeatures.getCoreFeatures2(), m_deviceExtensions, cmdLine))
        , m_deviceInterface                                     (vkPlatform, *m_instance, *m_device)
 {
@@ -400,24 +409,67 @@ Context::~Context (void)
 }
 
 deUint32                                                               Context::getMaximumFrameworkVulkanVersion       (void) const { return m_device->getMaximumFrameworkVulkanVersion();             }
-deUint32                                                               Context::getAvailableInstanceVersion            (void) const { return m_device->getAvailableInstanceVersion();                  }
-const vector<string>&                                  Context::getInstanceExtensions                          (void) const { return m_device->getInstanceExtensions();                                }
-vk::VkInstance                                                 Context::getInstance                                            (void) const { return m_device->getInstance();                                                  }
-const vk::InstanceInterface&                   Context::getInstanceInterface                           (void) const { return m_device->getInstanceInterface();                                 }
-vk::VkPhysicalDevice                                   Context::getPhysicalDevice                                      (void) const { return m_device->getPhysicalDevice();                                    }
-deUint32                                                               Context::getDeviceVersion                                       (void) const { return m_device->getDeviceVersion();                                             }
-const vk::VkPhysicalDeviceFeatures&            Context::getDeviceFeatures                                      (void) const { return m_device->getDeviceFeatures();                                    }
-const vk::VkPhysicalDeviceFeatures2&   Context::getDeviceFeatures2                                     (void) const { return m_device->getDeviceFeatures2();                                   }
+deUint32                                                               Context::getAvailableInstanceVersion            (void) const { return m_device->getAvailableInstanceVersion();  }
+const vector<string>&                                  Context::getInstanceExtensions                          (void) const { return m_device->getInstanceExtensions();                }
+vk::VkInstance                                                 Context::getInstance                                            (void) const { return m_device->getInstance();                                  }
+const vk::InstanceInterface&                   Context::getInstanceInterface                           (void) const { return m_device->getInstanceInterface();                 }
+vk::VkPhysicalDevice                                   Context::getPhysicalDevice                                      (void) const { return m_device->getPhysicalDevice();                    }
+deUint32                                                               Context::getDeviceVersion                                       (void) const { return m_device->getDeviceVersion();                             }
+const vk::VkPhysicalDeviceFeatures&            Context::getDeviceFeatures                                      (void) const { return m_device->getDeviceFeatures();                    }
+const vk::VkPhysicalDeviceFeatures2&   Context::getDeviceFeatures2                                     (void) const { return m_device->getDeviceFeatures2();                   }
 
 bool Context::isDeviceFunctionalitySupported (const std::string& extension) const
 {
        // check if extension was promoted to core
+       deUint32 apiVersion = getUsedApiVersion();
        if (isCoreDeviceExtension(getUsedApiVersion(), extension))
+       {
+               // all folowing checks are for vk12 and can be skipped for previous versions
+               if (apiVersion < VK_MAKE_VERSION(1, 2, 0))
+                       return true;
+
+               // handle promoted functionality that was provided under feature bit
+               const auto& vk11Features = m_device->getVulkan11Features();
+               if (extension == "VK_KHR_multiview")
+                       return !!vk11Features.multiview;
+               if (extension == "VK_KHR_variable_pointers")
+                       return !!vk11Features.variablePointersStorageBuffer;
+               if (extension == "VK_KHR_sampler_ycbcr_conversion")
+                       return !!vk11Features.samplerYcbcrConversion;
+               if (extension == "VK_KHR_shader_draw_parameters")
+                       return !!vk11Features.shaderDrawParameters;
+
+               const auto& vk12Features = m_device->getVulkan12Features();
+               if (extension == "VK_KHR_timeline_semaphore")
+                       return !!vk12Features.timelineSemaphore;
+               if (extension == "VK_KHR_buffer_device_address")
+                       return !!vk12Features.bufferDeviceAddress;
+               if (extension == "VK_EXT_descriptor_indexing")
+                       return !!vk12Features.descriptorIndexing;
+               if (extension == "VK_KHR_draw_indirect_count")
+                       return !!vk12Features.drawIndirectCount;
+               if (extension == "VK_KHR_sampler_mirror_clamp_to_edge")
+                       return !!vk12Features.samplerMirrorClampToEdge;
+               if (extension == "VK_EXT_sampler_filter_minmax")
+                       return !!vk12Features.samplerFilterMinmax;
+               if (extension == "VK_EXT_shader_viewport_index_layer")
+                       return !!vk12Features.shaderOutputViewportIndex && !!vk12Features.shaderOutputLayer;
+
+               // no feature flags to check
                return true;
+       }
 
        // check if extension is on the lits of extensions for current device
        const auto& extensions = getDeviceExtensions();
-       return de::contains(extensions.begin(), extensions.end(), extension);
+       if (de::contains(extensions.begin(), extensions.end(), extension))
+       {
+               if (extension == "VK_KHR_timeline_semaphore")
+                       return !!getTimelineSemaphoreFeatures().timelineSemaphore;
+
+               return true;
+       }
+
+       return false;
 }
 
 bool Context::isInstanceFunctionalitySupported(const std::string& extension) const
@@ -430,24 +482,32 @@ bool Context::isInstanceFunctionalitySupported(const std::string& extension) con
 
 #include "vkDeviceFeaturesForContextDefs.inl"
 
-const vk::VkPhysicalDeviceProperties&  Context::getDeviceProperties                            (void) const { return m_device->getDeviceProperties();                                  }
-const vector<string>&                                  Context::getDeviceExtensions                            (void) const { return m_device->getDeviceExtensions();                                  }
-vk::VkDevice                                                   Context::getDevice                                                      (void) const { return m_device->getDevice();                                                    }
-const vk::DeviceInterface&                             Context::getDeviceInterface                                     (void) const { return m_device->getDeviceInterface();                                   }
-deUint32                                                               Context::getUniversalQueueFamilyIndex           (void) const { return m_device->getUniversalQueueFamilyIndex();                 }
-vk::VkQueue                                                            Context::getUniversalQueue                                      (void) const { return m_device->getUniversalQueue();                                    }
-deUint32                                                               Context::getSparseQueueFamilyIndex                      (void) const { return m_device->getSparseQueueFamilyIndex();                    }
-vk::VkQueue                                                            Context::getSparseQueue                                         (void) const { return m_device->getSparseQueue();                                               }
-vk::Allocator&                                                 Context::getDefaultAllocator                            (void) const { return *m_allocator;                                                                             }
-deUint32                                                               Context::getUsedApiVersion                                      (void) const { return m_device->getUsedApiVersion();                                    }
+const vk::VkPhysicalDeviceProperties&  Context::getDeviceProperties                            (void) const { return m_device->getDeviceProperties();                  }
+const vk::VkPhysicalDeviceProperties2& Context::getDeviceProperties2                           (void) const { return m_device->getDeviceProperties2();                 }
+
+#include "vkDevicePropertiesForContextDefs.inl"
+
+const vector<string>&                                  Context::getDeviceExtensions                            (void) const { return m_device->getDeviceExtensions();                  }
+vk::VkDevice                                                   Context::getDevice                                                      (void) const { return m_device->getDevice();                                    }
+const vk::DeviceInterface&                             Context::getDeviceInterface                                     (void) const { return m_device->getDeviceInterface();                   }
+deUint32                                                               Context::getUniversalQueueFamilyIndex           (void) const { return m_device->getUniversalQueueFamilyIndex(); }
+vk::VkQueue                                                            Context::getUniversalQueue                                      (void) const { return m_device->getUniversalQueue();                    }
+deUint32                                                               Context::getSparseQueueFamilyIndex                      (void) const { return m_device->getSparseQueueFamilyIndex();    }
+vk::VkQueue                                                            Context::getSparseQueue                                         (void) const { return m_device->getSparseQueue();                               }
+vk::Allocator&                                                 Context::getDefaultAllocator                            (void) const { return *m_allocator;                                                             }
+deUint32                                                               Context::getUsedApiVersion                                      (void) const { return m_device->getUsedApiVersion();                    }
 bool                                                                   Context::contextSupports                                        (const deUint32 majorNum, const deUint32 minorNum, const deUint32 patchNum) const
-                                                                                                                                                                                               { return m_device->getUsedApiVersion() >= VK_MAKE_VERSION(majorNum, minorNum, patchNum); }
+                                                                                                                                                                                       { return m_device->getUsedApiVersion() >= VK_MAKE_VERSION(majorNum, minorNum, patchNum); }
 bool                                                                   Context::contextSupports                                        (const ApiVersion version) const
-                                                                                                                                                                                               { return m_device->getUsedApiVersion() >= pack(version); }
+                                                                                                                                                                                       { return m_device->getUsedApiVersion() >= pack(version); }
 bool                                                                   Context::contextSupports                                        (const deUint32 requiredApiVersionBits) const
-                                                                                                                                                                                               { return m_device->getUsedApiVersion() >= requiredApiVersionBits; }
+                                                                                                                                                                                       { return m_device->getUsedApiVersion() >= requiredApiVersionBits; }
+bool                                                                   Context::isDeviceFeatureInitialized                     (vk::VkStructureType sType) const
+                                                                                                                                                                                       { return m_device->isDeviceFeatureInitialized(sType);   }
+bool                                                                   Context::isDevicePropertyInitialized            (vk::VkStructureType sType) const
+                                                                                                                                                                                       { return m_device->isDevicePropertyInitialized(sType);  }
 
-bool Context::requireDeviceFunctionality (const std::string& required)
+bool Context::requireDeviceFunctionality (const std::string& required) const
 {
        if (!isDeviceFunctionalitySupported(required))
                TCU_THROW(NotSupportedError, required + " is not supported");
@@ -455,7 +515,7 @@ bool Context::requireDeviceFunctionality (const std::string& required)
        return true;
 }
 
-bool Context::requireInstanceFunctionality (const std::string& required)
+bool Context::requireInstanceFunctionality (const std::string& required) const
 {
        if (!isInstanceFunctionalitySupported(required))
                TCU_THROW(NotSupportedError, required + " is not supported");
@@ -552,6 +612,12 @@ void* Context::getInstanceProcAddr ()
        return (void*)m_platformInterface.getGetInstanceProcAddr();
 }
 
+bool Context::isBufferDeviceAddressSupported(void) const
+{
+       return isDeviceFunctionalitySupported("VK_KHR_buffer_device_address") ||
+                  isDeviceFunctionalitySupported("VK_EXT_buffer_device_address");
+}
+
 // TestCase
 
 void TestCase::initPrograms (SourceCollections&) const
index b6635ad..7553b2a 100644 (file)
@@ -72,6 +72,7 @@ public:
        const vk::InstanceInterface&                            getInstanceInterface                            (void) const;
        vk::VkPhysicalDevice                                            getPhysicalDevice                                       (void) const;
        deUint32                                                                        getDeviceVersion                                        (void) const;
+       bool                                                                            isDeviceFeatureInitialized                      (vk::VkStructureType sType) const;
        const vk::VkPhysicalDeviceFeatures&                     getDeviceFeatures                                       (void) const;
        const vk::VkPhysicalDeviceFeatures2&            getDeviceFeatures2                                      (void) const;
 
@@ -80,7 +81,12 @@ public:
 
 #include "vkDeviceFeaturesForContextDecl.inl"
 
+       bool                                                                            isDevicePropertyInitialized                     (vk::VkStructureType sType) const;
        const vk::VkPhysicalDeviceProperties&           getDeviceProperties                                     (void) const;
+       const vk::VkPhysicalDeviceProperties2&          getDeviceProperties2                            (void) const;
+
+#include "vkDevicePropertiesForContextDecl.inl"
+
        const std::vector<std::string>&                         getDeviceExtensions                                     (void) const;
        vk::VkDevice                                                            getDevice                                                       (void) const;
        const vk::DeviceInterface&                                      getDeviceInterface                                      (void) const;
@@ -93,12 +99,14 @@ public:
        bool                                                                            contextSupports                                         (const deUint32 majorNum, const deUint32 minorNum, const deUint32 patchNum) const;
        bool                                                                            contextSupports                                         (const vk::ApiVersion version) const;
        bool                                                                            contextSupports                                         (const deUint32 requiredApiVersionBits) const;
-       bool                                                                            requireDeviceFunctionality                      (const std::string& required);
-       bool                                                                            requireInstanceFunctionality            (const std::string& required);
+       bool                                                                            requireDeviceFunctionality                      (const std::string& required) const;
+       bool                                                                            requireInstanceFunctionality            (const std::string& required) const;
        bool                                                                            requireDeviceCoreFeature                        (const DeviceCoreFeature requiredDeviceCoreFeature);
 
        void*                                                                           getInstanceProcAddr                                     ();
 
+       bool                                                                            isBufferDeviceAddressSupported                                          (void) const;
+
        bool                                                                            resultSetOnValidation                   () const                { return m_resultSetOnValidation;       }
        void                                                                            resultSetOnValidation                   (bool value)    { m_resultSetOnValidation = value;      }
 
index 78e074b..f89cd3c 100644 (file)
@@ -90,6 +90,7 @@
 #include "vktMemoryModelTests.hpp"
 #include "vktAmberExampleTests.hpp"
 #include "vktAmberGraphicsFuzzTests.hpp"
+#include "vktImagelessFramebufferTests.hpp"
 #include "vktTransformFeedbackTests.hpp"
 #include "vktDescriptorIndexingTests.hpp"
 #include "vktImagelessFramebufferTests.hpp"
@@ -494,9 +495,9 @@ void TestPackage::init (void)
        addChild(conditional::createTests                       (m_testCtx));
        addChild(cts_amber::createExampleTests          (m_testCtx));
        addChild(cts_amber::createGraphicsFuzzTests     (m_testCtx));
+       addChild(imageless::createTests                         (m_testCtx));
        addChild(TransformFeedback::createTests         (m_testCtx));
        addChild(DescriptorIndexing::createTests        (m_testCtx));
-       addChild(imageless::createTests                         (m_testCtx));
        addChild(FragmentShaderInterlock::createTests(m_testCtx));
 }
 
index aec9154..54889e3 100644 (file)
@@ -1010,7 +1010,7 @@ void IncrementalPresentTestInstance::render (void)
                        (deUint32)rects.size(),
                        rects.empty() ? DE_NULL : &rects[0]
                };
-               const vk::VkPresentRegionsKHR   regionInfo      =
+               const vk::VkPresentRegionsKHR regionInfo =
                {
                        vk::VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR,
                        DE_NULL,
index 9ac04b9..45707f3 100644 (file)
@@ -182,16 +182,13 @@ CustomInstance createInstanceWithWsi (Context&                                            context,
        extensions.push_back(getExtensionName(wsiType));
 
        vector<string>  instanceExtensions;
-
-       for (vector<string>::const_iterator extensionName = extensions.begin();
-                extensionName != extensions.end();
-                ++extensionName)
+       for (const auto& ext : extensions)
        {
-               if (!context.isInstanceFunctionalitySupported(*extensionName))
-                       TCU_THROW(NotSupportedError, (*extensionName + " is not supported").c_str());
+               if (!context.isInstanceFunctionalitySupported(ext))
+                       TCU_THROW(NotSupportedError, (ext + " is not supported").c_str());
 
-               if (!isCoreInstanceExtension(version, *extensionName))
-                       instanceExtensions.push_back(*extensionName);
+               if (!isCoreInstanceExtension(version, ext))
+                       instanceExtensions.push_back(ext);
        }
 
        return vkt::createCustomInstanceWithExtensions(context, instanceExtensions, pAllocator);
index d359d79..0da5f69 100644 (file)
@@ -203,10 +203,7 @@ void checkImageSupport (Context& context, VkFormat format, VkImageCreateFlags cr
        }
 
        for (const string& ext : reqExts)
-       {
-               if (!context.isDeviceFunctionalitySupported(ext))
-                       TCU_THROW(NotSupportedError, (ext + " is not supported").c_str());
-       }
+               context.requireDeviceFunctionality(ext);
 
        if (features.samplerYcbcrConversion == VK_FALSE)
        {
index 5cd2cd6..a1e1210 100644 (file)
@@ -1427,6 +1427,29 @@ dEQP-VK.api.info.get_physical_device_properties2.properties
 dEQP-VK.api.info.get_physical_device_properties2.format_properties
 dEQP-VK.api.info.get_physical_device_properties2.queue_family_properties
 dEQP-VK.api.info.get_physical_device_properties2.memory_properties
+dEQP-VK.api.info.vulkan1p2.features
+dEQP-VK.api.info.vulkan1p2.properties
+dEQP-VK.api.info.vulkan1p2.feature_extensions_consistency
+dEQP-VK.api.info.vulkan1p2.property_extensions_consistency
+dEQP-VK.api.info.vulkan1p2.feature_bits_influence
+dEQP-VK.api.info.vulkan1p2_limits_validation.general
+dEQP-VK.api.info.vulkan1p2_limits_validation.khr_push_descriptor
+dEQP-VK.api.info.vulkan1p2_limits_validation.khr_multiview
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_discard_rectangles
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_sample_locations
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_external_memory_host
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_blend_operation_advanced
+dEQP-VK.api.info.vulkan1p2_limits_validation.khr_maintenance_3
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_conservative_rasterization
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_descriptor_indexing
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_inline_uniform_block
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_vertex_attribute_divisor
+dEQP-VK.api.info.vulkan1p2_limits_validation.nv_mesh_shader
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_transform_feedback
+dEQP-VK.api.info.vulkan1p2_limits_validation.fragment_density_map
+dEQP-VK.api.info.vulkan1p2_limits_validation.nv_ray_tracing
+dEQP-VK.api.info.vulkan1p2_limits_validation.timeline_semaphore
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_line_rasterization
 dEQP-VK.api.info.image_format_properties2.1d.optimal.r4g4_unorm_pack8
 dEQP-VK.api.info.image_format_properties2.1d.optimal.r4g4b4a4_unorm_pack16
 dEQP-VK.api.info.image_format_properties2.1d.optimal.b4g4r4a4_unorm_pack16
@@ -296784,6 +296807,24 @@ dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convert.store.mu
 dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convert.store.replay.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convert.store.replay.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.store.replay.std140.vert
 dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.load.nostore.single.std140.vert
@@ -296820,6 +296861,24 @@ dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convert.store.m
 dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convert.store.replay.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convert.store.replay.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.store.replay.std140.vert
 dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.load.nostore.single.std140.vert
@@ -296856,6 +296915,24 @@ dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convert.store.mu
 dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convert.store.replay.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convert.store.replay.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.store.replay.std140.vert
 dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.load.nostore.single.std140.vert
@@ -296892,6 +296969,24 @@ dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convert.store.m
 dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convert.store.replay.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convert.store.replay.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.store.replay.std140.vert
 dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.load.nostore.single.std140.vert
@@ -296964,6 +297059,42 @@ dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convert.store.re
 dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convert.store.replay.scalar.comp
 dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convert.store.replay.scalar.frag
 dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convert.store.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.replay.scalar.vert
 dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.load.nostore.single.std140.vert
@@ -297036,6 +297167,42 @@ dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convert.store.r
 dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convert.store.replay.scalar.comp
 dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convert.store.replay.scalar.frag
 dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convert.store.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.replay.scalar.vert
 dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.load.nostore.single.std140.vert
@@ -297108,6 +297275,42 @@ dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convert.store.re
 dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convert.store.replay.scalar.comp
 dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convert.store.replay.scalar.frag
 dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convert.store.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.replay.scalar.vert
 dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.load.nostore.single.std140.vert
@@ -297180,6 +297383,42 @@ dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convert.store.r
 dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convert.store.replay.scalar.comp
 dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convert.store.replay.scalar.frag
 dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convert.store.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.replay.scalar.vert
 dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.load.nostore.single.std140.vert
@@ -297252,6 +297491,42 @@ dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convert.store.re
 dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convert.store.replay.scalar.comp
 dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convert.store.replay.scalar.frag
 dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convert.store.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.replay.scalar.vert
 dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.load.nostore.single.std140.vert
@@ -297324,6 +297599,42 @@ dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convert.store.r
 dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convert.store.replay.scalar.comp
 dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convert.store.replay.scalar.frag
 dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convert.store.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.replay.scalar.vert
 dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.load.nostore.single.std140.vert
@@ -297360,6 +297671,24 @@ dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convert.store.mu
 dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convert.store.replay.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convert.store.replay.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.store.replay.std140.vert
 dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.load.nostore.single.std140.vert
@@ -297396,6 +297725,24 @@ dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convert.store.m
 dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convert.store.replay.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convert.store.replay.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.store.replay.std140.vert
 dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.load.nostore.single.std140.vert
@@ -297432,6 +297779,24 @@ dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convert.store.mu
 dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convert.store.replay.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convert.store.replay.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.store.replay.std140.vert
 dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.load.nostore.single.std140.vert
@@ -297468,6 +297833,24 @@ dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convert.store.m
 dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convert.store.replay.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convert.store.replay.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.store.replay.std140.vert
 dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.load.nostore.single.std140.vert
@@ -297504,6 +297887,24 @@ dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convert.store.m
 dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convert.store.replay.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convert.store.replay.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.store.replay.std140.vert
 dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.load.nostore.single.std140.vert
@@ -297540,6 +297941,24 @@ dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convert.store.
 dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convert.store.replay.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convert.store.replay.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.store.replay.std140.vert
 dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.load.nostore.single.std140.vert
@@ -297576,6 +297995,24 @@ dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convert.store.m
 dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convert.store.replay.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convert.store.replay.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.store.replay.std140.vert
 dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.load.nostore.single.std140.vert
@@ -297612,6 +298049,24 @@ dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convert.store.
 dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convert.store.replay.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convert.store.replay.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.store.replay.std140.vert
 dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.load.nostore.single.std140.vert
@@ -297648,6 +298103,24 @@ dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convert.store.m
 dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convert.store.replay.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convert.store.replay.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.store.replay.std140.vert
 dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.load.nostore.single.std140.vert
@@ -297684,6 +298157,24 @@ dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convert.store.
 dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convert.store.replay.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convert.store.replay.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.store.replay.std140.vert
 dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.load.nostore.single.std140.vert
@@ -297720,6 +298211,24 @@ dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convert.store.m
 dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convert.store.replay.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convert.store.replay.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.store.replay.std140.vert
 dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.load.nostore.single.std140.vert
@@ -297756,11 +298265,30 @@ dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convert.store.
 dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convert.store.replay.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convert.store.replay.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.store.replay.std140.vert
 dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_0_compute
 dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_1_compute
 dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_2_compute
 dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_3_compute
 dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_4_compute
+dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_5_compute
 dEQP-VK.spirv_assembly.instruction.compute.localsize.literal_localsize
 dEQP-VK.spirv_assembly.instruction.compute.localsize.literal_and_specid_localsize
 dEQP-VK.spirv_assembly.instruction.compute.localsize.specid_localsize
@@ -298297,6 +298825,36 @@ dEQP-VK.spirv_assembly.instruction.compute.shader_default_output.float.uninitial
 dEQP-VK.spirv_assembly.instruction.compute.opnmin.all
 dEQP-VK.spirv_assembly.instruction.compute.opnmax.all
 dEQP-VK.spirv_assembly.instruction.compute.opnclamp.all
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp16_denorm_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp16_denorm_flush_to_zero
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp16_signed_zero_inf_nan_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp16_rounding_mode_rte
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp16_rounding_mode_rtz
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp32_denorm_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp32_denorm_flush_to_zero
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp32_signed_zero_inf_nan_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp32_rounding_mode_rte
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp32_rounding_mode_rtz
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp64_denorm_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp64_denorm_flush_to_zero
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp64_signed_zero_inf_nan_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp64_rounding_mode_rte
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp64_rounding_mode_rtz
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp16_denorm_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp16_denorm_flush_to_zero
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp16_signed_zero_inf_nan_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp16_rounding_mode_rte
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp16_rounding_mode_rtz
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp32_denorm_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp32_denorm_flush_to_zero
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp32_signed_zero_inf_nan_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp32_rounding_mode_rte
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp32_rounding_mode_rtz
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp64_denorm_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp64_denorm_flush_to_zero
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp64_signed_zero_inf_nan_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp64_rounding_mode_rte
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp64_rounding_mode_rtz
 dEQP-VK.spirv_assembly.instruction.compute.8bit_storage.storagebuffer_32_to_8.storage_buffer_scalar_sint
 dEQP-VK.spirv_assembly.instruction.compute.8bit_storage.storagebuffer_32_to_8.storage_buffer_scalar_uint
 dEQP-VK.spirv_assembly.instruction.compute.8bit_storage.storagebuffer_32_to_8.storage_buffer_vector_sint
@@ -301897,6 +302455,11 @@ dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_4_tesselation_evalua
 dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_4_tesselation_control
 dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_4_geometry
 dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_4_fragment
+dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_5_vertex
+dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_5_tesselation_evaluation
+dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_5_tesselation_control
+dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_5_geometry
+dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_5_fragment
 dEQP-VK.spirv_assembly.instruction.graphics.opnop.opnop_vert
 dEQP-VK.spirv_assembly.instruction.graphics.opnop.opnop_tessc
 dEQP-VK.spirv_assembly.instruction.graphics.opnop.opnop_tesse
@@ -491150,201 +491713,301 @@ dEQP-VK.subgroups.ballot.ext_shader_subgroup_ballot.framebuffer.tess_control
 dEQP-VK.subgroups.ballot.ext_shader_subgroup_ballot.framebuffer.geometry
 dEQP-VK.subgroups.ballot.ext_shader_subgroup_ballot.framebuffer.vertex
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_int8_t
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_int8_t
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_int8_t
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_i8vec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_i8vec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_i8vec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_i8vec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_i8vec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_i8vec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_i8vec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_i8vec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_i8vec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uint8_t
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_uint8_t
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uint8_t
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_u8vec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_u8vec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_u8vec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_u8vec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_u8vec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_u8vec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_u8vec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_u8vec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_u8vec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_int16_t
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_int16_t
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_int16_t
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_i16vec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_i16vec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_i16vec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_i16vec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_i16vec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_i16vec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_i16vec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_i16vec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_i16vec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uint16_t
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_uint16_t
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uint16_t
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_u16vec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_u16vec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_u16vec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_u16vec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_u16vec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_u16vec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_u16vec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_u16vec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_u16vec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_int
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_int
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_int
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_ivec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_ivec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_ivec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_ivec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_ivec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_ivec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_ivec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_ivec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_ivec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uint
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_uint
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uint
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uvec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_uvec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uvec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uvec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_uvec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uvec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uvec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_uvec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uvec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_int64_t
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_int64_t
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_int64_t
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_i64vec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_i64vec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_i64vec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_i64vec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_i64vec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_i64vec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_i64vec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_i64vec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_i64vec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uint64_t
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_uint64_t
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uint64_t
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_u64vec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_u64vec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_u64vec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_u64vec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_u64vec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_u64vec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_u64vec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_u64vec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_u64vec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_float16_t
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_float16_t
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_float16_t
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_f16vec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_f16vec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_f16vec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_f16vec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_f16vec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_f16vec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_f16vec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_f16vec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_f16vec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_float
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_float
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_float
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_vec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_vec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_vec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_vec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_vec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_vec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_vec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_vec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_vec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_double
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_double
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_double
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_dvec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_dvec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_dvec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_dvec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_dvec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_dvec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_dvec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_dvec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_dvec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_bool
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_bool
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_bool
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_bvec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_bvec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_bvec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_bvec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_bvec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_bvec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_bvec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_bvec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_bvec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_int8_t
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_int8_t
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_int8_t
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_i8vec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_i8vec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_i8vec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_i8vec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_i8vec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_i8vec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_i8vec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_i8vec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_i8vec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_uint8_t
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_uint8_t
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uint8_t
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_u8vec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_u8vec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_u8vec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_u8vec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_u8vec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_u8vec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_u8vec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_u8vec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_u8vec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_int16_t
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_int16_t
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_int16_t
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_i16vec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_i16vec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_i16vec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_i16vec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_i16vec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_i16vec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_i16vec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_i16vec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_i16vec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_uint16_t
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_uint16_t
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uint16_t
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_u16vec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_u16vec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_u16vec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_u16vec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_u16vec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_u16vec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_u16vec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_u16vec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_u16vec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_int
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_int
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_int
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_ivec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_ivec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_ivec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_ivec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_ivec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_ivec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_ivec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_ivec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_ivec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_uint
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_uint
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uint
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_uvec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_uvec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uvec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_uvec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_uvec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uvec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_uvec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_uvec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uvec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_int64_t
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_int64_t
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_int64_t
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_i64vec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_i64vec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_i64vec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_i64vec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_i64vec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_i64vec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_i64vec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_i64vec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_i64vec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_uint64_t
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_uint64_t
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uint64_t
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_u64vec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_u64vec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_u64vec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_u64vec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_u64vec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_u64vec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_u64vec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_u64vec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_u64vec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_float16_t
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_float16_t
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_float16_t
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_f16vec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_f16vec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_f16vec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_f16vec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_f16vec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_f16vec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_f16vec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_f16vec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_f16vec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_float
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_float
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_float
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_vec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_vec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_vec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_vec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_vec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_vec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_vec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_vec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_vec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_double
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_double
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_double
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_dvec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_dvec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_dvec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_dvec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_dvec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_dvec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_dvec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_dvec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_dvec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_bool
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_bool
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_bool
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_bvec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_bvec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_bvec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_bvec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_bvec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_bvec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_bvec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_bvec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_bvec4
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int8_tvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int8_ttess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int8_ttess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int8_tgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int8_tvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int8_ttess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int8_ttess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int8_tgeometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_int8_tvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_int8_ttess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_int8_ttess_control
@@ -491353,6 +492016,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec2tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec2geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i8vec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i8vec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i8vec2tess_control
@@ -491361,6 +492028,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec3tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec3geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i8vec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i8vec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i8vec3tess_control
@@ -491369,6 +492040,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec4tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec4geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i8vec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i8vec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i8vec4tess_control
@@ -491377,6 +492052,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint8_tvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint8_ttess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint8_ttess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint8_tgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint8_tvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint8_ttess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint8_ttess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint8_tgeometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uint8_tvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uint8_ttess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uint8_ttess_control
@@ -491385,6 +492064,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec2tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec2geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u8vec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u8vec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u8vec2tess_control
@@ -491393,6 +492076,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec3tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec3geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u8vec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u8vec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u8vec3tess_control
@@ -491401,6 +492088,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec4tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec4geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u8vec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u8vec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u8vec4tess_control
@@ -491409,6 +492100,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int16_tvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int16_ttess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int16_ttess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int16_tgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int16_tvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int16_ttess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int16_ttess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int16_tgeometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_int16_tvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_int16_ttess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_int16_ttess_control
@@ -491417,6 +492112,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec2tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec2geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i16vec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i16vec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i16vec2tess_control
@@ -491425,6 +492124,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec3tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec3geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i16vec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i16vec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i16vec3tess_control
@@ -491433,6 +492136,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec4tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec4geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i16vec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i16vec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i16vec4tess_control
@@ -491441,6 +492148,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint16_tvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint16_ttess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint16_ttess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint16_tgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint16_tvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint16_ttess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint16_ttess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint16_tgeometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uint16_tvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uint16_ttess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uint16_ttess_control
@@ -491449,6 +492160,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec2tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec2geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u16vec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u16vec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u16vec2tess_control
@@ -491457,6 +492172,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec3tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec3geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u16vec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u16vec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u16vec3tess_control
@@ -491465,6 +492184,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec4tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec4geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u16vec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u16vec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u16vec4tess_control
@@ -491473,6 +492196,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_intvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_inttess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_inttess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_intgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_intvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_inttess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_inttess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_intgeometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_intvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_inttess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_inttess_control
@@ -491481,6 +492208,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec2tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec2geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec2tess_control
@@ -491489,6 +492220,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec3tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec3geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec3tess_control
@@ -491497,6 +492232,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec4tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec4geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec4tess_control
@@ -491505,6 +492244,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uintvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uinttess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uinttess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uintgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uintvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uinttess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uinttess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uintgeometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uintvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uinttess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uinttess_control
@@ -491513,6 +492256,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec2tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec2geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec2tess_control
@@ -491521,6 +492268,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec3tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec3geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec3tess_control
@@ -491529,6 +492280,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec4tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec4geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec4tess_control
@@ -491537,6 +492292,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int64_tvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int64_ttess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int64_ttess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int64_tgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int64_tvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int64_ttess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int64_ttess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int64_tgeometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_int64_tvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_int64_ttess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_int64_ttess_control
@@ -491545,6 +492304,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec2tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec2geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i64vec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i64vec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i64vec2tess_control
@@ -491553,6 +492316,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec3tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec3geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i64vec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i64vec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i64vec3tess_control
@@ -491561,6 +492328,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec4tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec4geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i64vec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i64vec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i64vec4tess_control
@@ -491569,6 +492340,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint64_tvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint64_ttess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint64_ttess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint64_tgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint64_tvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint64_ttess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint64_ttess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint64_tgeometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uint64_tvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uint64_ttess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uint64_ttess_control
@@ -491577,6 +492352,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec2tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec2geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u64vec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u64vec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u64vec2tess_control
@@ -491585,6 +492364,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec3tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec3geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u64vec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u64vec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u64vec3tess_control
@@ -491593,6 +492376,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec4tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec4geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u64vec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u64vec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u64vec4tess_control
@@ -491601,6 +492388,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_float16_tvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_float16_ttess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_float16_ttess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_float16_tgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_float16_tvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_float16_ttess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_float16_ttess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_float16_tgeometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_float16_tvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_float16_ttess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_float16_ttess_control
@@ -491609,6 +492400,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec2tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec2geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_f16vec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_f16vec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_f16vec2tess_control
@@ -491617,6 +492412,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec3tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec3geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_f16vec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_f16vec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_f16vec3tess_control
@@ -491625,6 +492424,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec4tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec4geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_f16vec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_f16vec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_f16vec4tess_control
@@ -491633,6 +492436,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_floatvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_floattess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_floattess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_floatgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_floatvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_floattess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_floattess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_floatgeometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_floatvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_floattess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_floattess_control
@@ -491641,6 +492448,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec2tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec2geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec2tess_control
@@ -491649,6 +492460,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec3tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec3geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec3tess_control
@@ -491657,6 +492472,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec4tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec4geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec4tess_control
@@ -491665,6 +492484,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_doublevertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_doubletess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_doubletess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_doublegeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_doublevertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_doubletess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_doubletess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_doublegeometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_doublevertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_doubletess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_doubletess_control
@@ -491673,6 +492496,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec2tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec2geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec2tess_control
@@ -491681,6 +492508,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec3tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec3geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec3tess_control
@@ -491689,6 +492520,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec4tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec4geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec4tess_control
@@ -491697,6 +492532,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_boolvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_booltess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_booltess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_boolgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_boolvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_booltess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_booltess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_boolgeometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_boolvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_booltess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_booltess_control
@@ -491705,6 +492544,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec2tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec2geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec2tess_control
@@ -491713,6 +492556,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec3tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec3geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec3tess_control
@@ -491721,26 +492568,40 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec4tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec4geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec4tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec4geometry
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.graphics.subgroupbroadcast_int
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.graphics.subgroupbroadcast_nonconst_int
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.graphics.subgroupbroadcastfirst_int
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.graphics.subgroupbroadcast_uint
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.graphics.subgroupbroadcast_nonconst_uint
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.graphics.subgroupbroadcastfirst_uint
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.graphics.subgroupbroadcast_float
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.graphics.subgroupbroadcast_nonconst_float
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.graphics.subgroupbroadcastfirst_float
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.compute.subgroupbroadcast_int
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.compute.subgroupbroadcast_nonconst_int
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.compute.subgroupbroadcastfirst_int
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.compute.subgroupbroadcast_uint
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.compute.subgroupbroadcast_nonconst_uint
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.compute.subgroupbroadcastfirst_uint
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.compute.subgroupbroadcast_float
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.compute.subgroupbroadcast_nonconst_float
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.compute.subgroupbroadcastfirst_float
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_intvertex
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_inttess_eval
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_inttess_control
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_intgeometry
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_intvertex
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_inttess_eval
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_inttess_control
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_intgeometry
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcastfirst_intvertex
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcastfirst_inttess_eval
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcastfirst_inttess_control
@@ -491749,6 +492610,10 @@ dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgro
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_uinttess_eval
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_uinttess_control
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_uintgeometry
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_uintvertex
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_uinttess_eval
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_uinttess_control
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_uintgeometry
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcastfirst_uintvertex
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcastfirst_uinttess_eval
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcastfirst_uinttess_control
@@ -491757,6 +492622,10 @@ dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgro
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_floattess_eval
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_floattess_control
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_floatgeometry
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_floatvertex
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_floattess_eval
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_floattess_control
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_floatgeometry
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcastfirst_floatvertex
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcastfirst_floattess_eval
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcastfirst_floattess_control
@@ -552986,6 +553855,11 @@ dEQP-VK.graphicsfuzz.while-inside-switch
 dEQP-VK.graphicsfuzz.write-before-break
 dEQP-VK.graphicsfuzz.write-red-in-loop-nest
 dEQP-VK.graphicsfuzz.wrong-color-in-always-false-if
+dEQP-VK.imageless_framebuffer.color
+dEQP-VK.imageless_framebuffer.depth_stencil
+dEQP-VK.imageless_framebuffer.color_resolve
+dEQP-VK.imageless_framebuffer.depth_stencil_resolve
+dEQP-VK.imageless_framebuffer.multisubpass
 dEQP-VK.transform_feedback.simple.basic_1_256
 dEQP-VK.transform_feedback.simple.basic_beginqueryindexed_streamid_0_1_256
 dEQP-VK.transform_feedback.simple.basic_endqueryindexed_streamid_0_1_256
@@ -555638,11 +556512,6 @@ dEQP-VK.descriptor_indexing.uniform_buffer_in_loop
 dEQP-VK.descriptor_indexing.storage_buffer_dynamic_in_loop
 dEQP-VK.descriptor_indexing.uniform_buffer_dynamic_in_loop
 dEQP-VK.descriptor_indexing.input_attachment_in_loop
-dEQP-VK.imageless_framebuffer.color
-dEQP-VK.imageless_framebuffer.depth_stencil
-dEQP-VK.imageless_framebuffer.color_resolve
-dEQP-VK.imageless_framebuffer.depth_stencil_resolve
-dEQP-VK.imageless_framebuffer.multisubpass
 dEQP-VK.fragment_shader_interlock.basic.nodiscard.image.pixel_ordered.1xaa.no_sample_shading.8x8
 dEQP-VK.fragment_shader_interlock.basic.nodiscard.image.pixel_ordered.1xaa.no_sample_shading.16x16
 dEQP-VK.fragment_shader_interlock.basic.nodiscard.image.pixel_ordered.1xaa.no_sample_shading.32x32
index 3ef69ef..8bc170a 100644 (file)
@@ -1427,6 +1427,29 @@ dEQP-VK.api.info.get_physical_device_properties2.properties
 dEQP-VK.api.info.get_physical_device_properties2.format_properties
 dEQP-VK.api.info.get_physical_device_properties2.queue_family_properties
 dEQP-VK.api.info.get_physical_device_properties2.memory_properties
+dEQP-VK.api.info.vulkan1p2.features
+dEQP-VK.api.info.vulkan1p2.properties
+dEQP-VK.api.info.vulkan1p2.feature_extensions_consistency
+dEQP-VK.api.info.vulkan1p2.property_extensions_consistency
+dEQP-VK.api.info.vulkan1p2.feature_bits_influence
+dEQP-VK.api.info.vulkan1p2_limits_validation.general
+dEQP-VK.api.info.vulkan1p2_limits_validation.khr_push_descriptor
+dEQP-VK.api.info.vulkan1p2_limits_validation.khr_multiview
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_discard_rectangles
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_sample_locations
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_external_memory_host
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_blend_operation_advanced
+dEQP-VK.api.info.vulkan1p2_limits_validation.khr_maintenance_3
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_conservative_rasterization
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_descriptor_indexing
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_inline_uniform_block
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_vertex_attribute_divisor
+dEQP-VK.api.info.vulkan1p2_limits_validation.nv_mesh_shader
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_transform_feedback
+dEQP-VK.api.info.vulkan1p2_limits_validation.fragment_density_map
+dEQP-VK.api.info.vulkan1p2_limits_validation.nv_ray_tracing
+dEQP-VK.api.info.vulkan1p2_limits_validation.timeline_semaphore
+dEQP-VK.api.info.vulkan1p2_limits_validation.ext_line_rasterization
 dEQP-VK.api.info.image_format_properties2.1d.optimal.r4g4_unorm_pack8
 dEQP-VK.api.info.image_format_properties2.1d.optimal.r4g4b4a4_unorm_pack16
 dEQP-VK.api.info.image_format_properties2.1d.optimal.b4g4r4a4_unorm_pack16
@@ -296784,6 +296807,24 @@ dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convert.store.mu
 dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convert.store.replay.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convert.store.replay.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.baseubo.convertuvec2.store.replay.std140.vert
 dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.load.nostore.single.std140.vert
@@ -296820,6 +296861,24 @@ dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convert.store.m
 dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convert.store.replay.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convert.store.replay.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth1.basessbo.convertuvec2.store.replay.std140.vert
 dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.load.nostore.single.std140.vert
@@ -296856,6 +296915,24 @@ dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convert.store.mu
 dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convert.store.replay.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convert.store.replay.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.baseubo.convertuvec2.store.replay.std140.vert
 dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.load.nostore.single.std140.vert
@@ -296892,6 +296969,24 @@ dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convert.store.m
 dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convert.store.replay.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convert.store.replay.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set0.depth2.basessbo.convertuvec2.store.replay.std140.vert
 dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.load.nostore.single.std140.vert
@@ -296964,6 +297059,42 @@ dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convert.store.re
 dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convert.store.replay.scalar.comp
 dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convert.store.replay.scalar.frag
 dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convert.store.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.nostore.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.baseubo.convertuvec2.store.replay.scalar.vert
 dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.load.nostore.single.std140.vert
@@ -297036,6 +297167,42 @@ dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convert.store.r
 dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convert.store.replay.scalar.comp
 dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convert.store.replay.scalar.frag
 dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convert.store.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.nostore.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth1.basessbo.convertuvec2.store.replay.scalar.vert
 dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.load.nostore.single.std140.vert
@@ -297108,6 +297275,42 @@ dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convert.store.re
 dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convert.store.replay.scalar.comp
 dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convert.store.replay.scalar.frag
 dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convert.store.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.nostore.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.baseubo.convertuvec2.store.replay.scalar.vert
 dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.load.nostore.single.std140.vert
@@ -297180,6 +297383,42 @@ dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convert.store.r
 dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convert.store.replay.scalar.comp
 dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convert.store.replay.scalar.frag
 dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convert.store.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.nostore.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth2.basessbo.convertuvec2.store.replay.scalar.vert
 dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.load.nostore.single.std140.vert
@@ -297252,6 +297491,42 @@ dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convert.store.re
 dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convert.store.replay.scalar.comp
 dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convert.store.replay.scalar.frag
 dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convert.store.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.nostore.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.baseubo.convertuvec2.store.replay.scalar.vert
 dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.load.nostore.single.std140.vert
@@ -297324,6 +297599,42 @@ dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convert.store.r
 dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convert.store.replay.scalar.comp
 dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convert.store.replay.scalar.frag
 dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convert.store.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.nostore.replay.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.single.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.single.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.single.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.multi.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.multi.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.multi.scalar.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.replay.scalar.comp
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.replay.scalar.frag
+dEQP-VK.binding_model.buffer_device_address.set3.depth3.basessbo.convertuvec2.store.replay.scalar.vert
 dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.load.nostore.single.std140.vert
@@ -297360,6 +297671,24 @@ dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convert.store.mu
 dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convert.store.replay.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convert.store.replay.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.baseubo.convertuvec2.store.replay.std140.vert
 dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.load.nostore.single.std140.vert
@@ -297396,6 +297725,24 @@ dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convert.store.m
 dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convert.store.replay.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convert.store.replay.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth1.basessbo.convertuvec2.store.replay.std140.vert
 dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.load.nostore.single.std140.vert
@@ -297432,6 +297779,24 @@ dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convert.store.mu
 dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convert.store.replay.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convert.store.replay.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.baseubo.convertuvec2.store.replay.std140.vert
 dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.load.nostore.single.std140.vert
@@ -297468,6 +297833,24 @@ dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convert.store.m
 dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convert.store.replay.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convert.store.replay.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set7.depth2.basessbo.convertuvec2.store.replay.std140.vert
 dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.load.nostore.single.std140.vert
@@ -297504,6 +297887,24 @@ dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convert.store.m
 dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convert.store.replay.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convert.store.replay.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.baseubo.convertuvec2.store.replay.std140.vert
 dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.load.nostore.single.std140.vert
@@ -297540,6 +297941,24 @@ dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convert.store.
 dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convert.store.replay.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convert.store.replay.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth1.basessbo.convertuvec2.store.replay.std140.vert
 dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.load.nostore.single.std140.vert
@@ -297576,6 +297995,24 @@ dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convert.store.m
 dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convert.store.replay.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convert.store.replay.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.baseubo.convertuvec2.store.replay.std140.vert
 dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.load.nostore.single.std140.vert
@@ -297612,6 +298049,24 @@ dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convert.store.
 dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convert.store.replay.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convert.store.replay.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set15.depth2.basessbo.convertuvec2.store.replay.std140.vert
 dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.load.nostore.single.std140.vert
@@ -297648,6 +298103,24 @@ dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convert.store.m
 dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convert.store.replay.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convert.store.replay.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.baseubo.convertuvec2.store.replay.std140.vert
 dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.load.nostore.single.std140.vert
@@ -297684,6 +298157,24 @@ dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convert.store.
 dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convert.store.replay.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convert.store.replay.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth1.basessbo.convertuvec2.store.replay.std140.vert
 dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.load.nostore.single.std140.vert
@@ -297720,6 +298211,24 @@ dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convert.store.m
 dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convert.store.replay.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convert.store.replay.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.baseubo.convertuvec2.store.replay.std140.vert
 dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.load.nostore.single.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.load.nostore.single.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.load.nostore.single.std140.vert
@@ -297756,11 +298265,30 @@ dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convert.store.
 dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convert.store.replay.std140.comp
 dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convert.store.replay.std140.frag
 dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convert.store.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.nostore.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.nostore.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.nostore.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.nostore.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.nostore.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.nostore.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.nostore.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.nostore.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.nostore.replay.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.store.single.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.store.single.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.store.single.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.store.multi.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.store.multi.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.store.multi.std140.vert
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.store.replay.std140.comp
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.store.replay.std140.frag
+dEQP-VK.binding_model.buffer_device_address.set31.depth2.basessbo.convertuvec2.store.replay.std140.vert
 dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_0_compute
 dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_1_compute
 dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_2_compute
 dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_3_compute
 dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_4_compute
+dEQP-VK.spirv_assembly.instruction.compute.spirv_version.1_5_compute
 dEQP-VK.spirv_assembly.instruction.compute.localsize.literal_localsize
 dEQP-VK.spirv_assembly.instruction.compute.localsize.literal_and_specid_localsize
 dEQP-VK.spirv_assembly.instruction.compute.localsize.specid_localsize
@@ -298297,6 +298825,36 @@ dEQP-VK.spirv_assembly.instruction.compute.shader_default_output.float.uninitial
 dEQP-VK.spirv_assembly.instruction.compute.opnmin.all
 dEQP-VK.spirv_assembly.instruction.compute.opnmax.all
 dEQP-VK.spirv_assembly.instruction.compute.opnclamp.all
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp16_denorm_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp16_denorm_flush_to_zero
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp16_signed_zero_inf_nan_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp16_rounding_mode_rte
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp16_rounding_mode_rtz
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp32_denorm_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp32_denorm_flush_to_zero
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp32_signed_zero_inf_nan_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp32_rounding_mode_rte
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp32_rounding_mode_rtz
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp64_denorm_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp64_denorm_flush_to_zero
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp64_signed_zero_inf_nan_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp64_rounding_mode_rte
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.spirv1p4.fp64_rounding_mode_rtz
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp16_denorm_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp16_denorm_flush_to_zero
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp16_signed_zero_inf_nan_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp16_rounding_mode_rte
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp16_rounding_mode_rtz
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp32_denorm_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp32_denorm_flush_to_zero
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp32_signed_zero_inf_nan_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp32_rounding_mode_rte
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp32_rounding_mode_rtz
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp64_denorm_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp64_denorm_flush_to_zero
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp64_signed_zero_inf_nan_preserve
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp64_rounding_mode_rte
+dEQP-VK.spirv_assembly.instruction.compute.float_controls_extensionless.vulkan1_2.fp64_rounding_mode_rtz
 dEQP-VK.spirv_assembly.instruction.compute.8bit_storage.storagebuffer_32_to_8.storage_buffer_scalar_sint
 dEQP-VK.spirv_assembly.instruction.compute.8bit_storage.storagebuffer_32_to_8.storage_buffer_scalar_uint
 dEQP-VK.spirv_assembly.instruction.compute.8bit_storage.storagebuffer_32_to_8.storage_buffer_vector_sint
@@ -301897,6 +302455,11 @@ dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_4_tesselation_evalua
 dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_4_tesselation_control
 dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_4_geometry
 dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_4_fragment
+dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_5_vertex
+dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_5_tesselation_evaluation
+dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_5_tesselation_control
+dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_5_geometry
+dEQP-VK.spirv_assembly.instruction.graphics.spirv_version.1_5_fragment
 dEQP-VK.spirv_assembly.instruction.graphics.opnop.opnop_vert
 dEQP-VK.spirv_assembly.instruction.graphics.opnop.opnop_tessc
 dEQP-VK.spirv_assembly.instruction.graphics.opnop.opnop_tesse
@@ -491111,201 +491674,301 @@ dEQP-VK.subgroups.ballot.ext_shader_subgroup_ballot.framebuffer.tess_control
 dEQP-VK.subgroups.ballot.ext_shader_subgroup_ballot.framebuffer.geometry
 dEQP-VK.subgroups.ballot.ext_shader_subgroup_ballot.framebuffer.vertex
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_int8_t
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_int8_t
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_int8_t
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_i8vec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_i8vec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_i8vec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_i8vec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_i8vec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_i8vec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_i8vec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_i8vec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_i8vec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uint8_t
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_uint8_t
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uint8_t
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_u8vec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_u8vec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_u8vec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_u8vec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_u8vec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_u8vec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_u8vec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_u8vec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_u8vec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_int16_t
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_int16_t
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_int16_t
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_i16vec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_i16vec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_i16vec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_i16vec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_i16vec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_i16vec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_i16vec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_i16vec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_i16vec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uint16_t
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_uint16_t
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uint16_t
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_u16vec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_u16vec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_u16vec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_u16vec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_u16vec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_u16vec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_u16vec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_u16vec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_u16vec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_int
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_int
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_int
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_ivec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_ivec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_ivec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_ivec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_ivec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_ivec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_ivec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_ivec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_ivec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uint
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_uint
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uint
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uvec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_uvec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uvec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uvec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_uvec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uvec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uvec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_uvec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uvec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_int64_t
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_int64_t
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_int64_t
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_i64vec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_i64vec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_i64vec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_i64vec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_i64vec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_i64vec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_i64vec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_i64vec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_i64vec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_uint64_t
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_uint64_t
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_uint64_t
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_u64vec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_u64vec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_u64vec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_u64vec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_u64vec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_u64vec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_u64vec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_u64vec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_u64vec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_float16_t
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_float16_t
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_float16_t
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_f16vec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_f16vec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_f16vec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_f16vec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_f16vec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_f16vec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_f16vec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_f16vec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_f16vec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_float
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_float
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_float
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_vec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_vec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_vec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_vec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_vec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_vec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_vec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_vec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_vec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_double
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_double
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_double
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_dvec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_dvec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_dvec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_dvec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_dvec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_dvec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_dvec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_dvec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_dvec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_bool
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_bool
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_bool
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_bvec2
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_bvec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_bvec2
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_bvec3
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_bvec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_bvec3
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_bvec4
+dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcast_nonconst_bvec4
 dEQP-VK.subgroups.ballot_broadcast.graphics.subgroupbroadcastfirst_bvec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_int8_t
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_int8_t
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_int8_t
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_i8vec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_i8vec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_i8vec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_i8vec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_i8vec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_i8vec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_i8vec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_i8vec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_i8vec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_uint8_t
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_uint8_t
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uint8_t
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_u8vec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_u8vec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_u8vec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_u8vec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_u8vec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_u8vec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_u8vec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_u8vec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_u8vec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_int16_t
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_int16_t
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_int16_t
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_i16vec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_i16vec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_i16vec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_i16vec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_i16vec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_i16vec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_i16vec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_i16vec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_i16vec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_uint16_t
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_uint16_t
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uint16_t
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_u16vec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_u16vec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_u16vec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_u16vec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_u16vec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_u16vec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_u16vec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_u16vec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_u16vec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_int
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_int
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_int
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_ivec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_ivec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_ivec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_ivec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_ivec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_ivec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_ivec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_ivec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_ivec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_uint
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_uint
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uint
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_uvec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_uvec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uvec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_uvec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_uvec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uvec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_uvec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_uvec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uvec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_int64_t
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_int64_t
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_int64_t
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_i64vec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_i64vec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_i64vec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_i64vec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_i64vec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_i64vec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_i64vec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_i64vec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_i64vec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_uint64_t
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_uint64_t
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_uint64_t
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_u64vec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_u64vec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_u64vec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_u64vec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_u64vec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_u64vec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_u64vec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_u64vec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_u64vec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_float16_t
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_float16_t
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_float16_t
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_f16vec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_f16vec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_f16vec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_f16vec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_f16vec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_f16vec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_f16vec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_f16vec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_f16vec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_float
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_float
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_float
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_vec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_vec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_vec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_vec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_vec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_vec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_vec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_vec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_vec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_double
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_double
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_double
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_dvec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_dvec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_dvec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_dvec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_dvec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_dvec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_dvec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_dvec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_dvec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_bool
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_bool
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_bool
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_bvec2
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_bvec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_bvec2
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_bvec3
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_bvec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_bvec3
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_bvec4
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_nonconst_bvec4
 dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcastfirst_bvec4
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int8_tvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int8_ttess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int8_ttess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int8_tgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int8_tvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int8_ttess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int8_ttess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int8_tgeometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_int8_tvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_int8_ttess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_int8_ttess_control
@@ -491314,6 +491977,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec2tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec2geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i8vec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i8vec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i8vec2tess_control
@@ -491322,6 +491989,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec3tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec3geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i8vec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i8vec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i8vec3tess_control
@@ -491330,6 +492001,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec4tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i8vec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i8vec4geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i8vec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i8vec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i8vec4tess_control
@@ -491338,6 +492013,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint8_tvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint8_ttess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint8_ttess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint8_tgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint8_tvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint8_ttess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint8_ttess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint8_tgeometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uint8_tvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uint8_ttess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uint8_ttess_control
@@ -491346,6 +492025,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec2tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec2geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u8vec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u8vec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u8vec2tess_control
@@ -491354,6 +492037,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec3tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec3geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u8vec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u8vec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u8vec3tess_control
@@ -491362,6 +492049,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec4tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u8vec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u8vec4geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u8vec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u8vec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u8vec4tess_control
@@ -491370,6 +492061,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int16_tvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int16_ttess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int16_ttess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int16_tgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int16_tvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int16_ttess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int16_ttess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int16_tgeometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_int16_tvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_int16_ttess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_int16_ttess_control
@@ -491378,6 +492073,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec2tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec2geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i16vec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i16vec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i16vec2tess_control
@@ -491386,6 +492085,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec3tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec3geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i16vec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i16vec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i16vec3tess_control
@@ -491394,6 +492097,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec4tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i16vec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i16vec4geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i16vec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i16vec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i16vec4tess_control
@@ -491402,6 +492109,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint16_tvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint16_ttess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint16_ttess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint16_tgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint16_tvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint16_ttess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint16_ttess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint16_tgeometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uint16_tvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uint16_ttess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uint16_ttess_control
@@ -491410,6 +492121,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec2tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec2geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u16vec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u16vec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u16vec2tess_control
@@ -491418,6 +492133,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec3tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec3geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u16vec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u16vec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u16vec3tess_control
@@ -491426,6 +492145,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec4tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u16vec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u16vec4geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u16vec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u16vec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u16vec4tess_control
@@ -491434,6 +492157,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_intvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_inttess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_inttess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_intgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_intvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_inttess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_inttess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_intgeometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_intvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_inttess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_inttess_control
@@ -491442,6 +492169,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec2tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec2geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec2tess_control
@@ -491450,6 +492181,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec3tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec3geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec3tess_control
@@ -491458,6 +492193,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec4tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_ivec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_ivec4geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_ivec4tess_control
@@ -491466,6 +492205,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uintvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uinttess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uinttess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uintgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uintvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uinttess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uinttess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uintgeometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uintvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uinttess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uinttess_control
@@ -491474,6 +492217,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec2tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec2geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec2tess_control
@@ -491482,6 +492229,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec3tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec3geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec3tess_control
@@ -491490,6 +492241,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec4tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uvec4geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uvec4tess_control
@@ -491498,6 +492253,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int64_tvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int64_ttess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int64_ttess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_int64_tgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int64_tvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int64_ttess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int64_ttess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_int64_tgeometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_int64_tvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_int64_ttess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_int64_ttess_control
@@ -491506,6 +492265,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec2tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec2geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i64vec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i64vec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i64vec2tess_control
@@ -491514,6 +492277,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec3tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec3geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i64vec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i64vec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i64vec3tess_control
@@ -491522,6 +492289,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec4tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_i64vec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_i64vec4geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i64vec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i64vec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_i64vec4tess_control
@@ -491530,6 +492301,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint64_tvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint64_ttess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint64_ttess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uint64_tgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint64_tvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint64_ttess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint64_ttess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_uint64_tgeometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uint64_tvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uint64_ttess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_uint64_ttess_control
@@ -491538,6 +492313,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec2tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec2geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u64vec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u64vec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u64vec2tess_control
@@ -491546,6 +492325,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec3tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec3geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u64vec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u64vec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u64vec3tess_control
@@ -491554,6 +492337,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec4tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_u64vec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_u64vec4geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u64vec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u64vec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_u64vec4tess_control
@@ -491562,6 +492349,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_float16_tvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_float16_ttess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_float16_ttess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_float16_tgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_float16_tvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_float16_ttess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_float16_ttess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_float16_tgeometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_float16_tvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_float16_ttess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_float16_ttess_control
@@ -491570,6 +492361,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec2tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec2geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_f16vec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_f16vec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_f16vec2tess_control
@@ -491578,6 +492373,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec3tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec3geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_f16vec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_f16vec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_f16vec3tess_control
@@ -491586,6 +492385,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec4tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_f16vec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_f16vec4geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_f16vec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_f16vec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_f16vec4tess_control
@@ -491594,6 +492397,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_floatvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_floattess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_floattess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_floatgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_floatvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_floattess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_floattess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_floatgeometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_floatvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_floattess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_floattess_control
@@ -491602,6 +492409,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec2tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec2geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec2tess_control
@@ -491610,6 +492421,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec3tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec3geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec3tess_control
@@ -491618,6 +492433,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec4tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_vec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_vec4geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_vec4tess_control
@@ -491626,6 +492445,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_doublevertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_doubletess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_doubletess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_doublegeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_doublevertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_doubletess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_doubletess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_doublegeometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_doublevertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_doubletess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_doubletess_control
@@ -491634,6 +492457,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec2tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec2geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec2tess_control
@@ -491642,6 +492469,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec3tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec3geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec3tess_control
@@ -491650,6 +492481,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec4tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_dvec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_dvec4geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_dvec4tess_control
@@ -491658,6 +492493,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_boolvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_booltess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_booltess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_boolgeometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_boolvertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_booltess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_booltess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_boolgeometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_boolvertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_booltess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_booltess_control
@@ -491666,6 +492505,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec2tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec2geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec2vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec2tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec2tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec2geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec2vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec2tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec2tess_control
@@ -491674,6 +492517,10 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec3tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec3geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec3vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec3tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec3tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec3geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec3vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec3tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec3tess_control
@@ -491682,26 +492529,40 @@ dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec4tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_bvec4geometry
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec4vertex
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec4tess_eval
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec4tess_control
+dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_nonconst_bvec4geometry
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec4vertex
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec4tess_eval
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec4tess_control
 dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcastfirst_bvec4geometry
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.graphics.subgroupbroadcast_int
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.graphics.subgroupbroadcast_nonconst_int
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.graphics.subgroupbroadcastfirst_int
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.graphics.subgroupbroadcast_uint
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.graphics.subgroupbroadcast_nonconst_uint
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.graphics.subgroupbroadcastfirst_uint
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.graphics.subgroupbroadcast_float
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.graphics.subgroupbroadcast_nonconst_float
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.graphics.subgroupbroadcastfirst_float
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.compute.subgroupbroadcast_int
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.compute.subgroupbroadcast_nonconst_int
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.compute.subgroupbroadcastfirst_int
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.compute.subgroupbroadcast_uint
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.compute.subgroupbroadcast_nonconst_uint
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.compute.subgroupbroadcastfirst_uint
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.compute.subgroupbroadcast_float
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.compute.subgroupbroadcast_nonconst_float
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.compute.subgroupbroadcastfirst_float
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_intvertex
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_inttess_eval
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_inttess_control
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_intgeometry
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_intvertex
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_inttess_eval
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_inttess_control
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_intgeometry
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcastfirst_intvertex
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcastfirst_inttess_eval
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcastfirst_inttess_control
@@ -491710,6 +492571,10 @@ dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgro
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_uinttess_eval
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_uinttess_control
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_uintgeometry
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_uintvertex
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_uinttess_eval
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_uinttess_control
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_uintgeometry
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcastfirst_uintvertex
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcastfirst_uinttess_eval
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcastfirst_uinttess_control
@@ -491718,6 +492583,10 @@ dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgro
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_floattess_eval
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_floattess_control
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_floatgeometry
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_floatvertex
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_floattess_eval
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_floattess_control
+dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcast_nonconst_floatgeometry
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcastfirst_floatvertex
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcastfirst_floattess_eval
 dEQP-VK.subgroups.ballot_broadcast.ext_shader_subgroup_ballot.framebuffer.subgroupbroadcastfirst_floattess_control
@@ -552833,6 +553702,11 @@ dEQP-VK.graphicsfuzz.while-inside-switch
 dEQP-VK.graphicsfuzz.write-before-break
 dEQP-VK.graphicsfuzz.write-red-in-loop-nest
 dEQP-VK.graphicsfuzz.wrong-color-in-always-false-if
+dEQP-VK.imageless_framebuffer.color
+dEQP-VK.imageless_framebuffer.depth_stencil
+dEQP-VK.imageless_framebuffer.color_resolve
+dEQP-VK.imageless_framebuffer.depth_stencil_resolve
+dEQP-VK.imageless_framebuffer.multisubpass
 dEQP-VK.transform_feedback.simple.basic_1_256
 dEQP-VK.transform_feedback.simple.basic_beginqueryindexed_streamid_0_1_256
 dEQP-VK.transform_feedback.simple.basic_endqueryindexed_streamid_0_1_256
@@ -555485,11 +556359,6 @@ dEQP-VK.descriptor_indexing.uniform_buffer_in_loop
 dEQP-VK.descriptor_indexing.storage_buffer_dynamic_in_loop
 dEQP-VK.descriptor_indexing.uniform_buffer_dynamic_in_loop
 dEQP-VK.descriptor_indexing.input_attachment_in_loop
-dEQP-VK.imageless_framebuffer.color
-dEQP-VK.imageless_framebuffer.depth_stencil
-dEQP-VK.imageless_framebuffer.color_resolve
-dEQP-VK.imageless_framebuffer.depth_stencil_resolve
-dEQP-VK.imageless_framebuffer.multisubpass
 dEQP-VK.fragment_shader_interlock.basic.nodiscard.image.pixel_ordered.1xaa.no_sample_shading.8x8
 dEQP-VK.fragment_shader_interlock.basic.nodiscard.image.pixel_ordered.1xaa.no_sample_shading.16x16
 dEQP-VK.fragment_shader_interlock.basic.nodiscard.image.pixel_ordered.1xaa.no_sample_shading.32x32
index 9dc1c52..f048228 100644 (file)
@@ -44,7 +44,6 @@ VULKAN_MODULE         = Module("dEQP-VK", "../external/vulkancts/modules/vulkan", "deqp
 DEFAULT_BUILD_DIR      = os.path.join(tempfile.gettempdir(), "spirv-binaries", "{targetName}-{buildType}")
 DEFAULT_TARGET         = "null"
 DEFAULT_DST_DIR                = os.path.join(DEQP_DIR, "external", "vulkancts", "data", "vulkan", "prebuilt")
-DEFAULT_VULKAN_VERSION = "1.1"
 
 def getBuildConfig (buildPathPtrn, targetName, buildType):
        buildPath = buildPathPtrn.format(
@@ -98,8 +97,8 @@ def parseArgs ():
        parser.add_argument("-u",
                                                "--target-vulkan-version",
                                                dest="vulkanVersion",
-                                               default="1.1",
-                                               choices=["1.0", "1.1"],
+                                               default="1.2",
+                                               choices=["1.0", "1.1", "1.2"],
                                                help="Target Vulkan version")
        return parser.parse_args()
 
index 2d49cf7..968b77c 100644 (file)
@@ -42,12 +42,10 @@ INL_HEADER = """\
 """
 
 DEFINITIONS                    = [
-       ("VK_API_VERSION_1_0",                                  "deUint32"),
-       ("VK_API_VERSION_1_1",                                  "deUint32"),
        ("VK_MAX_PHYSICAL_DEVICE_NAME_SIZE",    "size_t"),
        ("VK_MAX_EXTENSION_NAME_SIZE",                  "size_t"),
-       ("VK_MAX_DRIVER_NAME_SIZE_KHR",                 "size_t"),
-       ("VK_MAX_DRIVER_INFO_SIZE_KHR",                 "size_t"),
+       ("VK_MAX_DRIVER_NAME_SIZE",                             "size_t"),
+       ("VK_MAX_DRIVER_INFO_SIZE",                             "size_t"),
        ("VK_UUID_SIZE",                                                "size_t"),
        ("VK_LUID_SIZE",                                                "size_t"),
        ("VK_MAX_MEMORY_TYPES",                                 "size_t"),
@@ -125,7 +123,7 @@ TYPE_SUBSTITUTIONS          = [
 ]
 
 EXTENSION_POSTFIXES                            = ["KHR", "EXT", "NV", "NVX", "KHX", "NN", "MVK", "FUCHSIA", "GGP", "AMD"]
-EXTENSION_POSTFIXES_STANDARD   = ["KHR"]
+EXTENSION_POSTFIXES_STANDARD   = ["KHR", "EXT"]
 
 def prefixName (prefix, name):
        name = re.sub(r'([a-z0-9])([A-Z])', r'\1_\2', name[2:])
@@ -151,6 +149,10 @@ def prefixName (prefix, name):
        name = name.replace("SMBUILTINS", "SM_BUILTINS")
        name = name.replace("ASTCHDRFEATURES", "ASTC_HDR_FEATURES")
        name = name.replace("UINT_8", "UINT8")
+       name = name.replace("VULKAN_11_FEATURES", "VULKAN_1_1_FEATURES")
+       name = name.replace("VULKAN_11_PROPERTIES", "VULKAN_1_1_PROPERTIES")
+       name = name.replace("VULKAN_12_FEATURES", "VULKAN_1_2_FEATURES")
+       name = name.replace("VULKAN_12_PROPERTIES", "VULKAN_1_2_PROPERTIES")
        name = name.replace("INT_8_", "INT8_")
        name = name.replace("AABBNV", "AABB_NV")
 
@@ -163,21 +165,15 @@ class Version:
                self.patch = versionTuple[2]
 
        def getInHex (self):
-               if self.major == 1 and self.minor == 0 and self.patch == 0:
-                       return "VK_API_VERSION_1_0"
-               elif self.major == 1 and self.minor == 1 and self.patch == 0:
-                       return "VK_API_VERSION_1_1"
-               else:
-                       hex = (self.major << 22) | (self.minor << 12) | self.patch
-                       return '0x%Xu' % (hex)
+               if self.patch == 0:
+                       return "VK_API_VERSION_%d_%d" % (self.major, self.minor)
+               return '0x%Xu' % (hash(self))
 
        def isStandardVersion (self):
                if self.patch != 0:
                        return False
                if self.major != 1:
                        return False
-               if self.minor != 1 and self.minor != 0:
-                       return False
                return True
 
        def getBestRepresentation (self):
@@ -396,7 +392,8 @@ class Extension:
                return 'EXT:\n%s ->\nENUMS:\n%s\nCOMPOS:\n%s\nFUNCS:\n%s\nBITF:\n%s\nHAND:\n%s\nDEFS:\n%s\n' % (self.name, self.enums, self.compositeTypes, self.functions, self.bitfields, self.handles, self.definitions, self.versionInCore)
 
 class API:
-       def __init__ (self, definitions, handles, enums, bitfields, compositeTypes, functions, extensions):
+       def __init__ (self, versions, definitions, handles, enums, bitfields, compositeTypes, functions, extensions):
+               self.versions           = versions
                self.definitions        = definitions
                self.handles            = handles
                self.enums                      = enums
@@ -451,7 +448,6 @@ def getBitfieldNameForBitEnum (bitEnumName):
 def parsePreprocDefinedValue (src, name):
        value = parsePreprocDefinedValueOptional(src, name)
        if value is None:
-
                raise Exception("No such definition: %s" % name)
        return value
 
@@ -494,6 +490,14 @@ def parseCompositeTypes (src):
                types.append(parseCompositeType(typeMap[type], typename, contents))
        return types
 
+def parseVersions (src):
+       # returns list of tuples each with four items:
+       # 1. string with version token (without ' 1' at the end)
+       # 2. starting point off version specific definitions in vulkan.h.in
+       # 3. major version number
+       # 4. minor version number
+       return [(m.group()[:-2], m.start(), int(m.group(1)), int(m.group(2))) for m in re.finditer('VK_VERSION_([1-9])_([0-9]) 1', src)]
+
 def parseHandles (src):
        matches = re.findall(r'VK_DEFINE(_NON_DISPATCHABLE|)_HANDLE\((' + IDENT_PTRN + r')\)[ \t]*[\n\r]', src)
        handles = []
@@ -517,16 +521,15 @@ def removeTypeExtPostfix (name):
                        return name[0:-len(extPostfix)]
        return None
 
-def populateAliases (objects):
-       objectsByName = {}
-       for object in objects:
-               objectsByName[object.name] = object
-       for object in objects:
+def populateExtensionAliases(allObjects, extensionObjects):
+       for object in extensionObjects:
                withoutPostfix = removeTypeExtPostfix(object.name)
-               if withoutPostfix != None and withoutPostfix in objectsByName:
-                       objectsByName[withoutPostfix].alias = object
+               if withoutPostfix != None and withoutPostfix in allObjects:
+                       # max 1 alias is assumed by functions in this file
+                       assert allObjects[withoutPostfix].alias == None
+                       allObjects[withoutPostfix].alias = object
                        object.isAlias = True
-       for object in objects:
+       for object in extensionObjects:
                object.checkAliasValidity()
 
 def populateAliasesWithTypedefs (objects, src):
@@ -570,30 +573,33 @@ def parseFunctions (src):
                functions.append(Function(name.strip(), returnType.strip(), parseArgList(argList)))
        return functions
 
-def parseFunctionsByVersion (src):
-       ptrnVer10       = 'VK_VERSION_1_0 1'
-       ptrnVer11       = 'VK_VERSION_1_1 1'
-       matchVer10      = re.search(ptrnVer10, src)
-       matchVer11      = re.search(ptrnVer11, src)
+def parseFunctionsByVersion (src, versions):
+       # construct list of locations where version definitions start, and add the end of the file to it
+       sectionLocations = [versionDef[1] for versionDef in versions]
+       sectionLocations.append(len(src))
+
+       # construct function declaration pattern
        ptrn            = r'VKAPI_ATTR\s+(' + TYPE_PTRN + ')\s+VKAPI_CALL\s+(' + IDENT_PTRN + r')\s*\(([^)]*)\)\s*;'
        regPtrn         = re.compile(ptrn)
-       matches         = regPtrn.findall(src, matchVer10.start(), matchVer11.start())
        functions       = []
-       for returnType, name, argList in matches:
-               functions.append(Function(name.strip(), returnType.strip(), parseArgList(argList), 'VK_VERSION_1_0'))
-       matches         = regPtrn.findall(src, matchVer11.start())
-       for returnType, name, argList in matches:
-               functions.append(Function(name.strip(), returnType.strip(), parseArgList(argList), 'VK_VERSION_1_1'))
+
+       # iterate over all versions and find all function definitions
+       for index, v in enumerate(versions):
+               matches = regPtrn.findall(src, sectionLocations[index], sectionLocations[index+1])
+               for returnType, name, argList in matches:
+                       functions.append(Function(name.strip(), returnType.strip(), parseArgList(argList), v[0]))
        return functions
 
 def splitByExtension (src):
        ptrn            = r'#define\s+[A-Z0-9_]+_EXTENSION_NAME\s+"([^"]+)"'
+       # Construct long pattern that will be used to split whole source by extensions
        match           = "#define\s+("
        for part in re.finditer(ptrn, src):
                 match += part.group(1)+"|"
        match = match[:-1] + ")\s+1"
        parts = re.split(match, src)
-       # First part is core
+
+       # First part is core, following tuples contain extension name and all its definitions
        byExtension     = [(None, parts[0])]
        for ndx in range(1, len(parts), 2):
                byExtension.append((parts[ndx], parts[ndx+1]))
@@ -620,9 +626,12 @@ def parseDefinitions (extensionName, src):
 
        return [Definition(None, match[0], match[1]) for match in matches if not skipDefinition(extensionName, match)]
 
-def parseExtensions (src, allFunctions, allCompositeTypes, allEnums, allBitfields, allHandles, allDefinitions):
+def parseExtensions (src, versions, allFunctions, allCompositeTypes, allEnums, allBitfields, allHandles, allDefinitions):
 
        def getCoreVersion (extensionName, extensionsData):
+               # returns None when extension was not added to core for any Vulkan version
+               # returns array containing DEVICE or INSTANCE string followed by the vulkan version in which this extension is core
+               # note that this function is also called for vulkan 1.0 source for which extName is None
                if not extensionName:
                        return None
                ptrn            = extensionName + r'\s+(DEVICE|INSTANCE)\s+([0-9_]+)'
@@ -642,7 +651,8 @@ def parseExtensions (src, allFunctions, allCompositeTypes, allEnums, allBitfield
        definitionsByName               = {definition.name: definition for definition in allDefinitions}
 
        for extensionName, extensionSrc in splitSrc:
-               definitions                     = [Definition(type, name, parsePreprocDefinedValueOptional(extensionSrc, name)) for name, type in DEFINITIONS]
+               definitions                     = [Definition("deUint32", v.getInHex(), parsePreprocDefinedValueOptional(extensionSrc, v.getInHex())) for v in versions]
+               definitions.extend([Definition(type, name, parsePreprocDefinedValueOptional(extensionSrc, name)) for name, type in DEFINITIONS])
                definitions                     = [definition for definition in definitions if definition.value != None]
                additionalDefinitions = parseDefinitions(extensionName, extensionSrc)
                handles                         = parseHandles(extensionSrc)
@@ -661,6 +671,14 @@ def parseExtensions (src, allFunctions, allCompositeTypes, allEnums, allBitfield
                extHandles                      = [handlesByName[handle.name] for handle in handles]
                extDefinitions          = [definitionsByName[definition.name] for definition in definitions]
 
+               if extCoreVersion != None:
+                       populateExtensionAliases(functionsByName, extFunctions)
+                       populateExtensionAliases(handlesByName, extHandles)
+                       populateExtensionAliases(enumsByName, extEnums)
+                       populateExtensionAliases(bitfieldsByName, extBitfields)
+                       populateExtensionAliases(compositeTypesByName, extCompositeTypes)
+
+
                extensions.append(Extension(extensionName, extHandles, extEnums, extBitfields, extCompositeTypes, extFunctions, extDefinitions, additionalDefinitions, extCoreVersion))
        return extensions
 
@@ -671,7 +689,11 @@ def parseBitfieldNames (src):
        return matches
 
 def parseAPI (src):
-       definitions             = [Definition(type, name, parsePreprocDefinedValue(src, name)) for name, type in DEFINITIONS]
+       versionsData = parseVersions(src)
+       versions     = [Version((v[2], v[3], 0)) for v in versionsData]
+       definitions      = [Definition("deUint32", v.getInHex(), parsePreprocDefinedValue(src, v.getInHex())) for v in versions]
+       definitions.extend([Definition(type, name, parsePreprocDefinedValue(src, name)) for name, type in DEFINITIONS])
+
        handles                 = parseHandles(src)
        rawEnums                = parseEnums(src)
        bitfieldNames   = parseBitfieldNames(src)
@@ -679,7 +701,7 @@ def parseAPI (src):
        bitfields               = []
        bitfieldEnums   = set([getBitEnumNameForBitfield(n) for n in bitfieldNames if getBitEnumNameForBitfield(n) in [enum.name for enum in rawEnums]])
        compositeTypes  = parseCompositeTypes(src)
-       allFunctions    = parseFunctionsByVersion(src)
+       allFunctions    = parseFunctionsByVersion(src, versionsData)
 
        for enum in rawEnums:
                if enum.name in bitfieldEnums:
@@ -692,23 +714,18 @@ def parseAPI (src):
                        # Add empty bitfield
                        bitfields.append(Bitfield(bitfieldName, []))
 
+       extensions = parseExtensions(src, versions, allFunctions, compositeTypes, enums, bitfields, handles, definitions)
+
        # Populate alias fields
        populateAliasesWithTypedefs(compositeTypes, src)
        populateAliasesWithTypedefs(enums, src)
        populateAliasesWithTypedefs(bitfields, src)
-       populateAliases(allFunctions)
-       populateAliases(handles)
-       populateAliases(enums)
-       populateAliases(bitfields)
-       populateAliases(compositeTypes)
-
 
        for enum in enums:
                removeAliasedValues(enum)
 
-       extensions                      = parseExtensions(src, allFunctions, compositeTypes, enums, bitfields, handles, definitions)
-
        return API(
+               versions                = versions,
                definitions             = definitions,
                handles                 = handles,
                enums                   = enums,
@@ -1495,9 +1512,8 @@ def writeExtensionFunctions (api, filename):
        writeInlFile(filename, INL_HEADER, lines)
 
 def writeCoreFunctionalities(api, filename):
-       functionOriginValues = ["FUNCTIONORIGIN_PLATFORM", "FUNCTIONORIGIN_INSTANCE", "FUNCTIONORIGIN_DEVICE"]
-
-       lines = addVersionDefines([Version((1, 0, 0)), Version((1, 1, 0))]) + [
+       functionOriginValues    = ["FUNCTIONORIGIN_PLATFORM", "FUNCTIONORIGIN_INSTANCE", "FUNCTIONORIGIN_DEVICE"]
+       lines                                   = addVersionDefines(api.versions) + [
        "",
        'enum FunctionOrigin', '{'] + [line for line in indentLines([
        '\t' + functionOriginValues[0] + '\t= 0,',
@@ -1511,30 +1527,22 @@ def writeCoreFunctionalities(api, filename):
        "",
        "void initApisMap (ApisMap& apis)",
        "{",
-       "       apis.clear();",
-       "       apis.insert(::std::pair<deUint32, FunctionInfosList>(" + str(Version((1, 0, 0))) + ", FunctionInfosList()));",
-       "       apis.insert(::std::pair<deUint32, FunctionInfosList>(" + str(Version((1, 1, 0))) + ", FunctionInfosList()));",
+       "       apis.clear();"] + [
+       "       apis.insert(::std::pair<deUint32, FunctionInfosList>(" + str(v) + ", FunctionInfosList()));" for v in api.versions] + [
        ""]
 
-       def list10Funcs ():
-               for fun in api.functions:
-                       if fun.apiVersion == 'VK_VERSION_1_0':
-                               insert = '      apis[' + str(Version((1, 0, 0))) + '].push_back(FunctionInfo("' + fun.name + '",\t' + functionOriginValues[fun.getType()] + '));'
-                               yield insert
-
-       def listAllFuncs ():
+       apiVersions = []
+       for index, v in enumerate(api.versions):
+               funcs = []
+               apiVersions.append("VK_VERSION_{0}_{1}".format(v.major, v.minor))
+               # iterate over all functions that are core in latest vulkan version
+               # note that first item in api.extension array are actually all definitions that are in vulkan.h.in before section with extensions
                for fun in api.extensions[0].functions:
-                       insert = '      apis[' + str(Version((1, 1, 0))) + '].push_back(FunctionInfo("' + fun.name + '",\t' + functionOriginValues[fun.getType()] + '));'
-                       yield insert
-
-       lines = lines + [line for line in indentLines(list10Funcs())]
-       lines.append("")
-       lines = lines + [line for line in indentLines(listAllFuncs())]
-
-       lines.append("}")
-       lines.append("")
-       lines = lines + removeVersionDefines([Version((1, 0, 0)), Version((1, 1, 0))])
+                       if fun.apiVersion in apiVersions:
+                               funcs.append('  apis[' + str(v) + '].push_back(FunctionInfo("' + fun.name + '",\t' + functionOriginValues[fun.getType()] + '));')
+               lines = lines + [line for line in indentLines(funcs)] + [""]
 
+       lines = lines + ["}", ""] + removeVersionDefines(api.versions)
        writeInlFile(filename, INL_HEADER, lines)
 
 def generateDeviceFeaturesDefs(src):
@@ -1552,6 +1560,8 @@ def generateDeviceFeaturesDefs(src):
                        # handle special cases
                        if sType == "EXCLUSIVE_SCISSOR":
                                sType = "SCISSOR_EXCLUSIVE"
+                       if sType in {'VULKAN_1_1', 'VULKAN_1_2'}:
+                               continue
                        # end handling special cases
                        ptrnExtensionName       = r'^\s*#define\s+(\w+' + sSuffix + '_' + sType + '_EXTENSION_NAME).+$'
                        matchExtensionName      = re.search(ptrnExtensionName, src, re.M)
@@ -1563,7 +1573,93 @@ def generateDeviceFeaturesDefs(src):
                                                        matchSpecVersion.group  (1)     if matchSpecVersion             else '0') )
        return defs
 
-def writeDeviceFeatures(dfDefs, filename):
+def generateDevicePropertiesDefs(src):
+       # look for definitions
+       ptrnSType       = r'VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_(\w+)_PROPERTIES(\w*)\s*='
+       matches         = re.findall(ptrnSType, src, re.M)
+       matches         = sorted(matches, key=lambda m: m[0])
+       # construct final list
+       defs = []
+       for sType, sSuffix in matches:
+               structName                      = re.sub("[_0-9][a-z]", lambda match: match.group(0).upper(), sType.capitalize()).replace('_', '')
+               ptrnStructName          = r'\s*typedef\s+struct\s+(VkPhysicalDevice' + structName + 'Properties' + sSuffix[1:] + ')'
+               matchStructName         = re.search(ptrnStructName, src, re.M)
+               if matchStructName:
+                       if sType in {'VULKAN_1_1', 'VULKAN_1_2'}:
+                               continue
+                       extType = sType
+                       if extType == "MAINTENANCE_3":
+                               extType = "MAINTENANCE3"
+                       elif extType == "DISCARD_RECTANGLE":
+                               extType = "DISCARD_RECTANGLES"
+                       # end handling special cases
+                       ptrnExtensionName       = r'^\s*#define\s+(\w+' + sSuffix + '_' + extType + '_EXTENSION_NAME).+$'
+                       matchExtensionName      = re.search(ptrnExtensionName, src, re.M)
+                       ptrnSpecVersion         = r'^\s*#define\s+(\w+' + sSuffix + '_' + extType + '_SPEC_VERSION).+$'
+                       matchSpecVersion        = re.search(ptrnSpecVersion, src, re.M)
+                       defs.append( (sType, sSuffix, matchStructName.group(1), \
+                                                       matchExtensionName.group(0)     if matchExtensionName   else None,
+                                                       matchExtensionName.group(1)     if matchExtensionName   else None,
+                                                       matchSpecVersion.group  (1)     if matchSpecVersion             else '0') )
+       return defs
+
+def writeDeviceFeatures(api, dfDefs, filename):
+       # find VkPhysicalDeviceVulkan[1-9][0-9]Features blob structurs
+       # and construct dictionary with all of their attributes
+       blobMembers = {}
+       blobStructs = {}
+       blobPattern = re.compile("^VkPhysicalDeviceVulkan([1-9][0-9])Features$")
+       for structureType in api.compositeTypes:
+               match = blobPattern.match(structureType.name)
+               if match:
+                       allMembers = [member.name for member in structureType.members]
+                       vkVersion = match.group(1)
+                       blobMembers[vkVersion] = allMembers[2:]
+                       blobStructs[vkVersion] = set()
+       initFromBlobDefinitions = []
+       emptyInitDefinitions = []
+       # iterate over all feature structures
+       allFeaturesPattern = re.compile("^VkPhysicalDevice\w+Features")
+       nonExtFeaturesPattern = re.compile("^VkPhysicalDevice\w+Features$")
+       for structureType in api.compositeTypes:
+               # skip structures that are not feature structures
+               if not allFeaturesPattern.match(structureType.name):
+                       continue
+               # skip structures that were previously identified as blobs
+               if blobPattern.match(structureType.name):
+                       continue
+               if structureType.isAlias:
+                       continue
+               # skip sType and pNext and just grab third and next attributes
+               structureMembers = structureType.members[2:]
+               notPartOfBlob = True
+               if nonExtFeaturesPattern.match(structureType.name):
+                       # check if this member is part of any of the blobs
+                       for blobName, blobMemberList in blobMembers.items():
+                               # if just one member is not part of this blob go to the next blob
+                               # (we asume that all members are part of blob - no need to check all)
+                               if structureMembers[0].name not in blobMemberList:
+                                       continue
+                               # add another feature structure name to this blob
+                               blobStructs[blobName].add(structureType)
+                               # add specialization for this feature structure
+                               memberCopying = ""
+                               for member in structureMembers:
+                                       memberCopying += "\tfeatureType.{0} = allBlobs.vk{1}.{0};\n".format(member.name, blobName)
+                               wholeFunction = \
+                                       "template<> void initFromBlob<{0}>({0}& featureType, const AllBlobs& allBlobs)\n" \
+                                       "{{\n" \
+                                       "{1}" \
+                                       "}}".format(structureType.name, memberCopying)
+                               initFromBlobDefinitions.append(wholeFunction)
+                               notPartOfBlob = False
+                               # assuming that all members are part of blob, goto next
+                               break
+               # add empty template definition as on Fedora there are issue with
+               # linking using just generic template - all specializations are needed
+               if notPartOfBlob:
+                       emptyFunction = "template<> void initFromBlob<{0}>({0}&, const AllBlobs&) {{}}"
+                       emptyInitDefinitions.append(emptyFunction.format(structureType.name))
        extensionDefines = []
        makeFeatureDescDefinitions = []
        featureStructWrappers = []
@@ -1583,41 +1679,127 @@ def writeDeviceFeatures(dfDefs, filename):
                # construct makeFeatureDesc template function definitions
                sTypeName = "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_{0}_FEATURES{1}".format(sType, sSuffix)
                makeFeatureDescDefinitions.append("template<> FeatureDesc makeFeatureDesc<{0}>(void) " \
-                       "{{ return FeatureDesc({1}, {2}, {3}, {4}); }}".format(extStruct, sTypeName, extensionNameDefinition, specVer, len(dfDefs)-idx))
+                       "{{ return FeatureDesc{{{1}, {2}, {3}, {4}}}; }}".format(extStruct, sTypeName, extensionNameDefinition, specVer, len(dfDefs)-idx))
                # construct CreateFeatureStruct wrapper block
                featureStructWrappers.append("\t{{ createFeatureStructWrapper<{0}>, {1}, {2} }},".format(extStruct, extensionNameDefinition, specVer))
+       # construct method that will check if structure sType is part of blob
+       blobChecker = "bool isPartOfBlobFeatures (VkStructureType sType)\n{\n" \
+                                 "\tconst std::vector<VkStructureType> sTypeVect =" \
+                                 "\t{\n"
+       # iterate over blobs with list of structures
+       for blobName in sorted(blobStructs.keys()):
+               blobChecker += "\t\t// Vulkan{0}\n".format(blobName)
+               # iterate over all feature structures in current blob
+               structuresList = list(blobStructs[blobName])
+               structuresList = sorted(structuresList, key=lambda s: s.name)
+               for structType in structuresList:
+                       # find definition of this structure in dfDefs
+                       structName = structType.name
+                       # handle special cases
+                       if structName == 'VkPhysicalDeviceShaderDrawParameterFeatures':
+                               structName = 'VkPhysicalDeviceShaderDrawParametersFeatures'
+                       # end handling special cases
+                       structDef = [s for s in dfDefs if s[2] == structName][0]
+                       sType = structDef[0]
+                       sSuffix = structDef[1]
+                       # handle special cases
+                       if sType == "SCISSOR_EXCLUSIVE":
+                               sType = "EXCLUSIVE_SCISSOR"
+                       # end handling special cases
+                       sTypeName = "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_{0}_FEATURES{1}".format(sType, sSuffix)
+                       blobChecker += "\t\t{0},\n".format(sTypeName)
+       blobChecker += "\t};\n" \
+                                  "\treturn de::contains(sTypeVect.begin(), sTypeVect.end(), sType);\n" \
+                                  "}\n"
        # combine all definition lists
        stream = [
        '#include "vkDeviceFeatures.hpp"\n',
        'namespace vk\n{']
        stream.extend(extensionDefines)
        stream.append('\n')
+       stream.extend(initFromBlobDefinitions)
+       stream.append('\n// generic template is not enough for some compilers')
+       stream.extend(emptyInitDefinitions)
+       stream.append('\n')
        stream.extend(makeFeatureDescDefinitions)
        stream.append('\n')
-       stream.append('static const FeatureStructMapItem featureStructCreatorMap[] =\n{')
+       stream.append('static const FeatureStructCreationData featureStructCreationArray[] =\n{')
        stream.extend(featureStructWrappers)
+       stream.append('};\n')
+       stream.append(blobChecker)
+       stream.append('} // vk\n')
+       writeInlFile(filename, INL_HEADER, stream)
+
+def writeDeviceProperties(dfDefs, filename):
+       extensionDefines = []
+       makePropertyDescDefinitions = []
+       propertyStructWrappers = []
+       for idx, (sType, sSuffix, extStruct, extLine, extName, specVer) in enumerate(dfDefs):
+               extensionNameDefinition = extName
+               if not extensionNameDefinition:
+                       extensionNameDefinition = 'DECL{0}_{1}_EXTENSION_NAME'.format((sSuffix if sSuffix else ''), sType)
+               # construct defines with names
+               if extLine:
+                       extensionDefines.append(extLine)
+               else:
+                       extensionDefines.append('#define {0} "not_existent_property"'.format(extensionNameDefinition))
+               # construct makePropertyDesc template function definitions
+               sTypeName = "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_{0}_PROPERTIES{1}".format(sType, sSuffix)
+               makePropertyDescDefinitions.append("template<> PropertyDesc makePropertyDesc<{0}>(void) " \
+                       "{{ return PropertyDesc({1}, {2}, {3}, {4}); }}".format(extStruct, sTypeName, extensionNameDefinition, specVer, len(dfDefs)-idx))
+               # construct CreateProperty struct wrapper block
+               propertyStructWrappers.append("\t{{ createPropertyStructWrapper<{0}>, {1}, {2} }},".format(extStruct, extensionNameDefinition, specVer))
+       # combine all definition lists
+       stream = [
+       '#include "vkDeviceProperties.hpp"\n',
+       'namespace vk\n{']
+       stream.extend(extensionDefines)
+       stream.append('\n')
+       stream.extend(makePropertyDescDefinitions)
+       stream.append('\n')
+       stream.append('static const PropertyStructMapItem propertyStructCreatorMap[] =\n{')
+       stream.extend(propertyStructWrappers)
        stream.append('};\n} // vk\n')
        writeInlFile(filename, INL_HEADER, stream)
 
 def genericDeviceFeaturesWriter(dfDefs, pattern, filename):
        stream = []
-       for _, _, extStruct, _, _, _ in dfDefs:
-               nameSubStr = extStruct.replace("VkPhysicalDevice", "").replace("KHR", "").replace("EXT", "").replace("NV", "")
+       for sType, sSuffix, extStruct, _, _, _ in dfDefs:
+               nameSubStr = extStruct.replace("VkPhysicalDevice", "").replace("KHR", "").replace("NV", "")
                stream.append(pattern.format(extStruct, nameSubStr))
        writeInlFile(filename, INL_HEADER, indentLines(stream))
 
-def writeDefaultDeviceDefs(dfDefs, filename):
+def writeDeviceFeaturesDefaultDeviceDefs(dfDefs, filename):
        pattern = "const {0}&\tget{1}\t(void) const {{ return m_deviceFeatures.getFeatureType<{0}>();\t}}"
        genericDeviceFeaturesWriter(dfDefs, pattern, filename)
 
-def writeContextDecl(dfDefs, filename):
+def writeDeviceFeaturesContextDecl(dfDefs, filename):
        pattern = "const vk::{0}&\tget{1}\t(void) const;"
        genericDeviceFeaturesWriter(dfDefs, pattern, filename)
 
-def writeContextDefs(dfDefs, filename):
+def writeDeviceFeaturesContextDefs(dfDefs, filename):
        pattern = "const vk::{0}&\tContext::get{1}\t(void) const {{ return m_device->get{1}();\t}}"
        genericDeviceFeaturesWriter(dfDefs, pattern, filename)
 
+def genericDevicePropertiesWriter(dfDefs, pattern, filename):
+       stream = []
+       for _, _, extStruct, _, _, _ in dfDefs:
+               nameSubStr = extStruct.replace("VkPhysicalDevice", "").replace("KHR", "").replace("NV", "")
+               stream.append(pattern.format(extStruct, nameSubStr))
+       writeInlFile(filename, INL_HEADER, indentLines(stream))
+
+def writeDevicePropertiesDefaultDeviceDefs(dfDefs, filename):
+       pattern = "const {0}&\tget{1}\t(void) const {{ return m_devicePropertiesFull.getPropertyType<{0}>();\t}}"
+       genericDevicePropertiesWriter(dfDefs, pattern, filename)
+
+def writeDevicePropertiesContextDecl(dfDefs, filename):
+       pattern = "const vk::{0}&\tget{1}\t(void) const;"
+       genericDevicePropertiesWriter(dfDefs, pattern, filename)
+
+def writeDevicePropertiesContextDefs(dfDefs, filename):
+       pattern = "const vk::{0}&\tContext::get{1}\t(void) const {{ return m_device->get{1}();\t}}"
+       genericDevicePropertiesWriter(dfDefs, pattern, filename)
+
 def splitWithQuotation(line):
        result = []
        splitted = re.findall(r'[^"\s]\S*|".+?"', line)
@@ -1643,7 +1825,7 @@ def writeMandatoryFeatures(filename):
                                        dictStructs[m[0]].append(allRequirements[0])
 
        stream.extend(['bool checkMandatoryFeatures(const vkt::Context& context)\n{',
-                                  '\tif ( !context.isInstanceFunctionalitySupported("VK_KHR_get_physical_device_properties2") )',
+                                  '\tif (!context.isInstanceFunctionalitySupported("VK_KHR_get_physical_device_properties2"))',
                                   '\t\tTCU_THROW(NotSupportedError, "Extension VK_KHR_get_physical_device_properties2 is not present");',
                                   '',
                                   '\tVkPhysicalDevice\t\t\t\t\tphysicalDevice\t\t= context.getPhysicalDevice();',
@@ -1659,6 +1841,10 @@ def writeMandatoryFeatures(filename):
 
        listStruct = sorted(dictStructs.items(), key=lambda tup: tup[0]) # sort to have same results for py2 and py3
        for k, v in listStruct:
+               if (v[1].startswith("ApiVersion")):
+                       cond = '\tif (context.contextSupports(vk::' + v[1] + '))'
+               else:
+                       cond = '\tif (vk::isDeviceExtensionSupported(context.getUsedApiVersion(), context.getDeviceExtensions(), "' + v[1] + '"))'
                stream.extend(['\tvk::' + k + ' ' + v[0]+ ';',
                                        '\tdeMemset(&' + v[0] + ', 0, sizeof(' + v[0] + '));',
                                        ''])
@@ -1741,41 +1927,47 @@ if __name__ == "__main__":
        instanceFuncs   = [Function.TYPE_INSTANCE]
        deviceFuncs             = [Function.TYPE_DEVICE]
 
-       dfd                                                     = generateDeviceFeaturesDefs(src)
-       writeDeviceFeatures                     (dfd, os.path.join(VULKAN_DIR, "vkDeviceFeatures.inl"))
-       writeDefaultDeviceDefs          (dfd, os.path.join(VULKAN_DIR, "vkDeviceFeaturesForDefaultDeviceDefs.inl"))
-       writeContextDecl                        (dfd, os.path.join(VULKAN_DIR, "vkDeviceFeaturesForContextDecl.inl"))
-       writeContextDefs                        (dfd, os.path.join(VULKAN_DIR, "vkDeviceFeaturesForContextDefs.inl"))
-
-       writeHandleType                         (api, os.path.join(VULKAN_DIR, "vkHandleType.inl"))
-       writeBasicTypes                         (api, os.path.join(VULKAN_DIR, "vkBasicTypes.inl"))
-       writeCompositeTypes                     (api, os.path.join(VULKAN_DIR, "vkStructTypes.inl"))
-       writeInterfaceDecl                      (api, os.path.join(VULKAN_DIR, "vkVirtualPlatformInterface.inl"),               platformFuncs,  False)
-       writeInterfaceDecl                      (api, os.path.join(VULKAN_DIR, "vkVirtualInstanceInterface.inl"),               instanceFuncs,  False)
-       writeInterfaceDecl                      (api, os.path.join(VULKAN_DIR, "vkVirtualDeviceInterface.inl"),                 deviceFuncs,    False)
-       writeInterfaceDecl                      (api, os.path.join(VULKAN_DIR, "vkConcretePlatformInterface.inl"),              platformFuncs,  True)
-       writeInterfaceDecl                      (api, os.path.join(VULKAN_DIR, "vkConcreteInstanceInterface.inl"),              instanceFuncs,  True)
-       writeInterfaceDecl                      (api, os.path.join(VULKAN_DIR, "vkConcreteDeviceInterface.inl"),                deviceFuncs,    True)
-       writeFunctionPtrTypes           (api, os.path.join(VULKAN_DIR, "vkFunctionPointerTypes.inl"))
-       writeFunctionPointers           (api, os.path.join(VULKAN_DIR, "vkPlatformFunctionPointers.inl"),               platformFuncs)
-       writeFunctionPointers           (api, os.path.join(VULKAN_DIR, "vkInstanceFunctionPointers.inl"),               instanceFuncs)
-       writeFunctionPointers           (api, os.path.join(VULKAN_DIR, "vkDeviceFunctionPointers.inl"),                 deviceFuncs)
-       writeInitFunctionPointers       (api, os.path.join(VULKAN_DIR, "vkInitPlatformFunctionPointers.inl"),   platformFuncs,  lambda f: f.name != "vkGetInstanceProcAddr")
-       writeInitFunctionPointers       (api, os.path.join(VULKAN_DIR, "vkInitInstanceFunctionPointers.inl"),   instanceFuncs)
-       writeInitFunctionPointers       (api, os.path.join(VULKAN_DIR, "vkInitDeviceFunctionPointers.inl"),             deviceFuncs)
-       writeFuncPtrInterfaceImpl       (api, os.path.join(VULKAN_DIR, "vkPlatformDriverImpl.inl"),                             platformFuncs,  "PlatformDriver")
-       writeFuncPtrInterfaceImpl       (api, os.path.join(VULKAN_DIR, "vkInstanceDriverImpl.inl"),                             instanceFuncs,  "InstanceDriver")
-       writeFuncPtrInterfaceImpl       (api, os.path.join(VULKAN_DIR, "vkDeviceDriverImpl.inl"),                               deviceFuncs,    "DeviceDriver")
-       writeStrUtilProto                       (api, os.path.join(VULKAN_DIR, "vkStrUtil.inl"))
-       writeStrUtilImpl                        (api, os.path.join(VULKAN_DIR, "vkStrUtilImpl.inl"))
-       writeRefUtilProto                       (api, os.path.join(VULKAN_DIR, "vkRefUtil.inl"))
-       writeRefUtilImpl                        (api, os.path.join(VULKAN_DIR, "vkRefUtilImpl.inl"))
-       writeStructTraitsImpl           (api, os.path.join(VULKAN_DIR, "vkGetStructureTypeImpl.inl"))
-       writeNullDriverImpl                     (api, os.path.join(VULKAN_DIR, "vkNullDriverImpl.inl"))
-       writeTypeUtil                           (api, os.path.join(VULKAN_DIR, "vkTypeUtil.inl"))
-       writeSupportedExtenions         (api, os.path.join(VULKAN_DIR, "vkSupportedExtensions.inl"))
-       writeCoreFunctionalities        (api, os.path.join(VULKAN_DIR, "vkCoreFunctionalities.inl"))
-       writeExtensionFunctions         (api, os.path.join(VULKAN_DIR, "vkExtensionFunctions.inl"))
-       writeMandatoryFeatures          (     os.path.join(VULKAN_DIR, "vkMandatoryFeatures.inl"))
-       writeExtensionList                      (     os.path.join(VULKAN_DIR, "vkInstanceExtensions.inl"),                             'INSTANCE')
-       writeExtensionList                      (     os.path.join(VULKAN_DIR, "vkDeviceExtensions.inl"),                               'DEVICE')
+       dfd                                                                             = generateDeviceFeaturesDefs(src)
+       writeDeviceFeatures                                             (api, dfd, os.path.join(VULKAN_DIR, "vkDeviceFeatures.inl"))
+       writeDeviceFeaturesDefaultDeviceDefs    (dfd, os.path.join(VULKAN_DIR, "vkDeviceFeaturesForDefaultDeviceDefs.inl"))
+       writeDeviceFeaturesContextDecl                  (dfd, os.path.join(VULKAN_DIR, "vkDeviceFeaturesForContextDecl.inl"))
+       writeDeviceFeaturesContextDefs                  (dfd, os.path.join(VULKAN_DIR, "vkDeviceFeaturesForContextDefs.inl"))
+
+       dpd                                                                             = generateDevicePropertiesDefs(src)
+       writeDeviceProperties                                   (dpd, os.path.join(VULKAN_DIR, "vkDeviceProperties.inl"))
+       writeDevicePropertiesDefaultDeviceDefs  (dpd, os.path.join(VULKAN_DIR, "vkDevicePropertiesForDefaultDeviceDefs.inl"))
+       writeDevicePropertiesContextDecl                (dpd, os.path.join(VULKAN_DIR, "vkDevicePropertiesForContextDecl.inl"))
+       writeDevicePropertiesContextDefs                (dpd, os.path.join(VULKAN_DIR, "vkDevicePropertiesForContextDefs.inl"))
+
+       writeHandleType                                                 (api, os.path.join(VULKAN_DIR, "vkHandleType.inl"))
+       writeBasicTypes                                                 (api, os.path.join(VULKAN_DIR, "vkBasicTypes.inl"))
+       writeCompositeTypes                                             (api, os.path.join(VULKAN_DIR, "vkStructTypes.inl"))
+       writeInterfaceDecl                                              (api, os.path.join(VULKAN_DIR, "vkVirtualPlatformInterface.inl"),               platformFuncs,  False)
+       writeInterfaceDecl                                              (api, os.path.join(VULKAN_DIR, "vkVirtualInstanceInterface.inl"),               instanceFuncs,  False)
+       writeInterfaceDecl                                              (api, os.path.join(VULKAN_DIR, "vkVirtualDeviceInterface.inl"),                 deviceFuncs,    False)
+       writeInterfaceDecl                                              (api, os.path.join(VULKAN_DIR, "vkConcretePlatformInterface.inl"),              platformFuncs,  True)
+       writeInterfaceDecl                                              (api, os.path.join(VULKAN_DIR, "vkConcreteInstanceInterface.inl"),              instanceFuncs,  True)
+       writeInterfaceDecl                                              (api, os.path.join(VULKAN_DIR, "vkConcreteDeviceInterface.inl"),                deviceFuncs,    True)
+       writeFunctionPtrTypes                                   (api, os.path.join(VULKAN_DIR, "vkFunctionPointerTypes.inl"))
+       writeFunctionPointers                                   (api, os.path.join(VULKAN_DIR, "vkPlatformFunctionPointers.inl"),               platformFuncs)
+       writeFunctionPointers                                   (api, os.path.join(VULKAN_DIR, "vkInstanceFunctionPointers.inl"),               instanceFuncs)
+       writeFunctionPointers                                   (api, os.path.join(VULKAN_DIR, "vkDeviceFunctionPointers.inl"),                 deviceFuncs)
+       writeInitFunctionPointers                               (api, os.path.join(VULKAN_DIR, "vkInitPlatformFunctionPointers.inl"),   platformFuncs,  lambda f: f.name != "vkGetInstanceProcAddr")
+       writeInitFunctionPointers                               (api, os.path.join(VULKAN_DIR, "vkInitInstanceFunctionPointers.inl"),   instanceFuncs)
+       writeInitFunctionPointers                               (api, os.path.join(VULKAN_DIR, "vkInitDeviceFunctionPointers.inl"),             deviceFuncs)
+       writeFuncPtrInterfaceImpl                               (api, os.path.join(VULKAN_DIR, "vkPlatformDriverImpl.inl"),                             platformFuncs,  "PlatformDriver")
+       writeFuncPtrInterfaceImpl                               (api, os.path.join(VULKAN_DIR, "vkInstanceDriverImpl.inl"),                             instanceFuncs,  "InstanceDriver")
+       writeFuncPtrInterfaceImpl                               (api, os.path.join(VULKAN_DIR, "vkDeviceDriverImpl.inl"),                               deviceFuncs,    "DeviceDriver")
+       writeStrUtilProto                                               (api, os.path.join(VULKAN_DIR, "vkStrUtil.inl"))
+       writeStrUtilImpl                                                (api, os.path.join(VULKAN_DIR, "vkStrUtilImpl.inl"))
+       writeRefUtilProto                                               (api, os.path.join(VULKAN_DIR, "vkRefUtil.inl"))
+       writeRefUtilImpl                                                (api, os.path.join(VULKAN_DIR, "vkRefUtilImpl.inl"))
+       writeStructTraitsImpl                                   (api, os.path.join(VULKAN_DIR, "vkGetStructureTypeImpl.inl"))
+       writeNullDriverImpl                                             (api, os.path.join(VULKAN_DIR, "vkNullDriverImpl.inl"))
+       writeTypeUtil                                                   (api, os.path.join(VULKAN_DIR, "vkTypeUtil.inl"))
+       writeSupportedExtenions                                 (api, os.path.join(VULKAN_DIR, "vkSupportedExtensions.inl"))
+       writeCoreFunctionalities                                (api, os.path.join(VULKAN_DIR, "vkCoreFunctionalities.inl"))
+       writeExtensionFunctions                                 (api, os.path.join(VULKAN_DIR, "vkExtensionFunctions.inl"))
+       writeMandatoryFeatures                                  (     os.path.join(VULKAN_DIR, "vkMandatoryFeatures.inl"))
+       writeExtensionList                                              (     os.path.join(VULKAN_DIR, "vkInstanceExtensions.inl"),                             'INSTANCE')
+       writeExtensionList                                              (     os.path.join(VULKAN_DIR, "vkDeviceExtensions.inl"),                               'DEVICE')
index 2a39b49..d638b4b 100644 (file)
@@ -1,7 +1,7 @@
 // This is manually created file used by gen_framework.py.
 // It contains additional data for extensions that are required to
 // generate code for cts. Currently every line contains:
-// * extension name (at this point only KHR extensions are needed)
+// * extension name
 // * information wheter this is device or instance extension
 // * version number in which this extension is part of core
 
@@ -25,7 +25,7 @@ VK_KHR_surface_protected_capabilities         INSTANCE
 VK_KHR_swapchain                                                       DEVICE
 VK_KHR_swapchain_mutable_format                                DEVICE
 VK_KHR_display_swapchain                                       DEVICE
-VK_KHR_sampler_mirror_clamp_to_edge                    DEVICE
+VK_KHR_sampler_mirror_clamp_to_edge                    DEVICE 1_2_0
 VK_KHR_multiview                                                       DEVICE 1_1_0
 VK_KHR_device_group                                                    DEVICE 1_1_0
 VK_KHR_shader_draw_parameters                          DEVICE 1_1_0
@@ -38,12 +38,12 @@ VK_KHR_external_semaphore                                   DEVICE 1_1_0
 VK_KHR_external_semaphore_win32                                DEVICE
 VK_KHR_external_semaphore_fd                           DEVICE
 VK_KHR_push_descriptor                                         DEVICE
-VK_KHR_shader_float16_int8                                     DEVICE
+VK_KHR_shader_float16_int8                                     DEVICE 1_2_0
 VK_KHR_16bit_storage                                           DEVICE 1_1_0
 VK_KHR_incremental_present                                     DEVICE
-VK_KHR_8bit_storage                                                    DEVICE
+VK_KHR_8bit_storage                                                    DEVICE 1_2_0
 VK_KHR_descriptor_update_template                      DEVICE 1_1_0
-VK_KHR_create_renderpass2                                      DEVICE
+VK_KHR_create_renderpass2                                      DEVICE 1_2_0
 VK_KHR_shared_presentable_image                                DEVICE
 VK_KHR_external_fence                                          DEVICE 1_1_0
 VK_KHR_external_fence_win32                                    DEVICE
@@ -54,22 +54,29 @@ VK_KHR_dedicated_allocation                                 DEVICE 1_1_0
 VK_KHR_storage_buffer_storage_class                    DEVICE 1_1_0
 VK_KHR_relaxed_block_layout                                    DEVICE 1_1_0
 VK_KHR_get_memory_requirements2                                DEVICE 1_1_0
-VK_KHR_image_format_list                                       DEVICE
+VK_KHR_image_format_list                                       DEVICE 1_2_0
 VK_KHR_sampler_ycbcr_conversion                                DEVICE 1_1_0
 VK_KHR_bind_memory2                                                    DEVICE 1_1_0
 VK_KHR_maintenance3                                                    DEVICE 1_1_0
-VK_KHR_driver_properties                                       DEVICE
-VK_KHR_shader_float_controls                           DEVICE
-VK_KHR_depth_stencil_resolve                           DEVICE
-VK_KHR_draw_indirect_count                                     DEVICE
-VK_KHR_shader_atomic_int64                                     DEVICE
-VK_KHR_vulkan_memory_model                                     DEVICE
-VK_KHR_uniform_buffer_standard_layout          DEVICE
-VK_KHR_imageless_framebuffer                           DEVICE
+VK_KHR_driver_properties                                       DEVICE 1_2_0
+VK_KHR_shader_float_controls                           DEVICE 1_2_0
+VK_KHR_depth_stencil_resolve                           DEVICE 1_2_0
+VK_KHR_draw_indirect_count                                     DEVICE 1_2_0
+VK_KHR_shader_atomic_int64                                     DEVICE 1_2_0
+VK_KHR_vulkan_memory_model                                     DEVICE 1_2_0
+VK_KHR_uniform_buffer_standard_layout          DEVICE 1_2_0
+VK_KHR_imageless_framebuffer                           DEVICE 1_2_0
+VK_KHR_shader_subgroup_extended_types          DEVICE 1_2_0
+VK_EXT_sampler_filter_minmax                           DEVICE 1_2_0
+VK_EXT_shader_viewport_index_layer                     DEVICE 1_2_0
+VK_EXT_descriptor_indexing                                     DEVICE 1_2_0
+VK_EXT_scalar_block_layout                                     DEVICE 1_2_0
+VK_KHR_buffer_device_address                           DEVICE 1_2_0
+VK_EXT_host_query_reset                                                DEVICE 1_2_0
+VK_KHR_separate_depth_stencil_layouts          DEVICE 1_2_0
+VK_KHR_timeline_semaphore                                      DEVICE 1_2_0
+VK_KHR_spirv_1_4                                                       DEVICE 1_2_0
+VK_EXT_separate_stencil_usage                          DEVICE 1_2_0
 VK_KHR_pipeline_executable_properties          DEVICE
-VK_KHR_timeline_semaphore                                      DEVICE
 VK_KHR_shader_clock                                                    DEVICE
-VK_KHR_spirv_1_4                                                       DEVICE
-VK_KHR_shader_subgroup_extended_types          DEVICE
-VK_KHR_separate_depth_stencil_layouts          DEVICE
 VK_KHR_performance_query                                       DEVICE
\ No newline at end of file
index 19e151c..643dd0b 100644 (file)
@@ -10,6 +10,7 @@ VkPhysicalDeviceFeatures                                                              robustBufferAccess                                                                      REQUIREMENTS ()
 VkPhysicalDeviceFeatures                                                               shaderSampledImageArrayDynamicIndexing                          REQUIREMENTS ( VK_EXT_descriptor_indexing )
 VkPhysicalDeviceFeatures                                                               shaderStorageBufferArrayDynamicIndexing                         REQUIREMENTS ( VK_EXT_descriptor_indexing )
 VkPhysicalDevice8BitStorageFeaturesKHR                                 storageBuffer8BitAccess                                                         REQUIREMENTS ( VK_KHR_8bit_storage )
+VkPhysicalDeviceVulkan11Features                                               multiview                                                                                       REQUIREMENTS ( "ApiVersion(1, 2, 0)" )
 VkPhysicalDeviceMultiviewFeatures                                              multiview                                                                                       REQUIREMENTS ( "ApiVersion(1, 1, 0)" )
 VkPhysicalDeviceMultiviewFeatures                                              multiview                                                                                       REQUIREMENTS ( VK_KHR_multiview )
 VkPhysicalDeviceVariablePointersFeatures                               variablePointersStorageBuffer                                           REQUIREMENTS ( VK_KHR_variable_pointers )
@@ -31,4 +32,25 @@ VkPhysicalDeviceInlineUniformBlockFeaturesEXT                        descriptorBindingInlineUniformBl
 VkPhysicalDeviceScalarBlockLayoutFeaturesEXT                   scalarBlockLayout                                                                       REQUIREMENTS ( VK_EXT_scalar_block_layout )
 VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR uniformBufferStandardLayout                                                     REQUIREMENTS ( VK_KHR_uniform_buffer_standard_layout )
 VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR        pipelineExecutableInfo                                                          REQUIREMENTS ( VK_KHR_pipeline_executable_properties )
+VkPhysicalDeviceSubgroupSizeControlFeaturesEXT                 subgroupSizeControl                                                                     REQUIREMENTS ( VK_EXT_subgroup_size_control )
+VkPhysicalDeviceSubgroupSizeControlFeaturesEXT                 computeFullSubgroups                                                            REQUIREMENTS ( VK_EXT_subgroup_size_control )
+VkPhysicalDeviceVulkan12Features                                               subgroupBroadcastDynamicId                                                      REQUIREMENTS ( "ApiVersion(1, 2, 0)" )
+VkPhysicalDeviceVulkan12Features                                               imagelessFramebuffer                                                            REQUIREMENTS ( "ApiVersion(1, 2, 0)" )
+VkPhysicalDeviceVulkan12Features                                               uniformBufferStandardLayout                                                     REQUIREMENTS ( "ApiVersion(1, 2, 0)" )
+VkPhysicalDeviceVulkan12Features                                               separateDepthStencilLayouts                                                     REQUIREMENTS ( "ApiVersion(1, 2, 0)" )
+VkPhysicalDeviceVulkan12Features                                               hostQueryReset                                                                          REQUIREMENTS ( "ApiVersion(1, 2, 0)" )
 VkPhysicalDeviceTimelineSemaphoreFeaturesKHR                   timelineSemaphore                                                                       REQUIREMENTS ( VK_KHR_timeline_semaphore )
+VkPhysicalDeviceVulkan12Features                                               timelineSemaphore                                                                       REQUIREMENTS ( "ApiVersion(1, 2, 0)" )
+VkPhysicalDeviceVulkan12Features                                               shaderUniformTexelBufferArrayDynamicIndexing            REQUIREMENTS ( "ApiVersion(1, 2, 0)" physicalDeviceVulkan12Features.descriptorIndexing )
+VkPhysicalDeviceVulkan12Features                                               shaderStorageTexelBufferArrayDynamicIndexing            REQUIREMENTS ( "ApiVersion(1, 2, 0)" physicalDeviceVulkan12Features.descriptorIndexing )
+VkPhysicalDeviceVulkan12Features                                               shaderSampledImageArrayNonUniformIndexing                       REQUIREMENTS ( "ApiVersion(1, 2, 0)" physicalDeviceVulkan12Features.descriptorIndexing )
+VkPhysicalDeviceVulkan12Features                                               shaderStorageBufferArrayNonUniformIndexing                      REQUIREMENTS ( "ApiVersion(1, 2, 0)" physicalDeviceVulkan12Features.descriptorIndexing )
+VkPhysicalDeviceVulkan12Features                                               shaderUniformTexelBufferArrayNonUniformIndexing         REQUIREMENTS ( "ApiVersion(1, 2, 0)" physicalDeviceVulkan12Features.descriptorIndexing )
+VkPhysicalDeviceVulkan12Features                                               descriptorBindingSampledImageUpdateAfterBind            REQUIREMENTS ( "ApiVersion(1, 2, 0)" physicalDeviceVulkan12Features.descriptorIndexing )
+VkPhysicalDeviceVulkan12Features                                               descriptorBindingStorageImageUpdateAfterBind            REQUIREMENTS ( "ApiVersion(1, 2, 0)" physicalDeviceVulkan12Features.descriptorIndexing )
+VkPhysicalDeviceVulkan12Features                                               descriptorBindingStorageBufferUpdateAfterBind           REQUIREMENTS ( "ApiVersion(1, 2, 0)" physicalDeviceVulkan12Features.descriptorIndexing )
+VkPhysicalDeviceVulkan12Features                                               descriptorBindingUniformTexelBufferUpdateAfterBind      REQUIREMENTS ( "ApiVersion(1, 2, 0)" physicalDeviceVulkan12Features.descriptorIndexing )
+VkPhysicalDeviceVulkan12Features                                               descriptorBindingStorageTexelBufferUpdateAfterBind      REQUIREMENTS ( "ApiVersion(1, 2, 0)" physicalDeviceVulkan12Features.descriptorIndexing )
+VkPhysicalDeviceVulkan12Features                                               descriptorBindingUpdateUnusedWhilePending                       REQUIREMENTS ( "ApiVersion(1, 2, 0)" physicalDeviceVulkan12Features.descriptorIndexing )
+VkPhysicalDeviceVulkan12Features                                               descriptorBindingPartiallyBound                                         REQUIREMENTS ( "ApiVersion(1, 2, 0)" physicalDeviceVulkan12Features.descriptorIndexing )
+VkPhysicalDeviceVulkan12Features                                               runtimeDescriptorArray                                                          REQUIREMENTS ( "ApiVersion(1, 2, 0)" physicalDeviceVulkan12Features.descriptorIndexing )
index 5560b39..d7c166d 100644 (file)
@@ -135,6 +135,8 @@ typedef enum VkResult {
     VK_ERROR_FRAGMENTED_POOL = -12,
     VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000,
     VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003,
+    VK_ERROR_FRAGMENTATION = -1000161000,
+    VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000,
     VK_ERROR_SURFACE_LOST_KHR = -1000000000,
     VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001,
     VK_SUBOPTIMAL_KHR = 1000001003,
@@ -143,12 +145,13 @@ typedef enum VkResult {
     VK_ERROR_VALIDATION_FAILED_EXT = -1000011001,
     VK_ERROR_INVALID_SHADER_NV = -1000012000,
     VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000,
-    VK_ERROR_FRAGMENTATION_EXT = -1000161000,
     VK_ERROR_NOT_PERMITTED_EXT = -1000174001,
-    VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = -1000244000,
     VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = -1000255000,
     VK_ERROR_OUT_OF_POOL_MEMORY_KHR = VK_ERROR_OUT_OF_POOL_MEMORY,
     VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = VK_ERROR_INVALID_EXTERNAL_HANDLE,
+    VK_ERROR_FRAGMENTATION_EXT = VK_ERROR_FRAGMENTATION,
+    VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS,
+    VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS,
     VK_RESULT_BEGIN_RANGE = VK_ERROR_FRAGMENTED_POOL,
     VK_RESULT_END_RANGE = VK_INCOMPLETE,
     VK_RESULT_RANGE_SIZE = (VK_INCOMPLETE - VK_ERROR_FRAGMENTED_POOL + 1),
@@ -270,6 +273,56 @@ typedef enum VkStructureType {
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000,
     VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = 1000063000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = 49,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = 50,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = 51,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = 52,
+    VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO = 1000147000,
+    VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 = 1000109000,
+    VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 = 1000109001,
+    VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 = 1000109002,
+    VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 = 1000109003,
+    VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 = 1000109004,
+    VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO = 1000109005,
+    VK_STRUCTURE_TYPE_SUBPASS_END_INFO = 1000109006,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = 1000177000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES = 1000196000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = 1000180000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = 1000082000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = 1000197000,
+    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = 1000161000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = 1000161001,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = 1000161002,
+    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = 1000161003,
+    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = 1000161004,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = 1000199000,
+    VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = 1000199001,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = 1000221000,
+    VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO = 1000246000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = 1000130000,
+    VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO = 1000130001,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = 1000211000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = 1000108000,
+    VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = 1000108001,
+    VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = 1000108002,
+    VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO = 1000108003,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = 1000253000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = 1000175000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = 1000241000,
+    VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT = 1000241001,
+    VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = 1000241002,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = 1000261000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = 1000207000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = 1000207001,
+    VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO = 1000207002,
+    VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO = 1000207003,
+    VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO = 1000207004,
+    VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO = 1000207005,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = 1000257000,
+    VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO = 1000244001,
+    VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = 1000257002,
+    VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = 1000257003,
+    VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = 1000257004,
     VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000,
     VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001,
     VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007,
@@ -329,7 +382,6 @@ typedef enum VkStructureType {
     VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001,
     VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR = 1000082000,
     VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000,
     VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX = 1000086000,
     VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX = 1000086001,
@@ -353,17 +405,6 @@ typedef enum VkStructureType {
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = 1000102000,
     VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = 1000102001,
     VK_STRUCTURE_TYPE_HDR_METADATA_EXT = 1000105000,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = 1000108000,
-    VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = 1000108001,
-    VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = 1000108002,
-    VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = 1000108003,
-    VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = 1000109000,
-    VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = 1000109001,
-    VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = 1000109002,
-    VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = 1000109003,
-    VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = 1000109004,
-    VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = 1000109005,
-    VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = 1000109006,
     VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = 1000111000,
     VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114000,
     VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114001,
@@ -398,8 +439,6 @@ typedef enum VkStructureType {
     VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129003,
     VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004,
     VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = 1000129005,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000,
-    VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT = 1000138000,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = 1000138001,
     VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = 1000138002,
@@ -409,7 +448,6 @@ typedef enum VkStructureType {
     VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT = 1000143002,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT = 1000143003,
     VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT = 1000143004,
-    VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = 1000147000,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT = 1000148000,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT = 1000148001,
     VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = 1000148002,
@@ -425,11 +463,6 @@ typedef enum VkStructureType {
     VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158005,
     VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000,
     VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001,
-    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT = 1000161000,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT = 1000161001,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT = 1000161002,
-    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT = 1000161003,
-    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT = 1000161004,
     VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = 1000164000,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = 1000164001,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = 1000164002,
@@ -450,12 +483,9 @@ typedef enum VkStructureType {
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = 1000170000,
     VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = 1000170001,
     VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = 1000174000,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = 1000175000,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = 1000177000,
     VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT = 1000178000,
     VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT = 1000178001,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT = 1000178002,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = 1000180000,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR = 1000181000,
     VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = 1000183000,
     VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000,
@@ -466,10 +496,6 @@ typedef enum VkStructureType {
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002,
     VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP = 1000191000,
     VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = 1000196000,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = 1000197000,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = 1000199000,
-    VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = 1000199001,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = 1000202000,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = 1000202001,
@@ -479,12 +505,6 @@ typedef enum VkStructureType {
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = 1000205002,
     VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV = 1000206000,
     VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = 1000207000,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = 1000207001,
-    VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR = 1000207002,
-    VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = 1000207003,
-    VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR = 1000207004,
-    VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR = 1000207005,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = 1000209000,
     VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL = 1000210000,
     VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL = 1000210001,
@@ -492,7 +512,6 @@ typedef enum VkStructureType {
     VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL = 1000210003,
     VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL = 1000210004,
     VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = 1000210005,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = 1000211000,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000,
     VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = 1000213000,
     VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = 1000213001,
@@ -501,7 +520,6 @@ typedef enum VkStructureType {
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = 1000218000,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = 1000218001,
     VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = 1000218002,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = 1000221000,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = 1000225000,
     VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = 1000225002,
@@ -512,13 +530,8 @@ typedef enum VkStructureType {
     VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001,
     VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR = 1000239000,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = 1000241000,
-    VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = 1000241001,
-    VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = 1000241002,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000,
-    VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = 1000244001,
     VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002,
-    VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = 1000246000,
     VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = 1000249000,
     VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249001,
@@ -528,7 +541,6 @@ typedef enum VkStructureType {
     VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV = 1000250002,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = 1000251000,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = 1000252000,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = 1000253000,
     VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT = 1000255000,
     VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = 1000255002,
     VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = 1000255001,
@@ -536,7 +548,6 @@ typedef enum VkStructureType {
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = 1000259000,
     VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = 1000259001,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = 1000259002,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = 1000261000,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = 1000269000,
     VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR = 1000269001,
@@ -582,10 +593,22 @@ typedef enum VkStructureType {
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO,
     VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES,
     VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO,
-    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES,
     VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO,
     VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES,
+    VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO,
+    VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO,
+    VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO,
+    VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2,
+    VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2,
+    VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2,
+    VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2,
+    VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2,
+    VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO,
+    VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = VK_STRUCTURE_TYPE_SUBPASS_END_INFO,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO,
     VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES,
     VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO,
@@ -597,11 +620,14 @@ typedef enum VkStructureType {
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES,
     VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS,
     VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES,
+    VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO,
     VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR = VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2,
     VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2,
     VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR = VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2,
     VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2,
     VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2,
+    VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO,
     VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO,
     VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO,
     VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR = VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO,
@@ -610,9 +636,41 @@ typedef enum VkStructureType {
     VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES,
     VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO,
     VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO,
+    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES,
+    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO,
+    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES,
     VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES,
+    VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES,
+    VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO,
+    VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO,
+    VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR = VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO,
+    VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR = VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES,
+    VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT,
+    VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT,
     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT,
+    VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO,
+    VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES,
+    VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO,
+    VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO,
+    VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR = VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO,
+    VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES,
     VK_STRUCTURE_TYPE_BEGIN_RANGE = VK_STRUCTURE_TYPE_APPLICATION_INFO,
     VK_STRUCTURE_TYPE_END_RANGE = VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO,
     VK_STRUCTURE_TYPE_RANGE_SIZE = (VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO - VK_STRUCTURE_TYPE_APPLICATION_INFO + 1),
@@ -988,16 +1046,20 @@ typedef enum VkImageLayout {
     VK_IMAGE_LAYOUT_PREINITIALIZED = 8,
     VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000,
     VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001,
+    VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL = 1000241000,
+    VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL = 1000241001,
+    VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL = 1000241002,
+    VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003,
     VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002,
     VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000,
     VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = 1000164003,
     VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000,
-    VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR = 1000241000,
-    VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR = 1000241001,
-    VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000241002,
-    VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000241003,
     VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL,
     VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL,
+    VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL,
+    VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL,
+    VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL,
+    VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL,
     VK_IMAGE_LAYOUT_BEGIN_RANGE = VK_IMAGE_LAYOUT_UNDEFINED,
     VK_IMAGE_LAYOUT_END_RANGE = VK_IMAGE_LAYOUT_PREINITIALIZED,
     VK_IMAGE_LAYOUT_RANGE_SIZE = (VK_IMAGE_LAYOUT_PREINITIALIZED - VK_IMAGE_LAYOUT_UNDEFINED + 1),
@@ -1445,11 +1507,12 @@ typedef enum VkFormatFeatureFlagBits {
     VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 0x00200000,
     VK_FORMAT_FEATURE_DISJOINT_BIT = 0x00400000,
     VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 0x00800000,
+    VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 0x00010000,
     VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 0x00002000,
-    VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = 0x00010000,
     VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 0x01000000,
     VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = VK_FORMAT_FEATURE_TRANSFER_SRC_BIT,
     VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = VK_FORMAT_FEATURE_TRANSFER_DST_BIT,
+    VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT,
     VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT,
     VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT,
     VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT,
@@ -1657,7 +1720,9 @@ typedef enum VkBufferCreateFlagBits {
     VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002,
     VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 0x00000004,
     VK_BUFFER_CREATE_PROTECTED_BIT = 0x00000008,
-    VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 0x00000010,
+    VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 0x00000010,
+    VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT,
+    VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT,
     VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 } VkBufferCreateFlagBits;
 typedef VkFlags VkBufferCreateFlags;
@@ -1672,11 +1737,13 @@ typedef enum VkBufferUsageFlagBits {
     VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 0x00000040,
     VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 0x00000080,
     VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 0x00000100,
+    VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = 0x00020000,
     VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 0x00000800,
     VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 0x00001000,
     VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 0x00000200,
     VK_BUFFER_USAGE_RAY_TRACING_BIT_NV = 0x00000400,
-    VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = 0x00020000,
+    VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT,
+    VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR = VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT,
     VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 } VkBufferUsageFlagBits;
 typedef VkFlags VkBufferUsageFlags;
@@ -1773,22 +1840,25 @@ typedef enum VkSamplerCreateFlagBits {
 typedef VkFlags VkSamplerCreateFlags;
 
 typedef enum VkDescriptorSetLayoutCreateFlagBits {
+    VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = 0x00000002,
     VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = 0x00000001,
-    VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT = 0x00000002,
+    VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT = VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT,
     VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 } VkDescriptorSetLayoutCreateFlagBits;
 typedef VkFlags VkDescriptorSetLayoutCreateFlags;
 
 typedef enum VkDescriptorPoolCreateFlagBits {
     VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 0x00000001,
-    VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 0x00000002,
+    VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = 0x00000002,
+    VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT,
     VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 } VkDescriptorPoolCreateFlagBits;
 typedef VkFlags VkDescriptorPoolCreateFlags;
 typedef VkFlags VkDescriptorPoolResetFlags;
 
 typedef enum VkFramebufferCreateFlagBits {
-    VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = 0x00000001,
+    VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT = 0x00000001,
+    VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT,
     VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 } VkFramebufferCreateFlagBits;
 typedef VkFlags VkFramebufferCreateFlags;
@@ -4059,7 +4129,11 @@ typedef VkFlags VkPeerMemoryFeatureFlags;
 
 typedef enum VkMemoryAllocateFlagBits {
     VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 0x00000001,
+    VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = 0x00000002,
+    VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 0x00000004,
     VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT,
+    VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR = VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT,
+    VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT,
     VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 } VkMemoryAllocateFlagBits;
 typedef VkFlags VkMemoryAllocateFlags;
@@ -4826,6 +4900,760 @@ VKAPI_ATTR void VKAPI_CALL vkGetDescriptorSetLayoutSupport(
 #endif
 
 
+#define VK_VERSION_1_2 1
+// Vulkan 1.2 version number
+#define VK_API_VERSION_1_2 VK_MAKE_VERSION(1, 2, 0)// Patch version should always be set to 0
+
+typedef uint64_t VkDeviceAddress;
+#define VK_MAX_DRIVER_NAME_SIZE           256
+#define VK_MAX_DRIVER_INFO_SIZE           256
+
+typedef enum VkDriverId {
+    VK_DRIVER_ID_AMD_PROPRIETARY = 1,
+    VK_DRIVER_ID_AMD_OPEN_SOURCE = 2,
+    VK_DRIVER_ID_MESA_RADV = 3,
+    VK_DRIVER_ID_NVIDIA_PROPRIETARY = 4,
+    VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS = 5,
+    VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA = 6,
+    VK_DRIVER_ID_IMAGINATION_PROPRIETARY = 7,
+    VK_DRIVER_ID_QUALCOMM_PROPRIETARY = 8,
+    VK_DRIVER_ID_ARM_PROPRIETARY = 9,
+    VK_DRIVER_ID_GOOGLE_SWIFTSHADER = 10,
+    VK_DRIVER_ID_GGP_PROPRIETARY = 11,
+    VK_DRIVER_ID_BROADCOM_PROPRIETARY = 12,
+    VK_DRIVER_ID_AMD_PROPRIETARY_KHR = VK_DRIVER_ID_AMD_PROPRIETARY,
+    VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = VK_DRIVER_ID_AMD_OPEN_SOURCE,
+    VK_DRIVER_ID_MESA_RADV_KHR = VK_DRIVER_ID_MESA_RADV,
+    VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = VK_DRIVER_ID_NVIDIA_PROPRIETARY,
+    VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS,
+    VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA,
+    VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = VK_DRIVER_ID_IMAGINATION_PROPRIETARY,
+    VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = VK_DRIVER_ID_QUALCOMM_PROPRIETARY,
+    VK_DRIVER_ID_ARM_PROPRIETARY_KHR = VK_DRIVER_ID_ARM_PROPRIETARY,
+    VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR = VK_DRIVER_ID_GOOGLE_SWIFTSHADER,
+    VK_DRIVER_ID_GGP_PROPRIETARY_KHR = VK_DRIVER_ID_GGP_PROPRIETARY,
+    VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR = VK_DRIVER_ID_BROADCOM_PROPRIETARY,
+    VK_DRIVER_ID_BEGIN_RANGE = VK_DRIVER_ID_AMD_PROPRIETARY,
+    VK_DRIVER_ID_END_RANGE = VK_DRIVER_ID_BROADCOM_PROPRIETARY,
+    VK_DRIVER_ID_RANGE_SIZE = (VK_DRIVER_ID_BROADCOM_PROPRIETARY - VK_DRIVER_ID_AMD_PROPRIETARY + 1),
+    VK_DRIVER_ID_MAX_ENUM = 0x7FFFFFFF
+} VkDriverId;
+
+typedef enum VkShaderFloatControlsIndependence {
+    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = 0,
+    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = 1,
+    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = 2,
+    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY,
+    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL,
+    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE,
+    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_BEGIN_RANGE = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY,
+    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_END_RANGE = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE,
+    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_RANGE_SIZE = (VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE - VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY + 1),
+    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM = 0x7FFFFFFF
+} VkShaderFloatControlsIndependence;
+
+typedef enum VkSamplerReductionMode {
+    VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE = 0,
+    VK_SAMPLER_REDUCTION_MODE_MIN = 1,
+    VK_SAMPLER_REDUCTION_MODE_MAX = 2,
+    VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE,
+    VK_SAMPLER_REDUCTION_MODE_MIN_EXT = VK_SAMPLER_REDUCTION_MODE_MIN,
+    VK_SAMPLER_REDUCTION_MODE_MAX_EXT = VK_SAMPLER_REDUCTION_MODE_MAX,
+    VK_SAMPLER_REDUCTION_MODE_BEGIN_RANGE = VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE,
+    VK_SAMPLER_REDUCTION_MODE_END_RANGE = VK_SAMPLER_REDUCTION_MODE_MAX,
+    VK_SAMPLER_REDUCTION_MODE_RANGE_SIZE = (VK_SAMPLER_REDUCTION_MODE_MAX - VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE + 1),
+    VK_SAMPLER_REDUCTION_MODE_MAX_ENUM = 0x7FFFFFFF
+} VkSamplerReductionMode;
+
+typedef enum VkSemaphoreType {
+    VK_SEMAPHORE_TYPE_BINARY = 0,
+    VK_SEMAPHORE_TYPE_TIMELINE = 1,
+    VK_SEMAPHORE_TYPE_BINARY_KHR = VK_SEMAPHORE_TYPE_BINARY,
+    VK_SEMAPHORE_TYPE_TIMELINE_KHR = VK_SEMAPHORE_TYPE_TIMELINE,
+    VK_SEMAPHORE_TYPE_BEGIN_RANGE = VK_SEMAPHORE_TYPE_BINARY,
+    VK_SEMAPHORE_TYPE_END_RANGE = VK_SEMAPHORE_TYPE_TIMELINE,
+    VK_SEMAPHORE_TYPE_RANGE_SIZE = (VK_SEMAPHORE_TYPE_TIMELINE - VK_SEMAPHORE_TYPE_BINARY + 1),
+    VK_SEMAPHORE_TYPE_MAX_ENUM = 0x7FFFFFFF
+} VkSemaphoreType;
+
+typedef enum VkResolveModeFlagBits {
+    VK_RESOLVE_MODE_NONE = 0,
+    VK_RESOLVE_MODE_SAMPLE_ZERO_BIT = 0x00000001,
+    VK_RESOLVE_MODE_AVERAGE_BIT = 0x00000002,
+    VK_RESOLVE_MODE_MIN_BIT = 0x00000004,
+    VK_RESOLVE_MODE_MAX_BIT = 0x00000008,
+    VK_RESOLVE_MODE_NONE_KHR = VK_RESOLVE_MODE_NONE,
+    VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = VK_RESOLVE_MODE_SAMPLE_ZERO_BIT,
+    VK_RESOLVE_MODE_AVERAGE_BIT_KHR = VK_RESOLVE_MODE_AVERAGE_BIT,
+    VK_RESOLVE_MODE_MIN_BIT_KHR = VK_RESOLVE_MODE_MIN_BIT,
+    VK_RESOLVE_MODE_MAX_BIT_KHR = VK_RESOLVE_MODE_MAX_BIT,
+    VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkResolveModeFlagBits;
+typedef VkFlags VkResolveModeFlags;
+
+typedef enum VkDescriptorBindingFlagBits {
+    VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = 0x00000001,
+    VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = 0x00000002,
+    VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = 0x00000004,
+    VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = 0x00000008,
+    VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT = VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT,
+    VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT = VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT,
+    VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT = VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT,
+    VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT = VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT,
+    VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkDescriptorBindingFlagBits;
+typedef VkFlags VkDescriptorBindingFlags;
+
+typedef enum VkSemaphoreWaitFlagBits {
+    VK_SEMAPHORE_WAIT_ANY_BIT = 0x00000001,
+    VK_SEMAPHORE_WAIT_ANY_BIT_KHR = VK_SEMAPHORE_WAIT_ANY_BIT,
+    VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkSemaphoreWaitFlagBits;
+typedef VkFlags VkSemaphoreWaitFlags;
+typedef struct VkPhysicalDeviceVulkan11Features {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           storageBuffer16BitAccess;
+    VkBool32           uniformAndStorageBuffer16BitAccess;
+    VkBool32           storagePushConstant16;
+    VkBool32           storageInputOutput16;
+    VkBool32           multiview;
+    VkBool32           multiviewGeometryShader;
+    VkBool32           multiviewTessellationShader;
+    VkBool32           variablePointersStorageBuffer;
+    VkBool32           variablePointers;
+    VkBool32           protectedMemory;
+    VkBool32           samplerYcbcrConversion;
+    VkBool32           shaderDrawParameters;
+} VkPhysicalDeviceVulkan11Features;
+
+typedef struct VkPhysicalDeviceVulkan11Properties {
+    VkStructureType            sType;
+    void*                      pNext;
+    uint8_t                    deviceUUID[VK_UUID_SIZE];
+    uint8_t                    driverUUID[VK_UUID_SIZE];
+    uint8_t                    deviceLUID[VK_LUID_SIZE];
+    uint32_t                   deviceNodeMask;
+    VkBool32                   deviceLUIDValid;
+    uint32_t                   subgroupSize;
+    VkShaderStageFlags         subgroupSupportedStages;
+    VkSubgroupFeatureFlags     subgroupSupportedOperations;
+    VkBool32                   subgroupQuadOperationsInAllStages;
+    VkPointClippingBehavior    pointClippingBehavior;
+    uint32_t                   maxMultiviewViewCount;
+    uint32_t                   maxMultiviewInstanceIndex;
+    VkBool32                   protectedNoFault;
+    uint32_t                   maxPerSetDescriptors;
+    VkDeviceSize               maxMemoryAllocationSize;
+} VkPhysicalDeviceVulkan11Properties;
+
+typedef struct VkPhysicalDeviceVulkan12Features {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           samplerMirrorClampToEdge;
+    VkBool32           drawIndirectCount;
+    VkBool32           storageBuffer8BitAccess;
+    VkBool32           uniformAndStorageBuffer8BitAccess;
+    VkBool32           storagePushConstant8;
+    VkBool32           shaderBufferInt64Atomics;
+    VkBool32           shaderSharedInt64Atomics;
+    VkBool32           shaderFloat16;
+    VkBool32           shaderInt8;
+    VkBool32           descriptorIndexing;
+    VkBool32           shaderInputAttachmentArrayDynamicIndexing;
+    VkBool32           shaderUniformTexelBufferArrayDynamicIndexing;
+    VkBool32           shaderStorageTexelBufferArrayDynamicIndexing;
+    VkBool32           shaderUniformBufferArrayNonUniformIndexing;
+    VkBool32           shaderSampledImageArrayNonUniformIndexing;
+    VkBool32           shaderStorageBufferArrayNonUniformIndexing;
+    VkBool32           shaderStorageImageArrayNonUniformIndexing;
+    VkBool32           shaderInputAttachmentArrayNonUniformIndexing;
+    VkBool32           shaderUniformTexelBufferArrayNonUniformIndexing;
+    VkBool32           shaderStorageTexelBufferArrayNonUniformIndexing;
+    VkBool32           descriptorBindingUniformBufferUpdateAfterBind;
+    VkBool32           descriptorBindingSampledImageUpdateAfterBind;
+    VkBool32           descriptorBindingStorageImageUpdateAfterBind;
+    VkBool32           descriptorBindingStorageBufferUpdateAfterBind;
+    VkBool32           descriptorBindingUniformTexelBufferUpdateAfterBind;
+    VkBool32           descriptorBindingStorageTexelBufferUpdateAfterBind;
+    VkBool32           descriptorBindingUpdateUnusedWhilePending;
+    VkBool32           descriptorBindingPartiallyBound;
+    VkBool32           descriptorBindingVariableDescriptorCount;
+    VkBool32           runtimeDescriptorArray;
+    VkBool32           samplerFilterMinmax;
+    VkBool32           scalarBlockLayout;
+    VkBool32           imagelessFramebuffer;
+    VkBool32           uniformBufferStandardLayout;
+    VkBool32           shaderSubgroupExtendedTypes;
+    VkBool32           separateDepthStencilLayouts;
+    VkBool32           hostQueryReset;
+    VkBool32           timelineSemaphore;
+    VkBool32           bufferDeviceAddress;
+    VkBool32           bufferDeviceAddressCaptureReplay;
+    VkBool32           bufferDeviceAddressMultiDevice;
+    VkBool32           vulkanMemoryModel;
+    VkBool32           vulkanMemoryModelDeviceScope;
+    VkBool32           vulkanMemoryModelAvailabilityVisibilityChains;
+    VkBool32           shaderOutputViewportIndex;
+    VkBool32           shaderOutputLayer;
+    VkBool32           subgroupBroadcastDynamicId;
+} VkPhysicalDeviceVulkan12Features;
+
+typedef struct VkConformanceVersion {
+    uint8_t    major;
+    uint8_t    minor;
+    uint8_t    subminor;
+    uint8_t    patch;
+} VkConformanceVersion;
+
+typedef struct VkPhysicalDeviceVulkan12Properties {
+    VkStructureType                      sType;
+    void*                                pNext;
+    VkDriverId                           driverID;
+    char                                 driverName[VK_MAX_DRIVER_NAME_SIZE];
+    char                                 driverInfo[VK_MAX_DRIVER_INFO_SIZE];
+    VkConformanceVersion                 conformanceVersion;
+    VkShaderFloatControlsIndependence    denormBehaviorIndependence;
+    VkShaderFloatControlsIndependence    roundingModeIndependence;
+    VkBool32                             shaderSignedZeroInfNanPreserveFloat16;
+    VkBool32                             shaderSignedZeroInfNanPreserveFloat32;
+    VkBool32                             shaderSignedZeroInfNanPreserveFloat64;
+    VkBool32                             shaderDenormPreserveFloat16;
+    VkBool32                             shaderDenormPreserveFloat32;
+    VkBool32                             shaderDenormPreserveFloat64;
+    VkBool32                             shaderDenormFlushToZeroFloat16;
+    VkBool32                             shaderDenormFlushToZeroFloat32;
+    VkBool32                             shaderDenormFlushToZeroFloat64;
+    VkBool32                             shaderRoundingModeRTEFloat16;
+    VkBool32                             shaderRoundingModeRTEFloat32;
+    VkBool32                             shaderRoundingModeRTEFloat64;
+    VkBool32                             shaderRoundingModeRTZFloat16;
+    VkBool32                             shaderRoundingModeRTZFloat32;
+    VkBool32                             shaderRoundingModeRTZFloat64;
+    uint32_t                             maxUpdateAfterBindDescriptorsInAllPools;
+    VkBool32                             shaderUniformBufferArrayNonUniformIndexingNative;
+    VkBool32                             shaderSampledImageArrayNonUniformIndexingNative;
+    VkBool32                             shaderStorageBufferArrayNonUniformIndexingNative;
+    VkBool32                             shaderStorageImageArrayNonUniformIndexingNative;
+    VkBool32                             shaderInputAttachmentArrayNonUniformIndexingNative;
+    VkBool32                             robustBufferAccessUpdateAfterBind;
+    VkBool32                             quadDivergentImplicitLod;
+    uint32_t                             maxPerStageDescriptorUpdateAfterBindSamplers;
+    uint32_t                             maxPerStageDescriptorUpdateAfterBindUniformBuffers;
+    uint32_t                             maxPerStageDescriptorUpdateAfterBindStorageBuffers;
+    uint32_t                             maxPerStageDescriptorUpdateAfterBindSampledImages;
+    uint32_t                             maxPerStageDescriptorUpdateAfterBindStorageImages;
+    uint32_t                             maxPerStageDescriptorUpdateAfterBindInputAttachments;
+    uint32_t                             maxPerStageUpdateAfterBindResources;
+    uint32_t                             maxDescriptorSetUpdateAfterBindSamplers;
+    uint32_t                             maxDescriptorSetUpdateAfterBindUniformBuffers;
+    uint32_t                             maxDescriptorSetUpdateAfterBindUniformBuffersDynamic;
+    uint32_t                             maxDescriptorSetUpdateAfterBindStorageBuffers;
+    uint32_t                             maxDescriptorSetUpdateAfterBindStorageBuffersDynamic;
+    uint32_t                             maxDescriptorSetUpdateAfterBindSampledImages;
+    uint32_t                             maxDescriptorSetUpdateAfterBindStorageImages;
+    uint32_t                             maxDescriptorSetUpdateAfterBindInputAttachments;
+    VkResolveModeFlags                   supportedDepthResolveModes;
+    VkResolveModeFlags                   supportedStencilResolveModes;
+    VkBool32                             independentResolveNone;
+    VkBool32                             independentResolve;
+    VkBool32                             filterMinmaxSingleComponentFormats;
+    VkBool32                             filterMinmaxImageComponentMapping;
+    uint64_t                             maxTimelineSemaphoreValueDifference;
+    VkSampleCountFlags                   framebufferIntegerColorSampleCounts;
+} VkPhysicalDeviceVulkan12Properties;
+
+typedef struct VkImageFormatListCreateInfo {
+    VkStructureType    sType;
+    const void*        pNext;
+    uint32_t           viewFormatCount;
+    const VkFormat*    pViewFormats;
+} VkImageFormatListCreateInfo;
+
+typedef struct VkAttachmentDescription2 {
+    VkStructureType                 sType;
+    const void*                     pNext;
+    VkAttachmentDescriptionFlags    flags;
+    VkFormat                        format;
+    VkSampleCountFlagBits           samples;
+    VkAttachmentLoadOp              loadOp;
+    VkAttachmentStoreOp             storeOp;
+    VkAttachmentLoadOp              stencilLoadOp;
+    VkAttachmentStoreOp             stencilStoreOp;
+    VkImageLayout                   initialLayout;
+    VkImageLayout                   finalLayout;
+} VkAttachmentDescription2;
+
+typedef struct VkAttachmentReference2 {
+    VkStructureType       sType;
+    const void*           pNext;
+    uint32_t              attachment;
+    VkImageLayout         layout;
+    VkImageAspectFlags    aspectMask;
+} VkAttachmentReference2;
+
+typedef struct VkSubpassDescription2 {
+    VkStructureType                  sType;
+    const void*                      pNext;
+    VkSubpassDescriptionFlags        flags;
+    VkPipelineBindPoint              pipelineBindPoint;
+    uint32_t                         viewMask;
+    uint32_t                         inputAttachmentCount;
+    const VkAttachmentReference2*    pInputAttachments;
+    uint32_t                         colorAttachmentCount;
+    const VkAttachmentReference2*    pColorAttachments;
+    const VkAttachmentReference2*    pResolveAttachments;
+    const VkAttachmentReference2*    pDepthStencilAttachment;
+    uint32_t                         preserveAttachmentCount;
+    const uint32_t*                  pPreserveAttachments;
+} VkSubpassDescription2;
+
+typedef struct VkSubpassDependency2 {
+    VkStructureType         sType;
+    const void*             pNext;
+    uint32_t                srcSubpass;
+    uint32_t                dstSubpass;
+    VkPipelineStageFlags    srcStageMask;
+    VkPipelineStageFlags    dstStageMask;
+    VkAccessFlags           srcAccessMask;
+    VkAccessFlags           dstAccessMask;
+    VkDependencyFlags       dependencyFlags;
+    int32_t                 viewOffset;
+} VkSubpassDependency2;
+
+typedef struct VkRenderPassCreateInfo2 {
+    VkStructureType                    sType;
+    const void*                        pNext;
+    VkRenderPassCreateFlags            flags;
+    uint32_t                           attachmentCount;
+    const VkAttachmentDescription2*    pAttachments;
+    uint32_t                           subpassCount;
+    const VkSubpassDescription2*       pSubpasses;
+    uint32_t                           dependencyCount;
+    const VkSubpassDependency2*        pDependencies;
+    uint32_t                           correlatedViewMaskCount;
+    const uint32_t*                    pCorrelatedViewMasks;
+} VkRenderPassCreateInfo2;
+
+typedef struct VkSubpassBeginInfo {
+    VkStructureType      sType;
+    const void*          pNext;
+    VkSubpassContents    contents;
+} VkSubpassBeginInfo;
+
+typedef struct VkSubpassEndInfo {
+    VkStructureType    sType;
+    const void*        pNext;
+} VkSubpassEndInfo;
+
+typedef struct VkPhysicalDevice8BitStorageFeatures {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           storageBuffer8BitAccess;
+    VkBool32           uniformAndStorageBuffer8BitAccess;
+    VkBool32           storagePushConstant8;
+} VkPhysicalDevice8BitStorageFeatures;
+
+typedef struct VkPhysicalDeviceDriverProperties {
+    VkStructureType         sType;
+    void*                   pNext;
+    VkDriverId              driverID;
+    char                    driverName[VK_MAX_DRIVER_NAME_SIZE];
+    char                    driverInfo[VK_MAX_DRIVER_INFO_SIZE];
+    VkConformanceVersion    conformanceVersion;
+} VkPhysicalDeviceDriverProperties;
+
+typedef struct VkPhysicalDeviceShaderAtomicInt64Features {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           shaderBufferInt64Atomics;
+    VkBool32           shaderSharedInt64Atomics;
+} VkPhysicalDeviceShaderAtomicInt64Features;
+
+typedef struct VkPhysicalDeviceShaderFloat16Int8Features {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           shaderFloat16;
+    VkBool32           shaderInt8;
+} VkPhysicalDeviceShaderFloat16Int8Features;
+
+typedef struct VkPhysicalDeviceFloatControlsProperties {
+    VkStructureType                      sType;
+    void*                                pNext;
+    VkShaderFloatControlsIndependence    denormBehaviorIndependence;
+    VkShaderFloatControlsIndependence    roundingModeIndependence;
+    VkBool32                             shaderSignedZeroInfNanPreserveFloat16;
+    VkBool32                             shaderSignedZeroInfNanPreserveFloat32;
+    VkBool32                             shaderSignedZeroInfNanPreserveFloat64;
+    VkBool32                             shaderDenormPreserveFloat16;
+    VkBool32                             shaderDenormPreserveFloat32;
+    VkBool32                             shaderDenormPreserveFloat64;
+    VkBool32                             shaderDenormFlushToZeroFloat16;
+    VkBool32                             shaderDenormFlushToZeroFloat32;
+    VkBool32                             shaderDenormFlushToZeroFloat64;
+    VkBool32                             shaderRoundingModeRTEFloat16;
+    VkBool32                             shaderRoundingModeRTEFloat32;
+    VkBool32                             shaderRoundingModeRTEFloat64;
+    VkBool32                             shaderRoundingModeRTZFloat16;
+    VkBool32                             shaderRoundingModeRTZFloat32;
+    VkBool32                             shaderRoundingModeRTZFloat64;
+} VkPhysicalDeviceFloatControlsProperties;
+
+typedef struct VkDescriptorSetLayoutBindingFlagsCreateInfo {
+    VkStructureType                    sType;
+    const void*                        pNext;
+    uint32_t                           bindingCount;
+    const VkDescriptorBindingFlags*    pBindingFlags;
+} VkDescriptorSetLayoutBindingFlagsCreateInfo;
+
+typedef struct VkPhysicalDeviceDescriptorIndexingFeatures {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           shaderInputAttachmentArrayDynamicIndexing;
+    VkBool32           shaderUniformTexelBufferArrayDynamicIndexing;
+    VkBool32           shaderStorageTexelBufferArrayDynamicIndexing;
+    VkBool32           shaderUniformBufferArrayNonUniformIndexing;
+    VkBool32           shaderSampledImageArrayNonUniformIndexing;
+    VkBool32           shaderStorageBufferArrayNonUniformIndexing;
+    VkBool32           shaderStorageImageArrayNonUniformIndexing;
+    VkBool32           shaderInputAttachmentArrayNonUniformIndexing;
+    VkBool32           shaderUniformTexelBufferArrayNonUniformIndexing;
+    VkBool32           shaderStorageTexelBufferArrayNonUniformIndexing;
+    VkBool32           descriptorBindingUniformBufferUpdateAfterBind;
+    VkBool32           descriptorBindingSampledImageUpdateAfterBind;
+    VkBool32           descriptorBindingStorageImageUpdateAfterBind;
+    VkBool32           descriptorBindingStorageBufferUpdateAfterBind;
+    VkBool32           descriptorBindingUniformTexelBufferUpdateAfterBind;
+    VkBool32           descriptorBindingStorageTexelBufferUpdateAfterBind;
+    VkBool32           descriptorBindingUpdateUnusedWhilePending;
+    VkBool32           descriptorBindingPartiallyBound;
+    VkBool32           descriptorBindingVariableDescriptorCount;
+    VkBool32           runtimeDescriptorArray;
+} VkPhysicalDeviceDescriptorIndexingFeatures;
+
+typedef struct VkPhysicalDeviceDescriptorIndexingProperties {
+    VkStructureType    sType;
+    void*              pNext;
+    uint32_t           maxUpdateAfterBindDescriptorsInAllPools;
+    VkBool32           shaderUniformBufferArrayNonUniformIndexingNative;
+    VkBool32           shaderSampledImageArrayNonUniformIndexingNative;
+    VkBool32           shaderStorageBufferArrayNonUniformIndexingNative;
+    VkBool32           shaderStorageImageArrayNonUniformIndexingNative;
+    VkBool32           shaderInputAttachmentArrayNonUniformIndexingNative;
+    VkBool32           robustBufferAccessUpdateAfterBind;
+    VkBool32           quadDivergentImplicitLod;
+    uint32_t           maxPerStageDescriptorUpdateAfterBindSamplers;
+    uint32_t           maxPerStageDescriptorUpdateAfterBindUniformBuffers;
+    uint32_t           maxPerStageDescriptorUpdateAfterBindStorageBuffers;
+    uint32_t           maxPerStageDescriptorUpdateAfterBindSampledImages;
+    uint32_t           maxPerStageDescriptorUpdateAfterBindStorageImages;
+    uint32_t           maxPerStageDescriptorUpdateAfterBindInputAttachments;
+    uint32_t           maxPerStageUpdateAfterBindResources;
+    uint32_t           maxDescriptorSetUpdateAfterBindSamplers;
+    uint32_t           maxDescriptorSetUpdateAfterBindUniformBuffers;
+    uint32_t           maxDescriptorSetUpdateAfterBindUniformBuffersDynamic;
+    uint32_t           maxDescriptorSetUpdateAfterBindStorageBuffers;
+    uint32_t           maxDescriptorSetUpdateAfterBindStorageBuffersDynamic;
+    uint32_t           maxDescriptorSetUpdateAfterBindSampledImages;
+    uint32_t           maxDescriptorSetUpdateAfterBindStorageImages;
+    uint32_t           maxDescriptorSetUpdateAfterBindInputAttachments;
+} VkPhysicalDeviceDescriptorIndexingProperties;
+
+typedef struct VkDescriptorSetVariableDescriptorCountAllocateInfo {
+    VkStructureType    sType;
+    const void*        pNext;
+    uint32_t           descriptorSetCount;
+    const uint32_t*    pDescriptorCounts;
+} VkDescriptorSetVariableDescriptorCountAllocateInfo;
+
+typedef struct VkDescriptorSetVariableDescriptorCountLayoutSupport {
+    VkStructureType    sType;
+    void*              pNext;
+    uint32_t           maxVariableDescriptorCount;
+} VkDescriptorSetVariableDescriptorCountLayoutSupport;
+
+typedef struct VkSubpassDescriptionDepthStencilResolve {
+    VkStructureType                  sType;
+    const void*                      pNext;
+    VkResolveModeFlagBits            depthResolveMode;
+    VkResolveModeFlagBits            stencilResolveMode;
+    const VkAttachmentReference2*    pDepthStencilResolveAttachment;
+} VkSubpassDescriptionDepthStencilResolve;
+
+typedef struct VkPhysicalDeviceDepthStencilResolveProperties {
+    VkStructureType       sType;
+    void*                 pNext;
+    VkResolveModeFlags    supportedDepthResolveModes;
+    VkResolveModeFlags    supportedStencilResolveModes;
+    VkBool32              independentResolveNone;
+    VkBool32              independentResolve;
+} VkPhysicalDeviceDepthStencilResolveProperties;
+
+typedef struct VkPhysicalDeviceScalarBlockLayoutFeatures {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           scalarBlockLayout;
+} VkPhysicalDeviceScalarBlockLayoutFeatures;
+
+typedef struct VkImageStencilUsageCreateInfo {
+    VkStructureType      sType;
+    const void*          pNext;
+    VkImageUsageFlags    stencilUsage;
+} VkImageStencilUsageCreateInfo;
+
+typedef struct VkSamplerReductionModeCreateInfo {
+    VkStructureType           sType;
+    const void*               pNext;
+    VkSamplerReductionMode    reductionMode;
+} VkSamplerReductionModeCreateInfo;
+
+typedef struct VkPhysicalDeviceSamplerFilterMinmaxProperties {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           filterMinmaxSingleComponentFormats;
+    VkBool32           filterMinmaxImageComponentMapping;
+} VkPhysicalDeviceSamplerFilterMinmaxProperties;
+
+typedef struct VkPhysicalDeviceVulkanMemoryModelFeatures {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           vulkanMemoryModel;
+    VkBool32           vulkanMemoryModelDeviceScope;
+    VkBool32           vulkanMemoryModelAvailabilityVisibilityChains;
+} VkPhysicalDeviceVulkanMemoryModelFeatures;
+
+typedef struct VkPhysicalDeviceImagelessFramebufferFeatures {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           imagelessFramebuffer;
+} VkPhysicalDeviceImagelessFramebufferFeatures;
+
+typedef struct VkFramebufferAttachmentImageInfo {
+    VkStructureType       sType;
+    const void*           pNext;
+    VkImageCreateFlags    flags;
+    VkImageUsageFlags     usage;
+    uint32_t              width;
+    uint32_t              height;
+    uint32_t              layerCount;
+    uint32_t              viewFormatCount;
+    const VkFormat*       pViewFormats;
+} VkFramebufferAttachmentImageInfo;
+
+typedef struct VkFramebufferAttachmentsCreateInfo {
+    VkStructureType                            sType;
+    const void*                                pNext;
+    uint32_t                                   attachmentImageInfoCount;
+    const VkFramebufferAttachmentImageInfo*    pAttachmentImageInfos;
+} VkFramebufferAttachmentsCreateInfo;
+
+typedef struct VkRenderPassAttachmentBeginInfo {
+    VkStructureType       sType;
+    const void*           pNext;
+    uint32_t              attachmentCount;
+    const VkImageView*    pAttachments;
+} VkRenderPassAttachmentBeginInfo;
+
+typedef struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           uniformBufferStandardLayout;
+} VkPhysicalDeviceUniformBufferStandardLayoutFeatures;
+
+typedef struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           shaderSubgroupExtendedTypes;
+} VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures;
+
+typedef struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           separateDepthStencilLayouts;
+} VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures;
+
+typedef struct VkAttachmentReferenceStencilLayout {
+    VkStructureType    sType;
+    void*              pNext;
+    VkImageLayout      stencilLayout;
+} VkAttachmentReferenceStencilLayout;
+
+typedef struct VkAttachmentDescriptionStencilLayout {
+    VkStructureType    sType;
+    void*              pNext;
+    VkImageLayout      stencilInitialLayout;
+    VkImageLayout      stencilFinalLayout;
+} VkAttachmentDescriptionStencilLayout;
+
+typedef struct VkPhysicalDeviceHostQueryResetFeatures {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           hostQueryReset;
+} VkPhysicalDeviceHostQueryResetFeatures;
+
+typedef struct VkPhysicalDeviceTimelineSemaphoreFeatures {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           timelineSemaphore;
+} VkPhysicalDeviceTimelineSemaphoreFeatures;
+
+typedef struct VkPhysicalDeviceTimelineSemaphoreProperties {
+    VkStructureType    sType;
+    void*              pNext;
+    uint64_t           maxTimelineSemaphoreValueDifference;
+} VkPhysicalDeviceTimelineSemaphoreProperties;
+
+typedef struct VkSemaphoreTypeCreateInfo {
+    VkStructureType    sType;
+    const void*        pNext;
+    VkSemaphoreType    semaphoreType;
+    uint64_t           initialValue;
+} VkSemaphoreTypeCreateInfo;
+
+typedef struct VkTimelineSemaphoreSubmitInfo {
+    VkStructureType    sType;
+    const void*        pNext;
+    uint32_t           waitSemaphoreValueCount;
+    const uint64_t*    pWaitSemaphoreValues;
+    uint32_t           signalSemaphoreValueCount;
+    const uint64_t*    pSignalSemaphoreValues;
+} VkTimelineSemaphoreSubmitInfo;
+
+typedef struct VkSemaphoreWaitInfo {
+    VkStructureType         sType;
+    const void*             pNext;
+    VkSemaphoreWaitFlags    flags;
+    uint32_t                semaphoreCount;
+    const VkSemaphore*      pSemaphores;
+    const uint64_t*         pValues;
+} VkSemaphoreWaitInfo;
+
+typedef struct VkSemaphoreSignalInfo {
+    VkStructureType    sType;
+    const void*        pNext;
+    VkSemaphore        semaphore;
+    uint64_t           value;
+} VkSemaphoreSignalInfo;
+
+typedef struct VkPhysicalDeviceBufferDeviceAddressFeatures {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           bufferDeviceAddress;
+    VkBool32           bufferDeviceAddressCaptureReplay;
+    VkBool32           bufferDeviceAddressMultiDevice;
+} VkPhysicalDeviceBufferDeviceAddressFeatures;
+
+typedef struct VkBufferDeviceAddressInfo {
+    VkStructureType    sType;
+    const void*        pNext;
+    VkBuffer           buffer;
+} VkBufferDeviceAddressInfo;
+
+typedef struct VkBufferOpaqueCaptureAddressCreateInfo {
+    VkStructureType    sType;
+    const void*        pNext;
+    uint64_t           opaqueCaptureAddress;
+} VkBufferOpaqueCaptureAddressCreateInfo;
+
+typedef struct VkMemoryOpaqueCaptureAddressAllocateInfo {
+    VkStructureType    sType;
+    const void*        pNext;
+    uint64_t           opaqueCaptureAddress;
+} VkMemoryOpaqueCaptureAddressAllocateInfo;
+
+typedef struct VkDeviceMemoryOpaqueCaptureAddressInfo {
+    VkStructureType    sType;
+    const void*        pNext;
+    VkDeviceMemory     memory;
+} VkDeviceMemoryOpaqueCaptureAddressInfo;
+
+typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectCount)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride);
+typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirectCount)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride);
+typedef VkResult (VKAPI_PTR *PFN_vkCreateRenderPass2)(VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
+typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass2)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo*      pRenderPassBegin, const VkSubpassBeginInfo*      pSubpassBeginInfo);
+typedef void (VKAPI_PTR *PFN_vkCmdNextSubpass2)(VkCommandBuffer commandBuffer, const VkSubpassBeginInfo*      pSubpassBeginInfo, const VkSubpassEndInfo*        pSubpassEndInfo);
+typedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass2)(VkCommandBuffer commandBuffer, const VkSubpassEndInfo*        pSubpassEndInfo);
+typedef void (VKAPI_PTR *PFN_vkResetQueryPool)(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount);
+typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreCounterValue)(VkDevice device, VkSemaphore semaphore, uint64_t* pValue);
+typedef VkResult (VKAPI_PTR *PFN_vkWaitSemaphores)(VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout);
+typedef VkResult (VKAPI_PTR *PFN_vkSignalSemaphore)(VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo);
+typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetBufferDeviceAddress)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
+typedef uint64_t (VKAPI_PTR *PFN_vkGetBufferOpaqueCaptureAddress)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
+typedef uint64_t (VKAPI_PTR *PFN_vkGetDeviceMemoryOpaqueCaptureAddress)(VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectCount(
+    VkCommandBuffer                             commandBuffer,
+    VkBuffer                                    buffer,
+    VkDeviceSize                                offset,
+    VkBuffer                                    countBuffer,
+    VkDeviceSize                                countBufferOffset,
+    uint32_t                                    maxDrawCount,
+    uint32_t                                    stride);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCount(
+    VkCommandBuffer                             commandBuffer,
+    VkBuffer                                    buffer,
+    VkDeviceSize                                offset,
+    VkBuffer                                    countBuffer,
+    VkDeviceSize                                countBufferOffset,
+    uint32_t                                    maxDrawCount,
+    uint32_t                                    stride);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass2(
+    VkDevice                                    device,
+    const VkRenderPassCreateInfo2*              pCreateInfo,
+    const VkAllocationCallbacks*                pAllocator,
+    VkRenderPass*                               pRenderPass);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass2(
+    VkCommandBuffer                             commandBuffer,
+    const VkRenderPassBeginInfo*                pRenderPassBegin,
+    const VkSubpassBeginInfo*                   pSubpassBeginInfo);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdNextSubpass2(
+    VkCommandBuffer                             commandBuffer,
+    const VkSubpassBeginInfo*                   pSubpassBeginInfo,
+    const VkSubpassEndInfo*                     pSubpassEndInfo);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass2(
+    VkCommandBuffer                             commandBuffer,
+    const VkSubpassEndInfo*                     pSubpassEndInfo);
+
+VKAPI_ATTR void VKAPI_CALL vkResetQueryPool(
+    VkDevice                                    device,
+    VkQueryPool                                 queryPool,
+    uint32_t                                    firstQuery,
+    uint32_t                                    queryCount);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreCounterValue(
+    VkDevice                                    device,
+    VkSemaphore                                 semaphore,
+    uint64_t*                                   pValue);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkWaitSemaphores(
+    VkDevice                                    device,
+    const VkSemaphoreWaitInfo*                  pWaitInfo,
+    uint64_t                                    timeout);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkSignalSemaphore(
+    VkDevice                                    device,
+    const VkSemaphoreSignalInfo*                pSignalInfo);
+
+VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetBufferDeviceAddress(
+    VkDevice                                    device,
+    const VkBufferDeviceAddressInfo*            pInfo);
+
+VKAPI_ATTR uint64_t VKAPI_CALL vkGetBufferOpaqueCaptureAddress(
+    VkDevice                                    device,
+    const VkBufferDeviceAddressInfo*            pInfo);
+
+VKAPI_ATTR uint64_t VKAPI_CALL vkGetDeviceMemoryOpaqueCaptureAddress(
+    VkDevice                                    device,
+    const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo);
+#endif
+
+
 #define VK_KHR_surface 1
 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR)
 #define VK_KHR_SURFACE_SPEC_VERSION       25
@@ -5613,14 +6441,9 @@ VKAPI_ATTR void VKAPI_CALL vkCmdPushDescriptorSetWithTemplateKHR(
 #define VK_KHR_shader_float16_int8 1
 #define VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION 1
 #define VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME "VK_KHR_shader_float16_int8"
-typedef struct VkPhysicalDeviceShaderFloat16Int8FeaturesKHR {
-    VkStructureType    sType;
-    void*              pNext;
-    VkBool32           shaderFloat16;
-    VkBool32           shaderInt8;
-} VkPhysicalDeviceShaderFloat16Int8FeaturesKHR;
+typedef VkPhysicalDeviceShaderFloat16Int8Features VkPhysicalDeviceShaderFloat16Int8FeaturesKHR;
 
-typedef VkPhysicalDeviceShaderFloat16Int8FeaturesKHR VkPhysicalDeviceFloat16Int8FeaturesKHR;
+typedef VkPhysicalDeviceShaderFloat16Int8Features VkPhysicalDeviceFloat16Int8FeaturesKHR;
 
 
 
@@ -5694,144 +6517,58 @@ VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSetWithTemplateKHR(
 #define VK_KHR_imageless_framebuffer 1
 #define VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION 1
 #define VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME "VK_KHR_imageless_framebuffer"
-typedef struct VkPhysicalDeviceImagelessFramebufferFeaturesKHR {
-    VkStructureType    sType;
-    void*              pNext;
-    VkBool32           imagelessFramebuffer;
-} VkPhysicalDeviceImagelessFramebufferFeaturesKHR;
+typedef VkPhysicalDeviceImagelessFramebufferFeatures VkPhysicalDeviceImagelessFramebufferFeaturesKHR;
 
-typedef struct VkFramebufferAttachmentImageInfoKHR {
-    VkStructureType       sType;
-    const void*           pNext;
-    VkImageCreateFlags    flags;
-    VkImageUsageFlags     usage;
-    uint32_t              width;
-    uint32_t              height;
-    uint32_t              layerCount;
-    uint32_t              viewFormatCount;
-    const VkFormat*       pViewFormats;
-} VkFramebufferAttachmentImageInfoKHR;
+typedef VkFramebufferAttachmentsCreateInfo VkFramebufferAttachmentsCreateInfoKHR;
 
-typedef struct VkFramebufferAttachmentsCreateInfoKHR {
-    VkStructureType                               sType;
-    const void*                                   pNext;
-    uint32_t                                      attachmentImageInfoCount;
-    const VkFramebufferAttachmentImageInfoKHR*    pAttachmentImageInfos;
-} VkFramebufferAttachmentsCreateInfoKHR;
+typedef VkFramebufferAttachmentImageInfo VkFramebufferAttachmentImageInfoKHR;
 
-typedef struct VkRenderPassAttachmentBeginInfoKHR {
-    VkStructureType       sType;
-    const void*           pNext;
-    uint32_t              attachmentCount;
-    const VkImageView*    pAttachments;
-} VkRenderPassAttachmentBeginInfoKHR;
+typedef VkRenderPassAttachmentBeginInfo VkRenderPassAttachmentBeginInfoKHR;
 
 
 
 #define VK_KHR_create_renderpass2 1
 #define VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION 1
 #define VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME "VK_KHR_create_renderpass2"
-typedef struct VkAttachmentDescription2KHR {
-    VkStructureType                 sType;
-    const void*                     pNext;
-    VkAttachmentDescriptionFlags    flags;
-    VkFormat                        format;
-    VkSampleCountFlagBits           samples;
-    VkAttachmentLoadOp              loadOp;
-    VkAttachmentStoreOp             storeOp;
-    VkAttachmentLoadOp              stencilLoadOp;
-    VkAttachmentStoreOp             stencilStoreOp;
-    VkImageLayout                   initialLayout;
-    VkImageLayout                   finalLayout;
-} VkAttachmentDescription2KHR;
+typedef VkRenderPassCreateInfo2 VkRenderPassCreateInfo2KHR;
 
-typedef struct VkAttachmentReference2KHR {
-    VkStructureType       sType;
-    const void*           pNext;
-    uint32_t              attachment;
-    VkImageLayout         layout;
-    VkImageAspectFlags    aspectMask;
-} VkAttachmentReference2KHR;
+typedef VkAttachmentDescription2 VkAttachmentDescription2KHR;
 
-typedef struct VkSubpassDescription2KHR {
-    VkStructureType                     sType;
-    const void*                         pNext;
-    VkSubpassDescriptionFlags           flags;
-    VkPipelineBindPoint                 pipelineBindPoint;
-    uint32_t                            viewMask;
-    uint32_t                            inputAttachmentCount;
-    const VkAttachmentReference2KHR*    pInputAttachments;
-    uint32_t                            colorAttachmentCount;
-    const VkAttachmentReference2KHR*    pColorAttachments;
-    const VkAttachmentReference2KHR*    pResolveAttachments;
-    const VkAttachmentReference2KHR*    pDepthStencilAttachment;
-    uint32_t                            preserveAttachmentCount;
-    const uint32_t*                     pPreserveAttachments;
-} VkSubpassDescription2KHR;
-
-typedef struct VkSubpassDependency2KHR {
-    VkStructureType         sType;
-    const void*             pNext;
-    uint32_t                srcSubpass;
-    uint32_t                dstSubpass;
-    VkPipelineStageFlags    srcStageMask;
-    VkPipelineStageFlags    dstStageMask;
-    VkAccessFlags           srcAccessMask;
-    VkAccessFlags           dstAccessMask;
-    VkDependencyFlags       dependencyFlags;
-    int32_t                 viewOffset;
-} VkSubpassDependency2KHR;
+typedef VkAttachmentReference2 VkAttachmentReference2KHR;
 
-typedef struct VkRenderPassCreateInfo2KHR {
-    VkStructureType                       sType;
-    const void*                           pNext;
-    VkRenderPassCreateFlags               flags;
-    uint32_t                              attachmentCount;
-    const VkAttachmentDescription2KHR*    pAttachments;
-    uint32_t                              subpassCount;
-    const VkSubpassDescription2KHR*       pSubpasses;
-    uint32_t                              dependencyCount;
-    const VkSubpassDependency2KHR*        pDependencies;
-    uint32_t                              correlatedViewMaskCount;
-    const uint32_t*                       pCorrelatedViewMasks;
-} VkRenderPassCreateInfo2KHR;
-
-typedef struct VkSubpassBeginInfoKHR {
-    VkStructureType      sType;
-    const void*          pNext;
-    VkSubpassContents    contents;
-} VkSubpassBeginInfoKHR;
+typedef VkSubpassDescription2 VkSubpassDescription2KHR;
 
-typedef struct VkSubpassEndInfoKHR {
-    VkStructureType    sType;
-    const void*        pNext;
-} VkSubpassEndInfoKHR;
+typedef VkSubpassDependency2 VkSubpassDependency2KHR;
 
-typedef VkResult (VKAPI_PTR *PFN_vkCreateRenderPass2KHR)(VkDevice device, const VkRenderPassCreateInfo2KHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
-typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass2KHR)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo*      pRenderPassBegin, const VkSubpassBeginInfoKHR*      pSubpassBeginInfo);
-typedef void (VKAPI_PTR *PFN_vkCmdNextSubpass2KHR)(VkCommandBuffer commandBuffer, const VkSubpassBeginInfoKHR*      pSubpassBeginInfo, const VkSubpassEndInfoKHR*        pSubpassEndInfo);
-typedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass2KHR)(VkCommandBuffer commandBuffer, const VkSubpassEndInfoKHR*        pSubpassEndInfo);
+typedef VkSubpassBeginInfo VkSubpassBeginInfoKHR;
+
+typedef VkSubpassEndInfo VkSubpassEndInfoKHR;
+
+typedef VkResult (VKAPI_PTR *PFN_vkCreateRenderPass2KHR)(VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
+typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass2KHR)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo*      pRenderPassBegin, const VkSubpassBeginInfo*      pSubpassBeginInfo);
+typedef void (VKAPI_PTR *PFN_vkCmdNextSubpass2KHR)(VkCommandBuffer commandBuffer, const VkSubpassBeginInfo*      pSubpassBeginInfo, const VkSubpassEndInfo*        pSubpassEndInfo);
+typedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass2KHR)(VkCommandBuffer commandBuffer, const VkSubpassEndInfo*        pSubpassEndInfo);
 
 #ifndef VK_NO_PROTOTYPES
 VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass2KHR(
     VkDevice                                    device,
-    const VkRenderPassCreateInfo2KHR*           pCreateInfo,
+    const VkRenderPassCreateInfo2*              pCreateInfo,
     const VkAllocationCallbacks*                pAllocator,
     VkRenderPass*                               pRenderPass);
 
 VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass2KHR(
     VkCommandBuffer                             commandBuffer,
     const VkRenderPassBeginInfo*                pRenderPassBegin,
-    const VkSubpassBeginInfoKHR*                pSubpassBeginInfo);
+    const VkSubpassBeginInfo*                   pSubpassBeginInfo);
 
 VKAPI_ATTR void VKAPI_CALL vkCmdNextSubpass2KHR(
     VkCommandBuffer                             commandBuffer,
-    const VkSubpassBeginInfoKHR*                pSubpassBeginInfo,
-    const VkSubpassEndInfoKHR*                  pSubpassEndInfo);
+    const VkSubpassBeginInfo*                   pSubpassBeginInfo,
+    const VkSubpassEndInfo*                     pSubpassEndInfo);
 
 VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass2KHR(
     VkCommandBuffer                             commandBuffer,
-    const VkSubpassEndInfoKHR*                  pSubpassEndInfo);
+    const VkSubpassEndInfo*                     pSubpassEndInfo);
 #endif
 
 
@@ -6251,12 +6988,7 @@ VKAPI_ATTR void VKAPI_CALL vkGetImageSparseMemoryRequirements2KHR(
 #define VK_KHR_image_format_list 1
 #define VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION 1
 #define VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME "VK_KHR_image_format_list"
-typedef struct VkImageFormatListCreateInfoKHR {
-    VkStructureType    sType;
-    const void*        pNext;
-    uint32_t           viewFormatCount;
-    const VkFormat*    pViewFormats;
-} VkImageFormatListCreateInfoKHR;
+typedef VkImageFormatListCreateInfo VkImageFormatListCreateInfoKHR;
 
 
 
@@ -6370,36 +7102,21 @@ VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCountKHR(
 #define VK_KHR_shader_subgroup_extended_types 1
 #define VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION 1
 #define VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME "VK_KHR_shader_subgroup_extended_types"
-typedef struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR {
-    VkStructureType    sType;
-    void*              pNext;
-    VkBool32           shaderSubgroupExtendedTypes;
-} VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR;
+typedef VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR;
 
 
 
 #define VK_KHR_8bit_storage 1
 #define VK_KHR_8BIT_STORAGE_SPEC_VERSION  1
 #define VK_KHR_8BIT_STORAGE_EXTENSION_NAME "VK_KHR_8bit_storage"
-typedef struct VkPhysicalDevice8BitStorageFeaturesKHR {
-    VkStructureType    sType;
-    void*              pNext;
-    VkBool32           storageBuffer8BitAccess;
-    VkBool32           uniformAndStorageBuffer8BitAccess;
-    VkBool32           storagePushConstant8;
-} VkPhysicalDevice8BitStorageFeaturesKHR;
+typedef VkPhysicalDevice8BitStorageFeatures VkPhysicalDevice8BitStorageFeaturesKHR;
 
 
 
 #define VK_KHR_shader_atomic_int64 1
 #define VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION 1
 #define VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME "VK_KHR_shader_atomic_int64"
-typedef struct VkPhysicalDeviceShaderAtomicInt64FeaturesKHR {
-    VkStructureType    sType;
-    void*              pNext;
-    VkBool32           shaderBufferInt64Atomics;
-    VkBool32           shaderSharedInt64Atomics;
-} VkPhysicalDeviceShaderAtomicInt64FeaturesKHR;
+typedef VkPhysicalDeviceShaderAtomicInt64Features VkPhysicalDeviceShaderAtomicInt64FeaturesKHR;
 
 
 
@@ -6416,113 +7133,37 @@ typedef struct VkPhysicalDeviceShaderClockFeaturesKHR {
 
 
 #define VK_KHR_driver_properties 1
-#define VK_MAX_DRIVER_NAME_SIZE_KHR       256
-#define VK_MAX_DRIVER_INFO_SIZE_KHR       256
 #define VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION 1
 #define VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME "VK_KHR_driver_properties"
+#define VK_MAX_DRIVER_NAME_SIZE_KHR       VK_MAX_DRIVER_NAME_SIZE
+#define VK_MAX_DRIVER_INFO_SIZE_KHR       VK_MAX_DRIVER_INFO_SIZE
+typedef VkDriverId VkDriverIdKHR;
 
-typedef enum VkDriverIdKHR {
-    VK_DRIVER_ID_AMD_PROPRIETARY_KHR = 1,
-    VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2,
-    VK_DRIVER_ID_MESA_RADV_KHR = 3,
-    VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = 4,
-    VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = 5,
-    VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = 6,
-    VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = 7,
-    VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = 8,
-    VK_DRIVER_ID_ARM_PROPRIETARY_KHR = 9,
-    VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR = 10,
-    VK_DRIVER_ID_GGP_PROPRIETARY_KHR = 11,
-    VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR = 12,
-    VK_DRIVER_ID_BEGIN_RANGE_KHR = VK_DRIVER_ID_AMD_PROPRIETARY_KHR,
-    VK_DRIVER_ID_END_RANGE_KHR = VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR,
-    VK_DRIVER_ID_RANGE_SIZE_KHR = (VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR - VK_DRIVER_ID_AMD_PROPRIETARY_KHR + 1),
-    VK_DRIVER_ID_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkDriverIdKHR;
-typedef struct VkConformanceVersionKHR {
-    uint8_t    major;
-    uint8_t    minor;
-    uint8_t    subminor;
-    uint8_t    patch;
-} VkConformanceVersionKHR;
+typedef VkConformanceVersion VkConformanceVersionKHR;
 
-typedef struct VkPhysicalDeviceDriverPropertiesKHR {
-    VkStructureType            sType;
-    void*                      pNext;
-    VkDriverIdKHR              driverID;
-    char                       driverName[VK_MAX_DRIVER_NAME_SIZE_KHR];
-    char                       driverInfo[VK_MAX_DRIVER_INFO_SIZE_KHR];
-    VkConformanceVersionKHR    conformanceVersion;
-} VkPhysicalDeviceDriverPropertiesKHR;
+typedef VkPhysicalDeviceDriverProperties VkPhysicalDeviceDriverPropertiesKHR;
 
 
 
 #define VK_KHR_shader_float_controls 1
 #define VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION 4
 #define VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME "VK_KHR_shader_float_controls"
+typedef VkShaderFloatControlsIndependence VkShaderFloatControlsIndependenceKHR;
 
-typedef enum VkShaderFloatControlsIndependenceKHR {
-    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = 0,
-    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = 1,
-    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = 2,
-    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_BEGIN_RANGE_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR,
-    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_END_RANGE_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR,
-    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_RANGE_SIZE_KHR = (VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR - VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR + 1),
-    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkShaderFloatControlsIndependenceKHR;
-typedef struct VkPhysicalDeviceFloatControlsPropertiesKHR {
-    VkStructureType                         sType;
-    void*                                   pNext;
-    VkShaderFloatControlsIndependenceKHR    denormBehaviorIndependence;
-    VkShaderFloatControlsIndependenceKHR    roundingModeIndependence;
-    VkBool32                                shaderSignedZeroInfNanPreserveFloat16;
-    VkBool32                                shaderSignedZeroInfNanPreserveFloat32;
-    VkBool32                                shaderSignedZeroInfNanPreserveFloat64;
-    VkBool32                                shaderDenormPreserveFloat16;
-    VkBool32                                shaderDenormPreserveFloat32;
-    VkBool32                                shaderDenormPreserveFloat64;
-    VkBool32                                shaderDenormFlushToZeroFloat16;
-    VkBool32                                shaderDenormFlushToZeroFloat32;
-    VkBool32                                shaderDenormFlushToZeroFloat64;
-    VkBool32                                shaderRoundingModeRTEFloat16;
-    VkBool32                                shaderRoundingModeRTEFloat32;
-    VkBool32                                shaderRoundingModeRTEFloat64;
-    VkBool32                                shaderRoundingModeRTZFloat16;
-    VkBool32                                shaderRoundingModeRTZFloat32;
-    VkBool32                                shaderRoundingModeRTZFloat64;
-} VkPhysicalDeviceFloatControlsPropertiesKHR;
+typedef VkPhysicalDeviceFloatControlsProperties VkPhysicalDeviceFloatControlsPropertiesKHR;
 
 
 
 #define VK_KHR_depth_stencil_resolve 1
 #define VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION 1
 #define VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME "VK_KHR_depth_stencil_resolve"
+typedef VkResolveModeFlagBits VkResolveModeFlagBitsKHR;
 
-typedef enum VkResolveModeFlagBitsKHR {
-    VK_RESOLVE_MODE_NONE_KHR = 0,
-    VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = 0x00000001,
-    VK_RESOLVE_MODE_AVERAGE_BIT_KHR = 0x00000002,
-    VK_RESOLVE_MODE_MIN_BIT_KHR = 0x00000004,
-    VK_RESOLVE_MODE_MAX_BIT_KHR = 0x00000008,
-    VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkResolveModeFlagBitsKHR;
-typedef VkFlags VkResolveModeFlagsKHR;
-typedef struct VkSubpassDescriptionDepthStencilResolveKHR {
-    VkStructureType                     sType;
-    const void*                         pNext;
-    VkResolveModeFlagBitsKHR            depthResolveMode;
-    VkResolveModeFlagBitsKHR            stencilResolveMode;
-    const VkAttachmentReference2KHR*    pDepthStencilResolveAttachment;
-} VkSubpassDescriptionDepthStencilResolveKHR;
+typedef VkResolveModeFlags VkResolveModeFlagsKHR;
 
-typedef struct VkPhysicalDeviceDepthStencilResolvePropertiesKHR {
-    VkStructureType          sType;
-    void*                    pNext;
-    VkResolveModeFlagsKHR    supportedDepthResolveModes;
-    VkResolveModeFlagsKHR    supportedStencilResolveModes;
-    VkBool32                 independentResolveNone;
-    VkBool32                 independentResolve;
-} VkPhysicalDeviceDepthStencilResolvePropertiesKHR;
+typedef VkSubpassDescriptionDepthStencilResolve VkSubpassDescriptionDepthStencilResolveKHR;
+
+typedef VkPhysicalDeviceDepthStencilResolveProperties VkPhysicalDeviceDepthStencilResolvePropertiesKHR;
 
 
 
@@ -6534,68 +7175,27 @@ typedef struct VkPhysicalDeviceDepthStencilResolvePropertiesKHR {
 #define VK_KHR_timeline_semaphore 1
 #define VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION 2
 #define VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME "VK_KHR_timeline_semaphore"
+typedef VkSemaphoreType VkSemaphoreTypeKHR;
 
-typedef enum VkSemaphoreTypeKHR {
-    VK_SEMAPHORE_TYPE_BINARY_KHR = 0,
-    VK_SEMAPHORE_TYPE_TIMELINE_KHR = 1,
-    VK_SEMAPHORE_TYPE_BEGIN_RANGE_KHR = VK_SEMAPHORE_TYPE_BINARY_KHR,
-    VK_SEMAPHORE_TYPE_END_RANGE_KHR = VK_SEMAPHORE_TYPE_TIMELINE_KHR,
-    VK_SEMAPHORE_TYPE_RANGE_SIZE_KHR = (VK_SEMAPHORE_TYPE_TIMELINE_KHR - VK_SEMAPHORE_TYPE_BINARY_KHR + 1),
-    VK_SEMAPHORE_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkSemaphoreTypeKHR;
-
-typedef enum VkSemaphoreWaitFlagBitsKHR {
-    VK_SEMAPHORE_WAIT_ANY_BIT_KHR = 0x00000001,
-    VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
-} VkSemaphoreWaitFlagBitsKHR;
-typedef VkFlags VkSemaphoreWaitFlagsKHR;
-typedef struct VkPhysicalDeviceTimelineSemaphoreFeaturesKHR {
-    VkStructureType    sType;
-    void*              pNext;
-    VkBool32           timelineSemaphore;
-} VkPhysicalDeviceTimelineSemaphoreFeaturesKHR;
+typedef VkSemaphoreWaitFlagBits VkSemaphoreWaitFlagBitsKHR;
 
-typedef struct VkPhysicalDeviceTimelineSemaphorePropertiesKHR {
-    VkStructureType    sType;
-    void*              pNext;
-    uint64_t           maxTimelineSemaphoreValueDifference;
-} VkPhysicalDeviceTimelineSemaphorePropertiesKHR;
+typedef VkSemaphoreWaitFlags VkSemaphoreWaitFlagsKHR;
 
-typedef struct VkSemaphoreTypeCreateInfoKHR {
-    VkStructureType       sType;
-    const void*           pNext;
-    VkSemaphoreTypeKHR    semaphoreType;
-    uint64_t              initialValue;
-} VkSemaphoreTypeCreateInfoKHR;
+typedef VkPhysicalDeviceTimelineSemaphoreFeatures VkPhysicalDeviceTimelineSemaphoreFeaturesKHR;
 
-typedef struct VkTimelineSemaphoreSubmitInfoKHR {
-    VkStructureType    sType;
-    const void*        pNext;
-    uint32_t           waitSemaphoreValueCount;
-    const uint64_t*    pWaitSemaphoreValues;
-    uint32_t           signalSemaphoreValueCount;
-    const uint64_t*    pSignalSemaphoreValues;
-} VkTimelineSemaphoreSubmitInfoKHR;
+typedef VkPhysicalDeviceTimelineSemaphoreProperties VkPhysicalDeviceTimelineSemaphorePropertiesKHR;
 
-typedef struct VkSemaphoreWaitInfoKHR {
-    VkStructureType            sType;
-    const void*                pNext;
-    VkSemaphoreWaitFlagsKHR    flags;
-    uint32_t                   semaphoreCount;
-    const VkSemaphore*         pSemaphores;
-    const uint64_t*            pValues;
-} VkSemaphoreWaitInfoKHR;
+typedef VkSemaphoreTypeCreateInfo VkSemaphoreTypeCreateInfoKHR;
 
-typedef struct VkSemaphoreSignalInfoKHR {
-    VkStructureType    sType;
-    const void*        pNext;
-    VkSemaphore        semaphore;
-    uint64_t           value;
-} VkSemaphoreSignalInfoKHR;
+typedef VkTimelineSemaphoreSubmitInfo VkTimelineSemaphoreSubmitInfoKHR;
+
+typedef VkSemaphoreWaitInfo VkSemaphoreWaitInfoKHR;
+
+typedef VkSemaphoreSignalInfo VkSemaphoreSignalInfoKHR;
 
 typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreCounterValueKHR)(VkDevice device, VkSemaphore semaphore, uint64_t* pValue);
-typedef VkResult (VKAPI_PTR *PFN_vkWaitSemaphoresKHR)(VkDevice device, const VkSemaphoreWaitInfoKHR* pWaitInfo, uint64_t timeout);
-typedef VkResult (VKAPI_PTR *PFN_vkSignalSemaphoreKHR)(VkDevice device, const VkSemaphoreSignalInfoKHR* pSignalInfo);
+typedef VkResult (VKAPI_PTR *PFN_vkWaitSemaphoresKHR)(VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout);
+typedef VkResult (VKAPI_PTR *PFN_vkSignalSemaphoreKHR)(VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo);
 
 #ifndef VK_NO_PROTOTYPES
 VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreCounterValueKHR(
@@ -6605,25 +7205,19 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreCounterValueKHR(
 
 VKAPI_ATTR VkResult VKAPI_CALL vkWaitSemaphoresKHR(
     VkDevice                                    device,
-    const VkSemaphoreWaitInfoKHR*               pWaitInfo,
+    const VkSemaphoreWaitInfo*                  pWaitInfo,
     uint64_t                                    timeout);
 
 VKAPI_ATTR VkResult VKAPI_CALL vkSignalSemaphoreKHR(
     VkDevice                                    device,
-    const VkSemaphoreSignalInfoKHR*             pSignalInfo);
+    const VkSemaphoreSignalInfo*                pSignalInfo);
 #endif
 
 
 #define VK_KHR_vulkan_memory_model 1
 #define VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION 3
 #define VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME "VK_KHR_vulkan_memory_model"
-typedef struct VkPhysicalDeviceVulkanMemoryModelFeaturesKHR {
-    VkStructureType    sType;
-    void*              pNext;
-    VkBool32           vulkanMemoryModel;
-    VkBool32           vulkanMemoryModelDeviceScope;
-    VkBool32           vulkanMemoryModelAvailabilityVisibilityChains;
-} VkPhysicalDeviceVulkanMemoryModelFeaturesKHR;
+typedef VkPhysicalDeviceVulkanMemoryModelFeatures VkPhysicalDeviceVulkanMemoryModelFeaturesKHR;
 
 
 #define VK_KHR_spirv_1_4 1
@@ -6645,36 +7239,51 @@ typedef struct VkSurfaceProtectedCapabilitiesKHR {
 #define VK_KHR_separate_depth_stencil_layouts 1
 #define VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION 1
 #define VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME "VK_KHR_separate_depth_stencil_layouts"
-typedef struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR {
-    VkStructureType    sType;
-    void*              pNext;
-    VkBool32           separateDepthStencilLayouts;
-} VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR;
+typedef VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR;
 
-typedef struct VkAttachmentReferenceStencilLayoutKHR {
-    VkStructureType    sType;
-    void*              pNext;
-    VkImageLayout      stencilLayout;
-} VkAttachmentReferenceStencilLayoutKHR;
+typedef VkAttachmentReferenceStencilLayout VkAttachmentReferenceStencilLayoutKHR;
 
-typedef struct VkAttachmentDescriptionStencilLayoutKHR {
-    VkStructureType    sType;
-    void*              pNext;
-    VkImageLayout      stencilInitialLayout;
-    VkImageLayout      stencilFinalLayout;
-} VkAttachmentDescriptionStencilLayoutKHR;
+typedef VkAttachmentDescriptionStencilLayout VkAttachmentDescriptionStencilLayoutKHR;
 
 
 
 #define VK_KHR_uniform_buffer_standard_layout 1
 #define VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION 1
 #define VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME "VK_KHR_uniform_buffer_standard_layout"
-typedef struct VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR {
-    VkStructureType    sType;
-    void*              pNext;
-    VkBool32           uniformBufferStandardLayout;
-} VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR;
+typedef VkPhysicalDeviceUniformBufferStandardLayoutFeatures VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR;
+
+
+
+#define VK_KHR_buffer_device_address 1
+#define VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION 1
+#define VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME "VK_KHR_buffer_device_address"
+typedef VkPhysicalDeviceBufferDeviceAddressFeatures VkPhysicalDeviceBufferDeviceAddressFeaturesKHR;
+
+typedef VkBufferDeviceAddressInfo VkBufferDeviceAddressInfoKHR;
+
+typedef VkBufferOpaqueCaptureAddressCreateInfo VkBufferOpaqueCaptureAddressCreateInfoKHR;
+
+typedef VkMemoryOpaqueCaptureAddressAllocateInfo VkMemoryOpaqueCaptureAddressAllocateInfoKHR;
+
+typedef VkDeviceMemoryOpaqueCaptureAddressInfo VkDeviceMemoryOpaqueCaptureAddressInfoKHR;
 
+typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetBufferDeviceAddressKHR)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
+typedef uint64_t (VKAPI_PTR *PFN_vkGetBufferOpaqueCaptureAddressKHR)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
+typedef uint64_t (VKAPI_PTR *PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR)(VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetBufferDeviceAddressKHR(
+    VkDevice                                    device,
+    const VkBufferDeviceAddressInfo*            pInfo);
+
+VKAPI_ATTR uint64_t VKAPI_CALL vkGetBufferOpaqueCaptureAddressKHR(
+    VkDevice                                    device,
+    const VkBufferDeviceAddressInfo*            pInfo);
+
+VKAPI_ATTR uint64_t VKAPI_CALL vkGetDeviceMemoryOpaqueCaptureAddressKHR(
+    VkDevice                                    device,
+    const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo);
+#endif
 
 
 #define VK_KHR_pipeline_executable_properties 1
@@ -6769,7 +7378,6 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineExecutableInternalRepresentationsKHR
     VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations);
 #endif
 
-
 #define VK_EXT_debug_report 1
 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugReportCallbackEXT)
 #define VK_EXT_DEBUG_REPORT_SPEC_VERSION  9
@@ -8170,28 +8778,11 @@ VKAPI_ATTR void VKAPI_CALL vkSubmitDebugUtilsMessageEXT(
 #define VK_EXT_sampler_filter_minmax 1
 #define VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION 2
 #define VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME "VK_EXT_sampler_filter_minmax"
+typedef VkSamplerReductionMode VkSamplerReductionModeEXT;
 
-typedef enum VkSamplerReductionModeEXT {
-    VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = 0,
-    VK_SAMPLER_REDUCTION_MODE_MIN_EXT = 1,
-    VK_SAMPLER_REDUCTION_MODE_MAX_EXT = 2,
-    VK_SAMPLER_REDUCTION_MODE_BEGIN_RANGE_EXT = VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT,
-    VK_SAMPLER_REDUCTION_MODE_END_RANGE_EXT = VK_SAMPLER_REDUCTION_MODE_MAX_EXT,
-    VK_SAMPLER_REDUCTION_MODE_RANGE_SIZE_EXT = (VK_SAMPLER_REDUCTION_MODE_MAX_EXT - VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT + 1),
-    VK_SAMPLER_REDUCTION_MODE_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkSamplerReductionModeEXT;
-typedef struct VkSamplerReductionModeCreateInfoEXT {
-    VkStructureType              sType;
-    const void*                  pNext;
-    VkSamplerReductionModeEXT    reductionMode;
-} VkSamplerReductionModeCreateInfoEXT;
+typedef VkSamplerReductionModeCreateInfo VkSamplerReductionModeCreateInfoEXT;
 
-typedef struct VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT {
-    VkStructureType    sType;
-    void*              pNext;
-    VkBool32           filterMinmaxSingleComponentFormats;
-    VkBool32           filterMinmaxImageComponentMapping;
-} VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT;
+typedef VkPhysicalDeviceSamplerFilterMinmaxProperties VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT;
 
 
 
@@ -8409,7 +9000,6 @@ typedef struct VkPipelineCoverageModulationStateCreateInfoNV {
 #define VK_NV_FILL_RECTANGLE_SPEC_VERSION 1
 #define VK_NV_FILL_RECTANGLE_EXTENSION_NAME "VK_NV_fill_rectangle"
 
-
 #define VK_NV_shader_sm_builtins 1
 #define VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION 1
 #define VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME "VK_NV_shader_sm_builtins"
@@ -8426,8 +9016,6 @@ typedef struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV {
     VkBool32           shaderSMBuiltins;
 } VkPhysicalDeviceShaderSMBuiltinsFeaturesNV;
 
-
-
 #define VK_EXT_post_depth_coverage 1
 #define VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION 1
 #define VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME "VK_EXT_post_depth_coverage"
@@ -8550,87 +9138,19 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetValidationCacheDataEXT(
 #define VK_EXT_descriptor_indexing 1
 #define VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION 2
 #define VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME "VK_EXT_descriptor_indexing"
+typedef VkDescriptorBindingFlagBits VkDescriptorBindingFlagBitsEXT;
 
-typedef enum VkDescriptorBindingFlagBitsEXT {
-    VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT = 0x00000001,
-    VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT = 0x00000002,
-    VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT = 0x00000004,
-    VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT = 0x00000008,
-    VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
-} VkDescriptorBindingFlagBitsEXT;
-typedef VkFlags VkDescriptorBindingFlagsEXT;
-typedef struct VkDescriptorSetLayoutBindingFlagsCreateInfoEXT {
-    VkStructureType                       sType;
-    const void*                           pNext;
-    uint32_t                              bindingCount;
-    const VkDescriptorBindingFlagsEXT*    pBindingFlags;
-} VkDescriptorSetLayoutBindingFlagsCreateInfoEXT;
+typedef VkDescriptorBindingFlags VkDescriptorBindingFlagsEXT;
 
-typedef struct VkPhysicalDeviceDescriptorIndexingFeaturesEXT {
-    VkStructureType    sType;
-    void*              pNext;
-    VkBool32           shaderInputAttachmentArrayDynamicIndexing;
-    VkBool32           shaderUniformTexelBufferArrayDynamicIndexing;
-    VkBool32           shaderStorageTexelBufferArrayDynamicIndexing;
-    VkBool32           shaderUniformBufferArrayNonUniformIndexing;
-    VkBool32           shaderSampledImageArrayNonUniformIndexing;
-    VkBool32           shaderStorageBufferArrayNonUniformIndexing;
-    VkBool32           shaderStorageImageArrayNonUniformIndexing;
-    VkBool32           shaderInputAttachmentArrayNonUniformIndexing;
-    VkBool32           shaderUniformTexelBufferArrayNonUniformIndexing;
-    VkBool32           shaderStorageTexelBufferArrayNonUniformIndexing;
-    VkBool32           descriptorBindingUniformBufferUpdateAfterBind;
-    VkBool32           descriptorBindingSampledImageUpdateAfterBind;
-    VkBool32           descriptorBindingStorageImageUpdateAfterBind;
-    VkBool32           descriptorBindingStorageBufferUpdateAfterBind;
-    VkBool32           descriptorBindingUniformTexelBufferUpdateAfterBind;
-    VkBool32           descriptorBindingStorageTexelBufferUpdateAfterBind;
-    VkBool32           descriptorBindingUpdateUnusedWhilePending;
-    VkBool32           descriptorBindingPartiallyBound;
-    VkBool32           descriptorBindingVariableDescriptorCount;
-    VkBool32           runtimeDescriptorArray;
-} VkPhysicalDeviceDescriptorIndexingFeaturesEXT;
+typedef VkDescriptorSetLayoutBindingFlagsCreateInfo VkDescriptorSetLayoutBindingFlagsCreateInfoEXT;
 
-typedef struct VkPhysicalDeviceDescriptorIndexingPropertiesEXT {
-    VkStructureType    sType;
-    void*              pNext;
-    uint32_t           maxUpdateAfterBindDescriptorsInAllPools;
-    VkBool32           shaderUniformBufferArrayNonUniformIndexingNative;
-    VkBool32           shaderSampledImageArrayNonUniformIndexingNative;
-    VkBool32           shaderStorageBufferArrayNonUniformIndexingNative;
-    VkBool32           shaderStorageImageArrayNonUniformIndexingNative;
-    VkBool32           shaderInputAttachmentArrayNonUniformIndexingNative;
-    VkBool32           robustBufferAccessUpdateAfterBind;
-    VkBool32           quadDivergentImplicitLod;
-    uint32_t           maxPerStageDescriptorUpdateAfterBindSamplers;
-    uint32_t           maxPerStageDescriptorUpdateAfterBindUniformBuffers;
-    uint32_t           maxPerStageDescriptorUpdateAfterBindStorageBuffers;
-    uint32_t           maxPerStageDescriptorUpdateAfterBindSampledImages;
-    uint32_t           maxPerStageDescriptorUpdateAfterBindStorageImages;
-    uint32_t           maxPerStageDescriptorUpdateAfterBindInputAttachments;
-    uint32_t           maxPerStageUpdateAfterBindResources;
-    uint32_t           maxDescriptorSetUpdateAfterBindSamplers;
-    uint32_t           maxDescriptorSetUpdateAfterBindUniformBuffers;
-    uint32_t           maxDescriptorSetUpdateAfterBindUniformBuffersDynamic;
-    uint32_t           maxDescriptorSetUpdateAfterBindStorageBuffers;
-    uint32_t           maxDescriptorSetUpdateAfterBindStorageBuffersDynamic;
-    uint32_t           maxDescriptorSetUpdateAfterBindSampledImages;
-    uint32_t           maxDescriptorSetUpdateAfterBindStorageImages;
-    uint32_t           maxDescriptorSetUpdateAfterBindInputAttachments;
-} VkPhysicalDeviceDescriptorIndexingPropertiesEXT;
+typedef VkPhysicalDeviceDescriptorIndexingFeatures VkPhysicalDeviceDescriptorIndexingFeaturesEXT;
 
-typedef struct VkDescriptorSetVariableDescriptorCountAllocateInfoEXT {
-    VkStructureType    sType;
-    const void*        pNext;
-    uint32_t           descriptorSetCount;
-    const uint32_t*    pDescriptorCounts;
-} VkDescriptorSetVariableDescriptorCountAllocateInfoEXT;
+typedef VkPhysicalDeviceDescriptorIndexingProperties VkPhysicalDeviceDescriptorIndexingPropertiesEXT;
 
-typedef struct VkDescriptorSetVariableDescriptorCountLayoutSupportEXT {
-    VkStructureType    sType;
-    void*              pNext;
-    uint32_t           maxVariableDescriptorCount;
-} VkDescriptorSetVariableDescriptorCountLayoutSupportEXT;
+typedef VkDescriptorSetVariableDescriptorCountAllocateInfo VkDescriptorSetVariableDescriptorCountAllocateInfoEXT;
+
+typedef VkDescriptorSetVariableDescriptorCountLayoutSupport VkDescriptorSetVariableDescriptorCountLayoutSupportEXT;
 
 
 
@@ -9075,7 +9595,7 @@ typedef struct VkFilterCubicImageViewImageFormatPropertiesEXT {
     VkStructureType    sType;
     void*              pNext;
     VkBool32           filterCubic;
-    VkBool32           filterCubicMinmax ;
+    VkBool32           filterCubicMinmax;
 } VkFilterCubicImageViewImageFormatPropertiesEXT;
 
 
@@ -9694,11 +10214,7 @@ typedef struct VkRenderPassFragmentDensityMapCreateInfoEXT {
 #define VK_EXT_scalar_block_layout 1
 #define VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION 1
 #define VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME "VK_EXT_scalar_block_layout"
-typedef struct VkPhysicalDeviceScalarBlockLayoutFeaturesEXT {
-    VkStructureType    sType;
-    void*              pNext;
-    VkBool32           scalarBlockLayout;
-} VkPhysicalDeviceScalarBlockLayoutFeaturesEXT;
+typedef VkPhysicalDeviceScalarBlockLayoutFeatures VkPhysicalDeviceScalarBlockLayoutFeaturesEXT;
 
 
 
@@ -9808,7 +10324,6 @@ typedef struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV {
 
 
 #define VK_EXT_buffer_device_address 1
-typedef uint64_t VkDeviceAddress;
 #define VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION 2
 #define VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME "VK_EXT_buffer_device_address"
 typedef struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT {
@@ -9821,11 +10336,7 @@ typedef struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT {
 
 typedef VkPhysicalDeviceBufferDeviceAddressFeaturesEXT VkPhysicalDeviceBufferAddressFeaturesEXT;
 
-typedef struct VkBufferDeviceAddressInfoEXT {
-    VkStructureType    sType;
-    const void*        pNext;
-    VkBuffer           buffer;
-} VkBufferDeviceAddressInfoEXT;
+typedef VkBufferDeviceAddressInfo VkBufferDeviceAddressInfoEXT;
 
 typedef struct VkBufferDeviceAddressCreateInfoEXT {
     VkStructureType    sType;
@@ -9833,23 +10344,19 @@ typedef struct VkBufferDeviceAddressCreateInfoEXT {
     VkDeviceAddress    deviceAddress;
 } VkBufferDeviceAddressCreateInfoEXT;
 
-typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetBufferDeviceAddressEXT)(VkDevice device, const VkBufferDeviceAddressInfoEXT* pInfo);
+typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetBufferDeviceAddressEXT)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
 
 #ifndef VK_NO_PROTOTYPES
 VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetBufferDeviceAddressEXT(
     VkDevice                                    device,
-    const VkBufferDeviceAddressInfoEXT*         pInfo);
+    const VkBufferDeviceAddressInfo*            pInfo);
 #endif
 
 
 #define VK_EXT_separate_stencil_usage 1
 #define VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION 1
 #define VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME "VK_EXT_separate_stencil_usage"
-typedef struct VkImageStencilUsageCreateInfoEXT {
-    VkStructureType      sType;
-    const void*          pNext;
-    VkImageUsageFlags    stencilUsage;
-} VkImageStencilUsageCreateInfoEXT;
+typedef VkImageStencilUsageCreateInfo VkImageStencilUsageCreateInfoEXT;
 
 
 
@@ -10102,11 +10609,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdSetLineStippleEXT(
 #define VK_EXT_host_query_reset 1
 #define VK_EXT_HOST_QUERY_RESET_SPEC_VERSION 1
 #define VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME "VK_EXT_host_query_reset"
-typedef struct VkPhysicalDeviceHostQueryResetFeaturesEXT {
-    VkStructureType    sType;
-    void*              pNext;
-    VkBool32           hostQueryReset;
-} VkPhysicalDeviceHostQueryResetFeaturesEXT;
+typedef VkPhysicalDeviceHostQueryResetFeatures VkPhysicalDeviceHostQueryResetFeaturesEXT;
 
 typedef void (VKAPI_PTR *PFN_vkResetQueryPoolEXT)(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount);