Merge vk-gl-cts/master into vk-gl-cts/vulkan-sc-cts-dev
authorPawel Ksiezopolski <pawel.ksiezopolski@mobica.com>
Tue, 18 May 2021 13:34:01 +0000 (15:34 +0200)
committerAlexander Galazin <Alexander.Galazin@arm.com>
Fri, 21 May 2021 13:48:39 +0000 (13:48 +0000)
Affects tests:
dEQP-VK.*

Components:
Framework Vulkan VulkanSC

Change-Id: Iabdd3d5f45c2368d1c7a2ee1402fcb0280cc57b2

107 files changed:
1  2 
AndroidGen.mk
CMakeLists.txt
android/cts/master/mustpass.xml
android/cts/master/vksc-master.txt
android/cts/master/vksc-master/api.txt
external/vulkancts/framework/vulkan/generated/vulkan/vkBasicTypes.inl
external/vulkancts/framework/vulkan/generated/vulkan/vkConcreteDeviceInterface.inl
external/vulkancts/framework/vulkan/generated/vulkan/vkConcreteInstanceInterface.inl
external/vulkancts/framework/vulkan/generated/vulkan/vkDeviceDriverImpl.inl
external/vulkancts/framework/vulkan/generated/vulkan/vkDeviceExtensions.inl
external/vulkancts/framework/vulkan/generated/vulkan/vkDeviceFeatures.inl
external/vulkancts/framework/vulkan/generated/vulkan/vkDeviceFeaturesForContextDecl.inl
external/vulkancts/framework/vulkan/generated/vulkan/vkDeviceFeaturesForContextDefs.inl
external/vulkancts/framework/vulkan/generated/vulkan/vkDeviceFeaturesForDefaultDeviceDefs.inl
external/vulkancts/framework/vulkan/generated/vulkan/vkDeviceFunctionPointers.inl
external/vulkancts/framework/vulkan/generated/vulkan/vkDeviceProperties.inl
external/vulkancts/framework/vulkan/generated/vulkan/vkDevicePropertiesForContextDecl.inl
external/vulkancts/framework/vulkan/generated/vulkan/vkDevicePropertiesForContextDefs.inl
external/vulkancts/framework/vulkan/generated/vulkan/vkDevicePropertiesForDefaultDeviceDefs.inl
external/vulkancts/framework/vulkan/generated/vulkan/vkExtensionFunctions.inl
external/vulkancts/framework/vulkan/generated/vulkan/vkFunctionPointerTypes.inl
external/vulkancts/framework/vulkan/generated/vulkan/vkGetStructureTypeImpl.inl
external/vulkancts/framework/vulkan/generated/vulkan/vkHandleType.inl
external/vulkancts/framework/vulkan/generated/vulkan/vkInitDeviceFunctionPointers.inl
external/vulkancts/framework/vulkan/generated/vulkan/vkInitInstanceFunctionPointers.inl
external/vulkancts/framework/vulkan/generated/vulkan/vkInstanceDriverImpl.inl
external/vulkancts/framework/vulkan/generated/vulkan/vkInstanceFunctionPointers.inl
external/vulkancts/framework/vulkan/generated/vulkan/vkKnownDriverIds.inl
external/vulkancts/framework/vulkan/generated/vulkan/vkMandatoryFeatures.inl
external/vulkancts/framework/vulkan/generated/vulkan/vkNullDriverImpl.inl
external/vulkancts/framework/vulkan/generated/vulkan/vkObjTypeImpl.inl
external/vulkancts/framework/vulkan/generated/vulkan/vkRefUtil.inl
external/vulkancts/framework/vulkan/generated/vulkan/vkRefUtilImpl.inl
external/vulkancts/framework/vulkan/generated/vulkan/vkStrUtil.inl
external/vulkancts/framework/vulkan/generated/vulkan/vkStrUtilImpl.inl
external/vulkancts/framework/vulkan/generated/vulkan/vkStructTypes.inl
external/vulkancts/framework/vulkan/generated/vulkan/vkTypeUtil.inl
external/vulkancts/framework/vulkan/generated/vulkan/vkVirtualDeviceInterface.inl
external/vulkancts/framework/vulkan/generated/vulkan/vkVirtualInstanceInterface.inl
external/vulkancts/framework/vulkan/generated/vulkansc/vkBasicTypes.inl
external/vulkancts/framework/vulkan/generated/vulkansc/vkConcreteDeviceInterface.inl
external/vulkancts/framework/vulkan/generated/vulkansc/vkConcreteInstanceInterface.inl
external/vulkancts/framework/vulkan/generated/vulkansc/vkCoreFunctionalities.inl
external/vulkancts/framework/vulkan/generated/vulkansc/vkDeviceDriverImpl.inl
external/vulkancts/framework/vulkan/generated/vulkansc/vkDeviceExtensions.inl
external/vulkancts/framework/vulkan/generated/vulkansc/vkDeviceFeatures.inl
external/vulkancts/framework/vulkan/generated/vulkansc/vkDeviceFeatures2.inl
external/vulkancts/framework/vulkan/generated/vulkansc/vkDeviceFeaturesForContextDecl.inl
external/vulkancts/framework/vulkan/generated/vulkansc/vkDeviceFeaturesForContextDefs.inl
external/vulkancts/framework/vulkan/generated/vulkansc/vkDeviceFeaturesForDefaultDeviceDefs.inl
external/vulkancts/framework/vulkan/generated/vulkansc/vkDeviceFunctionPointers.inl
external/vulkancts/framework/vulkan/generated/vulkansc/vkDeviceProperties.inl
external/vulkancts/framework/vulkan/generated/vulkansc/vkDevicePropertiesForContextDecl.inl
external/vulkancts/framework/vulkan/generated/vulkansc/vkDevicePropertiesForContextDefs.inl
external/vulkancts/framework/vulkan/generated/vulkansc/vkDevicePropertiesForDefaultDeviceDefs.inl
external/vulkancts/framework/vulkan/generated/vulkansc/vkExtensionFunctions.inl
external/vulkancts/framework/vulkan/generated/vulkansc/vkFunctionPointerTypes.inl
external/vulkancts/framework/vulkan/generated/vulkansc/vkGetStructureTypeImpl.inl
external/vulkancts/framework/vulkan/generated/vulkansc/vkHandleType.inl
external/vulkancts/framework/vulkan/generated/vulkansc/vkInitDeviceFunctionPointers.inl
external/vulkancts/framework/vulkan/generated/vulkansc/vkInitInstanceFunctionPointers.inl
external/vulkancts/framework/vulkan/generated/vulkansc/vkInstanceDriverImpl.inl
external/vulkancts/framework/vulkan/generated/vulkansc/vkInstanceFunctionPointers.inl
external/vulkancts/framework/vulkan/generated/vulkansc/vkKnownDriverIds.inl
external/vulkancts/framework/vulkan/generated/vulkansc/vkMandatoryFeatures.inl
external/vulkancts/framework/vulkan/generated/vulkansc/vkNullDriverImpl.inl
external/vulkancts/framework/vulkan/generated/vulkansc/vkObjTypeImpl.inl
external/vulkancts/framework/vulkan/generated/vulkansc/vkRefUtil.inl
external/vulkancts/framework/vulkan/generated/vulkansc/vkRefUtilImpl.inl
external/vulkancts/framework/vulkan/generated/vulkansc/vkStrUtil.inl
external/vulkancts/framework/vulkan/generated/vulkansc/vkStrUtilImpl.inl
external/vulkancts/framework/vulkan/generated/vulkansc/vkStructTypes.inl
external/vulkancts/framework/vulkan/generated/vulkansc/vkTypeUtil.inl
external/vulkancts/framework/vulkan/generated/vulkansc/vkVirtualDeviceInterface.inl
external/vulkancts/framework/vulkan/generated/vulkansc/vkVirtualInstanceInterface.inl
external/vulkancts/framework/vulkan/generated/vulkansc/vkVulkan_c.inl
external/vulkancts/framework/vulkan/vkDefs.hpp
external/vulkancts/framework/vulkan/vkImageUtil.cpp
external/vulkancts/framework/vulkan/vkImageUtil.hpp
external/vulkancts/framework/vulkan/vkNullDriver.cpp
external/vulkancts/framework/vulkan/vkPrograms.cpp
external/vulkancts/framework/vulkan/vkPrograms.hpp
external/vulkancts/framework/vulkan/vkQueryUtil.cpp
external/vulkancts/framework/vulkan/vkQueryUtil.hpp
external/vulkancts/framework/vulkan/vkRayTracingUtil.cpp
external/vulkancts/framework/vulkan/vkRayTracingUtil.hpp
external/vulkancts/framework/vulkan/vkRef.hpp
external/vulkancts/framework/vulkan/vkTypeUtil.hpp
external/vulkancts/framework/vulkan/vkWsiUtil.cpp
external/vulkancts/modules/vulkan/CMakeLists.txt
external/vulkancts/modules/vulkan/api/vktApiFeatureInfo.cpp
external/vulkancts/modules/vulkan/util/CMakeLists.txt
external/vulkancts/modules/vulkan/util/vktExternalMemoryUtil.cpp
external/vulkancts/modules/vulkan/vktTestCase.cpp
external/vulkancts/modules/vulkan/vktTestCase.hpp
external/vulkancts/modules/vulkan/vktTestPackage.cpp
external/vulkancts/mustpass/master/vksc-default.txt
external/vulkancts/mustpass/master/vksc-default/api.txt
external/vulkancts/scripts/build_mustpass.py
external/vulkancts/scripts/gen_framework.py
external/vulkancts/scripts/gen_framework_c.py
external/vulkancts/scripts/src/mandatory_features.txt
external/vulkancts/scripts/src/vulkan_sc_core.h
framework/platform/CMakeLists.txt
modules/gles31/CMakeLists.txt
scripts/build_android_mustpass.py
scripts/check_build_sanity.py

diff --cc AndroidGen.mk
Simple merge
diff --cc CMakeLists.txt
Simple merge
@@@ -50,8 -53,6 +53,9 @@@
                <Configuration caseListFile="vk-master.txt" commandLine="--deqp-watchdog=enable" name="master"/>
                <Configuration caseListFile="vk-master-2019-03-01.txt" commandLine="--deqp-watchdog=enable" name="master-2019-03-01"/>
                <Configuration caseListFile="vk-master-2020-03-01.txt" commandLine="--deqp-watchdog=enable" name="master-2020-03-01"/>
+               <Configuration caseListFile="vk-master-2021-03-01.txt" commandLine="--deqp-watchdog=enable" name="master-2021-03-01"/>
        </TestPackage>
 +      <TestPackage name="dEQP-VKSC">
 +              <Configuration caseListFile="vksc-master.txt" commandLine="--deqp-watchdog=enable" name="master"/>
 +      </TestPackage>
  </Mustpass>
index 264d26d,0000000..8e9891c
mode 100644,000000..100644
--- /dev/null
@@@ -1,2 -1,0 +1,1 @@@
- dEQP-VKSC.api.version_check.version
- dEQP-VKSC.api.version_check.entry_points
++vksc-master/api.txt
index 0000000,0000000..264d26d
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,2 @@@
++dEQP-VKSC.api.version_check.version
++dEQP-VKSC.api.version_check.entry_points
@@@ -21,31 -21,61 +21,71 @@@ bool checkMandatoryFeatures(const vkt::
  
        if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_16bit_storage")) )
        {
 -              physicalDevice16BitStorageFeaturesKHR.sType = getStructureType<VkPhysicalDevice16BitStorageFeaturesKHR>();
 -              *nextPtr = &physicalDevice16BitStorageFeaturesKHR;
 -              nextPtr  = &physicalDevice16BitStorageFeaturesKHR.pNext;
 +              physicalDevice16BitStorageFeatures.sType = getStructureType<VkPhysicalDevice16BitStorageFeatures>();
 +              *nextPtr = &physicalDevice16BitStorageFeatures;
 +              nextPtr  = &physicalDevice16BitStorageFeatures.pNext;
        }
  
 -      vk::VkPhysicalDevice8BitStorageFeaturesKHR physicalDevice8BitStorageFeaturesKHR;
 -      deMemset(&physicalDevice8BitStorageFeaturesKHR, 0, sizeof(physicalDevice8BitStorageFeaturesKHR));
+       vk::VkPhysicalDevice4444FormatsFeaturesEXT physicalDevice4444FormatsFeaturesEXT;
+       deMemset(&physicalDevice4444FormatsFeaturesEXT, 0, sizeof(physicalDevice4444FormatsFeaturesEXT));
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_4444_formats")) )
+       {
+               physicalDevice4444FormatsFeaturesEXT.sType = getStructureType<VkPhysicalDevice4444FormatsFeaturesEXT>();
+               *nextPtr = &physicalDevice4444FormatsFeaturesEXT;
+               nextPtr  = &physicalDevice4444FormatsFeaturesEXT.pNext;
+       }
 +      vk::VkPhysicalDevice8BitStorageFeatures physicalDevice8BitStorageFeatures;
 +      deMemset(&physicalDevice8BitStorageFeatures, 0, sizeof(physicalDevice8BitStorageFeatures));
  
        if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_8bit_storage")) )
        {
 -              physicalDevice8BitStorageFeaturesKHR.sType = getStructureType<VkPhysicalDevice8BitStorageFeaturesKHR>();
 -              *nextPtr = &physicalDevice8BitStorageFeaturesKHR;
 -              nextPtr  = &physicalDevice8BitStorageFeaturesKHR.pNext;
 +              physicalDevice8BitStorageFeatures.sType = getStructureType<VkPhysicalDevice8BitStorageFeatures>();
 +              *nextPtr = &physicalDevice8BitStorageFeatures;
 +              nextPtr  = &physicalDevice8BitStorageFeatures.pNext;
        }
  
 -      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_buffer_device_address")) || context.contextSupports(vk::ApiVersion(1, 1, 0)) )
+       vk::VkPhysicalDeviceAccelerationStructureFeaturesKHR physicalDeviceAccelerationStructureFeaturesKHR;
+       deMemset(&physicalDeviceAccelerationStructureFeaturesKHR, 0, sizeof(physicalDeviceAccelerationStructureFeaturesKHR));
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
+       {
+               physicalDeviceAccelerationStructureFeaturesKHR.sType = getStructureType<VkPhysicalDeviceAccelerationStructureFeaturesKHR>();
+               *nextPtr = &physicalDeviceAccelerationStructureFeaturesKHR;
+               nextPtr  = &physicalDeviceAccelerationStructureFeaturesKHR.pNext;
+       }
 +      vk::VkPhysicalDeviceBufferDeviceAddressFeatures physicalDeviceBufferDeviceAddressFeatures;
 +      deMemset(&physicalDeviceBufferDeviceAddressFeatures, 0, sizeof(physicalDeviceBufferDeviceAddressFeatures));
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_buffer_device_address")) )
 +      {
 +              physicalDeviceBufferDeviceAddressFeatures.sType = getStructureType<VkPhysicalDeviceBufferDeviceAddressFeatures>();
 +              *nextPtr = &physicalDeviceBufferDeviceAddressFeatures;
 +              nextPtr  = &physicalDeviceBufferDeviceAddressFeatures.pNext;
 +      }
 +
+       vk::VkPhysicalDeviceBufferDeviceAddressFeaturesKHR physicalDeviceBufferDeviceAddressFeaturesKHR;
+       deMemset(&physicalDeviceBufferDeviceAddressFeaturesKHR, 0, sizeof(physicalDeviceBufferDeviceAddressFeaturesKHR));
++      if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) )
+       {
+               physicalDeviceBufferDeviceAddressFeaturesKHR.sType = getStructureType<VkPhysicalDeviceBufferDeviceAddressFeaturesKHR>();
+               *nextPtr = &physicalDeviceBufferDeviceAddressFeaturesKHR;
+               nextPtr  = &physicalDeviceBufferDeviceAddressFeaturesKHR.pNext;
+       }
+       vk::VkPhysicalDeviceColorWriteEnableFeaturesEXT physicalDeviceColorWriteEnableFeaturesEXT;
+       deMemset(&physicalDeviceColorWriteEnableFeaturesEXT, 0, sizeof(physicalDeviceColorWriteEnableFeaturesEXT));
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_color_write_enable")) )
+       {
+               physicalDeviceColorWriteEnableFeaturesEXT.sType = getStructureType<VkPhysicalDeviceColorWriteEnableFeaturesEXT>();
+               *nextPtr = &physicalDeviceColorWriteEnableFeaturesEXT;
+               nextPtr  = &physicalDeviceColorWriteEnableFeaturesEXT.pNext;
+       }
        vk::VkPhysicalDeviceConditionalRenderingFeaturesEXT physicalDeviceConditionalRenderingFeaturesEXT;
        deMemset(&physicalDeviceConditionalRenderingFeaturesEXT, 0, sizeof(physicalDeviceConditionalRenderingFeaturesEXT));
  
                nextPtr  = &physicalDeviceDepthClipEnableFeaturesEXT.pNext;
        }
  
 -      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) || context.contextSupports(vk::ApiVersion(1, 1, 0)) )
 +      vk::VkPhysicalDeviceDescriptorIndexingFeatures physicalDeviceDescriptorIndexingFeatures;
 +      deMemset(&physicalDeviceDescriptorIndexingFeatures, 0, sizeof(physicalDeviceDescriptorIndexingFeatures));
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) )
 +      {
 +              physicalDeviceDescriptorIndexingFeatures.sType = getStructureType<VkPhysicalDeviceDescriptorIndexingFeatures>();
 +              *nextPtr = &physicalDeviceDescriptorIndexingFeatures;
 +              nextPtr  = &physicalDeviceDescriptorIndexingFeatures.pNext;
 +      }
 +
+       vk::VkPhysicalDeviceDescriptorIndexingFeaturesEXT physicalDeviceDescriptorIndexingFeaturesEXT;
+       deMemset(&physicalDeviceDescriptorIndexingFeaturesEXT, 0, sizeof(physicalDeviceDescriptorIndexingFeaturesEXT));
++      if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) )
+       {
+               physicalDeviceDescriptorIndexingFeaturesEXT.sType = getStructureType<VkPhysicalDeviceDescriptorIndexingFeaturesEXT>();
+               *nextPtr = &physicalDeviceDescriptorIndexingFeaturesEXT;
+               nextPtr  = &physicalDeviceDescriptorIndexingFeaturesEXT.pNext;
+       }
+       vk::VkPhysicalDeviceExtendedDynamicState2FeaturesEXT physicalDeviceExtendedDynamicState2FeaturesEXT;
+       deMemset(&physicalDeviceExtendedDynamicState2FeaturesEXT, 0, sizeof(physicalDeviceExtendedDynamicState2FeaturesEXT));
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_extended_dynamic_state2")) )
+       {
+               physicalDeviceExtendedDynamicState2FeaturesEXT.sType = getStructureType<VkPhysicalDeviceExtendedDynamicState2FeaturesEXT>();
+               *nextPtr = &physicalDeviceExtendedDynamicState2FeaturesEXT;
+               nextPtr  = &physicalDeviceExtendedDynamicState2FeaturesEXT.pNext;
+       }
        vk::VkPhysicalDeviceFragmentDensityMapFeaturesEXT physicalDeviceFragmentDensityMapFeaturesEXT;
        deMemset(&physicalDeviceFragmentDensityMapFeaturesEXT, 0, sizeof(physicalDeviceFragmentDensityMapFeaturesEXT));
  
  
        if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_sampler_ycbcr_conversion")) )
        {
-               physicalDeviceSamplerYcbcrConversionFeatures.sType = getStructureType<VkPhysicalDeviceSamplerYcbcrConversionFeatures>();
-               *nextPtr = &physicalDeviceSamplerYcbcrConversionFeatures;
-               nextPtr  = &physicalDeviceSamplerYcbcrConversionFeatures.pNext;
+               physicalDeviceSamplerYcbcrConversionFeaturesKHR.sType = getStructureType<VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR>();
+               *nextPtr = &physicalDeviceSamplerYcbcrConversionFeaturesKHR;
+               nextPtr  = &physicalDeviceSamplerYcbcrConversionFeaturesKHR.pNext;
        }
  
 -      vk::VkPhysicalDeviceScalarBlockLayoutFeaturesEXT physicalDeviceScalarBlockLayoutFeaturesEXT;
 -      deMemset(&physicalDeviceScalarBlockLayoutFeaturesEXT, 0, sizeof(physicalDeviceScalarBlockLayoutFeaturesEXT));
 +      vk::VkPhysicalDeviceScalarBlockLayoutFeatures physicalDeviceScalarBlockLayoutFeatures;
 +      deMemset(&physicalDeviceScalarBlockLayoutFeatures, 0, sizeof(physicalDeviceScalarBlockLayoutFeatures));
  
        if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_scalar_block_layout")) )
        {
  
        if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_vulkan_memory_model")) )
        {
 -              physicalDeviceVulkanMemoryModelFeaturesKHR.sType = getStructureType<VkPhysicalDeviceVulkanMemoryModelFeaturesKHR>();
 -              *nextPtr = &physicalDeviceVulkanMemoryModelFeaturesKHR;
 -              nextPtr  = &physicalDeviceVulkanMemoryModelFeaturesKHR.pNext;
 +              physicalDeviceVulkanMemoryModelFeatures.sType = getStructureType<VkPhysicalDeviceVulkanMemoryModelFeatures>();
 +              *nextPtr = &physicalDeviceVulkanMemoryModelFeatures;
 +              nextPtr  = &physicalDeviceVulkanMemoryModelFeatures.pNext;
        }
  
+       vk::VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR;
+       deMemset(&physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR, 0, sizeof(physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR));
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_workgroup_memory_explicit_layout")) )
+       {
+               physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.sType = getStructureType<VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR>();
+               *nextPtr = &physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR;
+               nextPtr  = &physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.pNext;
+       }
+       vk::VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT physicalDeviceYcbcr2Plane444FormatsFeaturesEXT;
+       deMemset(&physicalDeviceYcbcr2Plane444FormatsFeaturesEXT, 0, sizeof(physicalDeviceYcbcr2Plane444FormatsFeaturesEXT));
+       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_ycbcr_2plane_444_formats")) )
+       {
+               physicalDeviceYcbcr2Plane444FormatsFeaturesEXT.sType = getStructureType<VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT>();
+               *nextPtr = &physicalDeviceYcbcr2Plane444FormatsFeaturesEXT;
+               nextPtr  = &physicalDeviceYcbcr2Plane444FormatsFeaturesEXT.pNext;
+       }
        vk::VkPhysicalDeviceYcbcrImageArraysFeaturesEXT physicalDeviceYcbcrImageArraysFeaturesEXT;
        deMemset(&physicalDeviceYcbcrImageArraysFeaturesEXT, 0, sizeof(physicalDeviceYcbcrImageArraysFeaturesEXT));
  
index 69978bf,0000000..f0768a1
mode 100644,000000..100644
--- /dev/null
@@@ -1,2159 -1,0 +1,2354 @@@
- #define VK_API_VERSION_1_0                                    (static_cast<deUint32>                  (VK_MAKE_VERSION(1, 0, 0)))
- #define VKSC_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                               (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))
- #define VK_MAX_MEMORY_HEAPS                                   (static_cast<size_t>                    (16))
- #define VK_MAX_DESCRIPTION_SIZE                               (static_cast<size_t>                    (256))
- #define VK_MAX_DEVICE_GROUP_SIZE                      (static_cast<size_t>                    (32))
 +/* WARNING: This is auto-generated file. Do not modify, since changes will
 + * be lost! Modify the generating script instead.
 + */
- #define VK_QUEUE_FAMILY_EXTERNAL                      (static_cast<deUint32>                  ((~0U-1)))
++#define VK_API_VERSION_1_0                                    (static_cast<deUint32>                  (VK_MAKE_API_VERSION(0, 1, 0, 0)))
++#define VK_API_VERSION_1_1                                    (static_cast<deUint32>                  (VK_MAKE_API_VERSION(0, 1, 1, 0)))
++#define VK_API_VERSION_1_2                                    (static_cast<deUint32>                  (VK_MAKE_API_VERSION(0, 1, 2, 0)))
++#define VKSC_API_VERSION_1_0                          (static_cast<deUint32>                  (VK_MAKE_API_VERSION(VKSC_API_VARIANT, 1, 0, 0)))
++#define VK_MAX_PHYSICAL_DEVICE_NAME_SIZE      (static_cast<size_t>                    (256U))
++#define VK_MAX_EXTENSION_NAME_SIZE                    (static_cast<size_t>                    (256U))
++#define VK_MAX_DRIVER_NAME_SIZE                               (static_cast<size_t>                    (256U))
++#define VK_MAX_DRIVER_INFO_SIZE                               (static_cast<size_t>                    (256U))
++#define VK_UUID_SIZE                                          (static_cast<size_t>                    (16U))
++#define VK_LUID_SIZE                                          (static_cast<size_t>                    (8U))
++#define VK_MAX_MEMORY_TYPES                                   (static_cast<size_t>                    (32U))
++#define VK_MAX_MEMORY_HEAPS                                   (static_cast<size_t>                    (16U))
++#define VK_MAX_DESCRIPTION_SIZE                               (static_cast<size_t>                    (256U))
++#define VK_MAX_DEVICE_GROUP_SIZE                      (static_cast<size_t>                    (32U))
 +#define VK_ATTACHMENT_UNUSED                          (static_cast<deUint32>                  ((~0U)))
 +#define VK_SUBPASS_EXTERNAL                                   (static_cast<deUint32>                  ((~0U)))
 +#define VK_QUEUE_FAMILY_IGNORED                               (static_cast<deUint32>                  ((~0U)))
- #define VK_TRUE                                                               (static_cast<vk::VkBool32>              (1))
- #define VK_FALSE                                                      (static_cast<vk::VkBool32>              (0))
++#define VK_QUEUE_FAMILY_EXTERNAL                      (static_cast<deUint32>                  ((~1U)))
 +#define VK_REMAINING_MIP_LEVELS                               (static_cast<deUint32>                  ((~0U)))
 +#define VK_REMAINING_ARRAY_LAYERS                     (static_cast<deUint32>                  ((~0U)))
 +#define VK_WHOLE_SIZE                                         (static_cast<vk::VkDeviceSize>  ((~0ULL)))
-       VK_ERROR_INVALID_PIPELINE_CACHE_DATA                                    = -1000349000,
-       VK_ERROR_NO_PIPELINE_MATCH                                                              = -1000349001,
++#define VK_TRUE                                                               (static_cast<vk::VkBool32>              (1U))
++#define VK_FALSE                                                      (static_cast<vk::VkBool32>              (0U))
 +#define VK_API_MAX_FRAMEWORK_VERSION          VK_API_VERSION_1_2
 +
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE     (VkBuffer,                                      HANDLE_TYPE_BUFFER);
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE     (VkImage,                                       HANDLE_TYPE_IMAGE);
 +VK_DEFINE_HANDLE                                      (VkInstance,                            HANDLE_TYPE_INSTANCE);
 +VK_DEFINE_HANDLE                                      (VkPhysicalDevice,                      HANDLE_TYPE_PHYSICAL_DEVICE);
 +VK_DEFINE_HANDLE                                      (VkDevice,                                      HANDLE_TYPE_DEVICE);
 +VK_DEFINE_HANDLE                                      (VkQueue,                                       HANDLE_TYPE_QUEUE);
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE     (VkSemaphore,                           HANDLE_TYPE_SEMAPHORE);
 +VK_DEFINE_HANDLE                                      (VkCommandBuffer,                       HANDLE_TYPE_COMMAND_BUFFER);
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE     (VkFence,                                       HANDLE_TYPE_FENCE);
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE     (VkDeviceMemory,                        HANDLE_TYPE_DEVICE_MEMORY);
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE     (VkEvent,                                       HANDLE_TYPE_EVENT);
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE     (VkQueryPool,                           HANDLE_TYPE_QUERY_POOL);
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE     (VkBufferView,                          HANDLE_TYPE_BUFFER_VIEW);
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE     (VkImageView,                           HANDLE_TYPE_IMAGE_VIEW);
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE     (VkShaderModule,                        HANDLE_TYPE_SHADER_MODULE);
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE     (VkPipelineCache,                       HANDLE_TYPE_PIPELINE_CACHE);
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE     (VkPipelineLayout,                      HANDLE_TYPE_PIPELINE_LAYOUT);
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE     (VkPipeline,                            HANDLE_TYPE_PIPELINE);
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE     (VkRenderPass,                          HANDLE_TYPE_RENDER_PASS);
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE     (VkDescriptorSetLayout,         HANDLE_TYPE_DESCRIPTOR_SET_LAYOUT);
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE     (VkSampler,                                     HANDLE_TYPE_SAMPLER);
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE     (VkDescriptorSet,                       HANDLE_TYPE_DESCRIPTOR_SET);
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE     (VkDescriptorPool,                      HANDLE_TYPE_DESCRIPTOR_POOL);
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE     (VkFramebuffer,                         HANDLE_TYPE_FRAMEBUFFER);
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE     (VkCommandPool,                         HANDLE_TYPE_COMMAND_POOL);
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE     (VkSamplerYcbcrConversion,      HANDLE_TYPE_SAMPLER_YCBCR_CONVERSION);
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE     (VkSurfaceKHR,                          HANDLE_TYPE_SURFACE_KHR);
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE     (VkSwapchainKHR,                        HANDLE_TYPE_SWAPCHAIN_KHR);
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE     (VkDisplayKHR,                          HANDLE_TYPE_DISPLAY_KHR);
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE     (VkDisplayModeKHR,                      HANDLE_TYPE_DISPLAY_MODE_KHR);
++VK_DEFINE_NON_DISPATCHABLE_HANDLE     (VkDebugUtilsMessengerEXT,      HANDLE_TYPE_DEBUG_UTILS_MESSENGER_EXT);
 +
 +enum VkResult
 +{
 +      VK_SUCCESS                                                                                              = 0,
 +      VK_NOT_READY                                                                                    = 1,
 +      VK_TIMEOUT                                                                                              = 2,
 +      VK_EVENT_SET                                                                                    = 3,
 +      VK_EVENT_RESET                                                                                  = 4,
 +      VK_INCOMPLETE                                                                                   = 5,
 +      VK_ERROR_OUT_OF_HOST_MEMORY                                                             = -1,
 +      VK_ERROR_OUT_OF_DEVICE_MEMORY                                                   = -2,
 +      VK_ERROR_INITIALIZATION_FAILED                                                  = -3,
 +      VK_ERROR_DEVICE_LOST                                                                    = -4,
 +      VK_ERROR_MEMORY_MAP_FAILED                                                              = -5,
 +      VK_ERROR_LAYER_NOT_PRESENT                                                              = -6,
 +      VK_ERROR_EXTENSION_NOT_PRESENT                                                  = -7,
 +      VK_ERROR_FEATURE_NOT_PRESENT                                                    = -8,
 +      VK_ERROR_INCOMPATIBLE_DRIVER                                                    = -9,
 +      VK_ERROR_TOO_MANY_OBJECTS                                                               = -10,
 +      VK_ERROR_FORMAT_NOT_SUPPORTED                                                   = -11,
 +      VK_ERROR_FRAGMENTED_POOL                                                                = -12,
 +      VK_ERROR_UNKNOWN                                                                                = -13,
 +      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_INVALID_PIPELINE_CACHE_DATA_KHR                                = VK_ERROR_INVALID_PIPELINE_CACHE_DATA,
-       VK_ERROR_NO_PIPELINE_MATCH_KHR                                                  = VK_ERROR_NO_PIPELINE_MATCH,
++      VK_ERROR_INVALID_PIPELINE_CACHE_DATA                                    = -1000298000,
++      VK_ERROR_NO_PIPELINE_MATCH                                                              = -1000298001,
 +      VK_ERROR_SURFACE_LOST_KHR                                                               = -1000000000,
 +      VK_ERROR_NATIVE_WINDOW_IN_USE_KHR                                               = -1000000001,
 +      VK_SUBOPTIMAL_KHR                                                                               = 1000001003,
 +      VK_ERROR_OUT_OF_DATE_KHR                                                                = -1000001004,
 +      VK_ERROR_INCOMPATIBLE_DISPLAY_KHR                                               = -1000003001,
 +      VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT   = -1000158000,
 +      VK_ERROR_NOT_PERMITTED_EXT                                                              = -1000174001,
-       VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO                                                                         = 1000060006,
 +      VK_RESULT_MAX_ENUM                                                                              = 0x7FFFFFFF,
 +};
 +
 +enum VkStructureType
 +{
 +      VK_STRUCTURE_TYPE_APPLICATION_INFO                                                                                                      = 0,
 +      VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO                                                                                          = 1,
 +      VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO                                                                                      = 2,
 +      VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO                                                                                            = 3,
 +      VK_STRUCTURE_TYPE_SUBMIT_INFO                                                                                                           = 4,
 +      VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO                                                                                          = 5,
 +      VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE                                                                                           = 6,
 +      VK_STRUCTURE_TYPE_BIND_SPARSE_INFO                                                                                                      = 7,
 +      VK_STRUCTURE_TYPE_FENCE_CREATE_INFO                                                                                                     = 8,
 +      VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO                                                                                         = 9,
 +      VK_STRUCTURE_TYPE_EVENT_CREATE_INFO                                                                                                     = 10,
 +      VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO                                                                                        = 11,
 +      VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO                                                                                            = 12,
 +      VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO                                                                                       = 13,
 +      VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO                                                                                                     = 14,
 +      VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO                                                                                        = 15,
 +      VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO                                                                                     = 16,
 +      VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO                                                                            = 17,
 +      VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO                                                                     = 18,
 +      VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO                                                       = 19,
 +      VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO                                                     = 20,
 +      VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO                                                       = 21,
 +      VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO                                                           = 22,
 +      VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO                                                      = 23,
 +      VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO                                                        = 24,
 +      VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO                                                      = 25,
 +      VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO                                                        = 26,
 +      VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO                                                            = 27,
 +      VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO                                                                         = 28,
 +      VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO                                                                          = 29,
 +      VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO                                                                           = 30,
 +      VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO                                                                                           = 31,
 +      VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO                                                                     = 32,
 +      VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO                                                                           = 33,
 +      VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO                                                                          = 34,
 +      VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET                                                                                          = 35,
 +      VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET                                                                                           = 36,
 +      VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO                                                                                       = 37,
 +      VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO                                                                                       = 38,
 +      VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO                                                                                      = 39,
 +      VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO                                                                          = 40,
 +      VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO                                                                       = 41,
 +      VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO                                                                                     = 42,
 +      VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO                                                                                        = 43,
 +      VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER                                                                                         = 44,
 +      VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER                                                                                          = 45,
 +      VK_STRUCTURE_TYPE_MEMORY_BARRIER                                                                                                        = 46,
 +      VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO                                                                           = 47,
 +      VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO                                                                                     = 48,
 +      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES                                                           = 1000094000,
 +      VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO                                                                                       = 1000157000,
 +      VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO                                                                                        = 1000157001,
 +      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES                                                        = 1000083000,
 +      VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS                                                                         = 1000127000,
 +      VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO                                                                        = 1000127001,
 +      VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO                                                                            = 1000060000,
 +      VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO                                                           = 1000060003,
 +      VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO                                                        = 1000060004,
 +      VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO                                                                                      = 1000060005,
-       VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2                                                       = 1000146002,
 +      VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO                                                          = 1000060013,
 +      VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO                                                           = 1000060014,
 +      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES                                                                      = 1000070000,
 +      VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO                                                                       = 1000070001,
 +      VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2                                                                     = 1000146000,
 +      VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2                                                                      = 1000146001,
-       VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2                                                            = 1000146004,
 +      VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2                                                                                         = 1000146003,
-       VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2                                                                      = 1000059007,
-       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2                                            = 1000059008,
 +      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2                                                                            = 1000059000,
 +      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2                                                                          = 1000059001,
 +      VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2                                                                                           = 1000059002,
 +      VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2                                                                                     = 1000059003,
 +      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2                                                           = 1000059004,
 +      VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2                                                                                     = 1000059005,
 +      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2                                                           = 1000059006,
-       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_PROPERTIES                                                      = 1000357000,
-       VK_STRUCTURE_TYPE_DEVICE_MEMORY_RESERVATION_CREATE_INFO                                                         = 1000357001,
-       VK_STRUCTURE_TYPE_COMMAND_POOL_MEMORY_RESERVATION_CREATE_INFO                                           = 1000357002,
-       VK_STRUCTURE_TYPE_COMMAND_POOL_MEMORY_CONSUMPTION                                                                       = 1000357003,
-       VK_STRUCTURE_TYPE_PIPELINE_POOL_SIZE                                                                                            = 1000357004,
-       VK_STRUCTURE_TYPE_PIPELINE_POOL_ENTRY_SIZE_CREATE_INFO                                                          = 1000357005,
-       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_FEATURES                                                        = 1000357006,
-       VK_STRUCTURE_TYPE_FAULT_DATA                                                                                                            = 1000298000,
-       VK_STRUCTURE_TYPE_FAULT_CALLBACK_INFO                                                                                           = 1000298001,
-       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_HANDLING_PROPERTIES                                                     = 1000298002,
-       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_IDENTIFIER_FEATURES                                          = 1000334000,
-       VK_STRUCTURE_TYPE_PIPELINE_IDENTIFIER_INFO                                                                                      = 1000334001,
 +      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES                                                     = 1000117000,
 +      VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO                                       = 1000117001,
 +      VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO                                                                          = 1000117002,
 +      VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO                         = 1000117003,
 +      VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO                                                                     = 1000053000,
 +      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES                                                            = 1000053001,
 +      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES                                                          = 1000053002,
 +      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES                                            = 1000120000,
 +      VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO                                                                                         = 1000145000,
 +      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES                                                     = 1000145001,
 +      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES                                           = 1000145002,
 +      VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2                                                                                           = 1000145003,
 +      VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO                                                          = 1000156000,
 +      VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO                                                                         = 1000156001,
 +      VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO                                                                          = 1000156002,
 +      VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO                                                          = 1000156003,
 +      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES                                     = 1000156004,
 +      VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES                                      = 1000156005,
 +      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO                                            = 1000071000,
 +      VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES                                                                      = 1000071001,
 +      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO                                                          = 1000071002,
 +      VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES                                                                            = 1000071003,
 +      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES                                                                         = 1000071004,
 +      VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO                                                            = 1000072000,
 +      VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO                                                                     = 1000072001,
 +      VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO                                                                           = 1000072002,
 +      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO                                                           = 1000112000,
 +      VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES                                                                                     = 1000112001,
 +      VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO                                                                                      = 1000113000,
 +      VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO                                                                          = 1000077000,
 +      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO                                                       = 1000076000,
 +      VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES                                                                         = 1000076001,
 +      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_REFRESH_OBJECT_LIST_KHR                                                                                       = 1000299000,
++      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_FEATURES                                                        = 1000298000,
++      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_PROPERTIES                                                      = 1000298001,
++      VK_STRUCTURE_TYPE_DEVICE_OBJECT_RESERVATION_CREATE_INFO                                                         = 1000298002,
++      VK_STRUCTURE_TYPE_COMMAND_POOL_MEMORY_RESERVATION_CREATE_INFO                                           = 1000298003,
++      VK_STRUCTURE_TYPE_COMMAND_POOL_MEMORY_CONSUMPTION                                                                       = 1000298004,
++      VK_STRUCTURE_TYPE_PIPELINE_POOL_SIZE                                                                                            = 1000298005,
++      VK_STRUCTURE_TYPE_PIPELINE_POOL_ENTRY_SIZE_CREATE_INFO                                                          = 1000298006,
++      VK_STRUCTURE_TYPE_FAULT_DATA                                                                                                            = 1000298007,
++      VK_STRUCTURE_TYPE_FAULT_CALLBACK_INFO                                                                                           = 1000298008,
++      VK_STRUCTURE_TYPE_PIPELINE_IDENTIFIER_INFO                                                                                      = 1000298009,
 +      VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR                                                                                     = 1000001000,
 +      VK_STRUCTURE_TYPE_PRESENT_INFO_KHR                                                                                                      = 1000001001,
 +      VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR                                                         = 1000060007,
 +      VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR                                                                       = 1000060008,
 +      VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR                                                          = 1000060009,
 +      VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR                                                                           = 1000060010,
 +      VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR                                                                         = 1000060011,
 +      VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR                                                        = 1000060012,
 +      VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR                                                                          = 1000002000,
 +      VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR                                                                       = 1000002001,
 +      VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR                                                                                      = 1000003000,
 +      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT                     = 1000066000,
 +      VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT                                                                       = 1000067000,
 +      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT                                                      = 1000067001,
 +      VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR                                                                                     = 1000074000,
 +      VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR                                                                                      = 1000074001,
 +      VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR                                                                                        = 1000074002,
 +      VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR                                                                          = 1000079000,
 +      VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR                                                                                     = 1000079001,
 +      VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR                                                                                           = 1000084000,
 +      VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT                                                                            = 1000090000,
 +      VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT                                                                                        = 1000091000,
 +      VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT                                                                                         = 1000091001,
 +      VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT                                                                                        = 1000091002,
 +      VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT                                                                     = 1000091003,
 +      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT                                      = 1000099000,
 +      VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT                                      = 1000099001,
 +      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT                     = 1000101000,
 +      VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT                     = 1000101001,
 +      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_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR                                                       = 1000111000,
 +      VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR                                                                                      = 1000115000,
 +      VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR                                                                                         = 1000115001,
++      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR                                        = 1000116000,
++      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR                                      = 1000116001,
++      VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR                                                        = 1000116002,
++      VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR                                                                     = 1000116003,
++      VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR                                                                       = 1000116004,
++      VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR                                                                                       = 1000116005,
++      VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR                                                           = 1000116006,
++      VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_RESERVATION_INFO_KHR                                                        = 1000116007,
 +      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR                                                            = 1000119000,
 +      VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR                                                                            = 1000119001,
 +      VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR                                                                                          = 1000119002,
 +      VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR                                                                                      = 1000121000,
 +      VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR                                                                        = 1000121001,
 +      VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR                                                                         = 1000121002,
 +      VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR                                                                                      = 1000121003,
 +      VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR                                                                      = 1000121004,
++      VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT                                                                      = 1000128000,
++      VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT                                                                       = 1000128001,
++      VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT                                                                                         = 1000128002,
++      VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT                                                       = 1000128003,
++      VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT                                                         = 1000128004,
 +      VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT                                                                                     = 1000143000,
 +      VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT                                           = 1000143001,
 +      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_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,
 +      VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT                                                       = 1000158000,
 +      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT                            = 1000158002,
 +      VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT                                        = 1000158003,
 +      VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT                            = 1000158004,
 +      VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT                                                      = 1000158005,
 +      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_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_CLOCK_FEATURES_KHR                                                     = 1000181000,
 +      VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT                                                                         = 1000184000,
 +      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT                       = 1000190000,
 +      VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT                           = 1000190001,
 +      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT                         = 1000190002,
 +      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT                                           = 1000212000,
 +      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR                      = 1000215000,
 +      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,
 +      VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR                                                     = 1000226000,
 +      VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR                          = 1000226001,
 +      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR                          = 1000226002,
 +      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR                            = 1000226003,
 +      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR                                                     = 1000226004,
 +      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT                        = 1000234000,
 +      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT                                          = 1000237000,
++      VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT                                                                                       = 1000247000,
 +      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_HEADLESS_SURFACE_CREATE_INFO_EXT                                                                      = 1000256000,
 +      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_SHADER_ATOMIC_FLOAT_FEATURES_EXT                                      = 1000260000,
 +      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT                                         = 1000265000,
 +      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT                           = 1000267000,
 +      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT       = 1000276000,
 +      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT                           = 1000281000,
 +      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT                         = 1000281001,
 +      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT                                                     = 1000286000,
 +      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT                                           = 1000286001,
 +      VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT                                           = 1000287000,
 +      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT                            = 1000287001,
 +      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT                                      = 1000287002,
-       VK_STRUCTURE_TYPE_FAULT_DATA_KHR                                                                                                        = VK_STRUCTURE_TYPE_FAULT_DATA,
-       VK_STRUCTURE_TYPE_FAULT_CALLBACK_INFO_KHR                                                                                       = VK_STRUCTURE_TYPE_FAULT_CALLBACK_INFO,
-       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_HANDLING_PROPERTIES_KHR                                         = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_HANDLING_PROPERTIES,
-       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_IDENTIFIER_FEATURES_KHR                                      = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_IDENTIFIER_FEATURES,
-       VK_STRUCTURE_TYPE_PIPELINE_IDENTIFIER_INFO_KHR                                                                          = VK_STRUCTURE_TYPE_PIPELINE_IDENTIFIER_INFO,
++      VK_STRUCTURE_TYPE_REFRESH_OBJECT_LIST_KHR                                                                                       = 1000308000,
++      VK_STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR                                                                                          = 1000314000,
++      VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2_KHR                                                                           = 1000314001,
++      VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2_KHR                                                                            = 1000314002,
++      VK_STRUCTURE_TYPE_DEPENDENCY_INFO_KHR                                                                                           = 1000314003,
++      VK_STRUCTURE_TYPE_SUBMIT_INFO_2_KHR                                                                                                     = 1000314004,
++      VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO_KHR                                                                                     = 1000314005,
++      VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO_KHR                                                                        = 1000314006,
++      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR                                        = 1000314007,
++      VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV                                                       = 1000314008,
++      VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV                                                                                          = 1000314009,
++      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT                        = 1000330000,
 +      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT                                         = 1000335000,
 +      VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR                                                                                        = 1000337000,
 +      VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR                                                                                         = 1000337001,
 +      VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR                                                                       = 1000337002,
 +      VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR                                                                       = 1000337003,
 +      VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR                                                                                         = 1000337004,
 +      VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR                                                                                      = 1000337005,
 +      VK_STRUCTURE_TYPE_BUFFER_COPY_2_KHR                                                                                                     = 1000337006,
 +      VK_STRUCTURE_TYPE_IMAGE_COPY_2_KHR                                                                                                      = 1000337007,
 +      VK_STRUCTURE_TYPE_IMAGE_BLIT_2_KHR                                                                                                      = 1000337008,
 +      VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR                                                                                       = 1000337009,
 +      VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR                                                                                           = 1000337010,
 +      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT                                                     = 1000340000,
++      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT                       = 1000352000,
++      VK_STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT                                                        = 1000352001,
++      VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT                                                      = 1000352002,
++      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT                         = 1000377000,
++      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT                                       = 1000381000,
++      VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT                                                          = 1000381001,
 +      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES                                                     = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES,
 +      VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES                                        = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES,
 +      VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT                                                                                     = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT,
-       VK_OBJECT_TYPE_UNKNOWN                                  = 0,
-       VK_OBJECT_TYPE_INSTANCE                                 = 1,
-       VK_OBJECT_TYPE_PHYSICAL_DEVICE                  = 2,
-       VK_OBJECT_TYPE_DEVICE                                   = 3,
-       VK_OBJECT_TYPE_QUEUE                                    = 4,
-       VK_OBJECT_TYPE_SEMAPHORE                                = 5,
-       VK_OBJECT_TYPE_COMMAND_BUFFER                   = 6,
-       VK_OBJECT_TYPE_FENCE                                    = 7,
-       VK_OBJECT_TYPE_DEVICE_MEMORY                    = 8,
-       VK_OBJECT_TYPE_BUFFER                                   = 9,
-       VK_OBJECT_TYPE_IMAGE                                    = 10,
-       VK_OBJECT_TYPE_EVENT                                    = 11,
-       VK_OBJECT_TYPE_QUERY_POOL                               = 12,
-       VK_OBJECT_TYPE_BUFFER_VIEW                              = 13,
-       VK_OBJECT_TYPE_IMAGE_VIEW                               = 14,
-       VK_OBJECT_TYPE_SHADER_MODULE                    = 15,
-       VK_OBJECT_TYPE_PIPELINE_CACHE                   = 16,
-       VK_OBJECT_TYPE_PIPELINE_LAYOUT                  = 17,
-       VK_OBJECT_TYPE_RENDER_PASS                              = 18,
-       VK_OBJECT_TYPE_PIPELINE                                 = 19,
-       VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT    = 20,
-       VK_OBJECT_TYPE_SAMPLER                                  = 21,
-       VK_OBJECT_TYPE_DESCRIPTOR_POOL                  = 22,
-       VK_OBJECT_TYPE_DESCRIPTOR_SET                   = 23,
-       VK_OBJECT_TYPE_FRAMEBUFFER                              = 24,
-       VK_OBJECT_TYPE_COMMAND_POOL                             = 25,
-       VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION = 1000156000,
-       VK_OBJECT_TYPE_SURFACE_KHR                              = 1000000000,
-       VK_OBJECT_TYPE_SWAPCHAIN_KHR                    = 1000001000,
-       VK_OBJECT_TYPE_DISPLAY_KHR                              = 1000002000,
-       VK_OBJECT_TYPE_DISPLAY_MODE_KHR                 = 1000002001,
-       VK_OBJECT_TYPE_MAX_ENUM                                 = 0x7FFFFFFF,
 +      VK_STRUCTURE_TYPE_MAX_ENUM                                                                                                                      = 0x7FFFFFFF,
 +};
 +
 +enum VkImageLayout
 +{
 +      VK_IMAGE_LAYOUT_UNDEFINED                                                                               = 0,
 +      VK_IMAGE_LAYOUT_GENERAL                                                                                 = 1,
 +      VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL                                                = 2,
 +      VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL                                = 3,
 +      VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL                                 = 4,
 +      VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL                                                = 5,
 +      VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL                                                    = 6,
 +      VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL                                                    = 7,
 +      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_READ_ONLY_OPTIMAL_KHR                                                   = 1000314000,
++      VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR                                                  = 1000314001,
 +      VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR    = VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV,
 +      VK_IMAGE_LAYOUT_MAX_ENUM                                                                                = 0x7FFFFFFF,
 +};
 +
 +enum VkObjectType
 +{
-       VK_QUERY_TYPE_LAST,
++      VK_OBJECT_TYPE_UNKNOWN                                          = 0,
++      VK_OBJECT_TYPE_INSTANCE                                         = 1,
++      VK_OBJECT_TYPE_PHYSICAL_DEVICE                          = 2,
++      VK_OBJECT_TYPE_DEVICE                                           = 3,
++      VK_OBJECT_TYPE_QUEUE                                            = 4,
++      VK_OBJECT_TYPE_SEMAPHORE                                        = 5,
++      VK_OBJECT_TYPE_COMMAND_BUFFER                           = 6,
++      VK_OBJECT_TYPE_FENCE                                            = 7,
++      VK_OBJECT_TYPE_DEVICE_MEMORY                            = 8,
++      VK_OBJECT_TYPE_BUFFER                                           = 9,
++      VK_OBJECT_TYPE_IMAGE                                            = 10,
++      VK_OBJECT_TYPE_EVENT                                            = 11,
++      VK_OBJECT_TYPE_QUERY_POOL                                       = 12,
++      VK_OBJECT_TYPE_BUFFER_VIEW                                      = 13,
++      VK_OBJECT_TYPE_IMAGE_VIEW                                       = 14,
++      VK_OBJECT_TYPE_SHADER_MODULE                            = 15,
++      VK_OBJECT_TYPE_PIPELINE_CACHE                           = 16,
++      VK_OBJECT_TYPE_PIPELINE_LAYOUT                          = 17,
++      VK_OBJECT_TYPE_RENDER_PASS                                      = 18,
++      VK_OBJECT_TYPE_PIPELINE                                         = 19,
++      VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT            = 20,
++      VK_OBJECT_TYPE_SAMPLER                                          = 21,
++      VK_OBJECT_TYPE_DESCRIPTOR_POOL                          = 22,
++      VK_OBJECT_TYPE_DESCRIPTOR_SET                           = 23,
++      VK_OBJECT_TYPE_FRAMEBUFFER                                      = 24,
++      VK_OBJECT_TYPE_COMMAND_POOL                                     = 25,
++      VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION         = 1000156000,
++      VK_OBJECT_TYPE_SURFACE_KHR                                      = 1000000000,
++      VK_OBJECT_TYPE_SWAPCHAIN_KHR                            = 1000001000,
++      VK_OBJECT_TYPE_DISPLAY_KHR                                      = 1000002000,
++      VK_OBJECT_TYPE_DISPLAY_MODE_KHR                         = 1000002001,
++      VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT        = 1000128000,
++      VK_OBJECT_TYPE_MAX_ENUM                                         = 0x7FFFFFFF,
 +};
 +
 +enum VkVendorId
 +{
 +      VK_VENDOR_ID_VIV                = 0x10001,
 +      VK_VENDOR_ID_VSI                = 0x10002,
 +      VK_VENDOR_ID_KAZAN              = 0x10003,
 +      VK_VENDOR_ID_CODEPLAY   = 0x10004,
 +      VK_VENDOR_ID_MESA               = 0x10005,
 +      VK_VENDOR_ID_POCL               = 0x10006,
 +      VK_VENDOR_ID_MAX_ENUM   = 0x7FFFFFFF,
 +};
 +
 +enum VkPipelineCacheHeaderVersion
 +{
 +      VK_PIPELINE_CACHE_HEADER_VERSION_ONE            = 1,
 +      VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM       = 0x7FFFFFFF,
 +};
 +
 +enum VkSystemAllocationScope
 +{
 +      VK_SYSTEM_ALLOCATION_SCOPE_COMMAND      = 0,
 +      VK_SYSTEM_ALLOCATION_SCOPE_OBJECT       = 1,
 +      VK_SYSTEM_ALLOCATION_SCOPE_CACHE        = 2,
 +      VK_SYSTEM_ALLOCATION_SCOPE_DEVICE       = 3,
 +      VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE     = 4,
 +      VK_SYSTEM_ALLOCATION_SCOPE_LAST,
 +      VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM     = 0x7FFFFFFF,
 +};
 +
 +enum VkInternalAllocationType
 +{
 +      VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE  = 0,
 +      VK_INTERNAL_ALLOCATION_TYPE_LAST,
 +      VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM    = 0x7FFFFFFF,
 +};
 +
 +enum VkFormat
 +{
 +      VK_FORMAT_UNDEFINED                                                                             = 0,
 +      VK_FORMAT_R4G4_UNORM_PACK8                                                              = 1,
 +      VK_FORMAT_R4G4B4A4_UNORM_PACK16                                                 = 2,
 +      VK_FORMAT_B4G4R4A4_UNORM_PACK16                                                 = 3,
 +      VK_FORMAT_R5G6B5_UNORM_PACK16                                                   = 4,
 +      VK_FORMAT_B5G6R5_UNORM_PACK16                                                   = 5,
 +      VK_FORMAT_R5G5B5A1_UNORM_PACK16                                                 = 6,
 +      VK_FORMAT_B5G5R5A1_UNORM_PACK16                                                 = 7,
 +      VK_FORMAT_A1R5G5B5_UNORM_PACK16                                                 = 8,
 +      VK_FORMAT_R8_UNORM                                                                              = 9,
 +      VK_FORMAT_R8_SNORM                                                                              = 10,
 +      VK_FORMAT_R8_USCALED                                                                    = 11,
 +      VK_FORMAT_R8_SSCALED                                                                    = 12,
 +      VK_FORMAT_R8_UINT                                                                               = 13,
 +      VK_FORMAT_R8_SINT                                                                               = 14,
 +      VK_FORMAT_R8_SRGB                                                                               = 15,
 +      VK_FORMAT_R8G8_UNORM                                                                    = 16,
 +      VK_FORMAT_R8G8_SNORM                                                                    = 17,
 +      VK_FORMAT_R8G8_USCALED                                                                  = 18,
 +      VK_FORMAT_R8G8_SSCALED                                                                  = 19,
 +      VK_FORMAT_R8G8_UINT                                                                             = 20,
 +      VK_FORMAT_R8G8_SINT                                                                             = 21,
 +      VK_FORMAT_R8G8_SRGB                                                                             = 22,
 +      VK_FORMAT_R8G8B8_UNORM                                                                  = 23,
 +      VK_FORMAT_R8G8B8_SNORM                                                                  = 24,
 +      VK_FORMAT_R8G8B8_USCALED                                                                = 25,
 +      VK_FORMAT_R8G8B8_SSCALED                                                                = 26,
 +      VK_FORMAT_R8G8B8_UINT                                                                   = 27,
 +      VK_FORMAT_R8G8B8_SINT                                                                   = 28,
 +      VK_FORMAT_R8G8B8_SRGB                                                                   = 29,
 +      VK_FORMAT_B8G8R8_UNORM                                                                  = 30,
 +      VK_FORMAT_B8G8R8_SNORM                                                                  = 31,
 +      VK_FORMAT_B8G8R8_USCALED                                                                = 32,
 +      VK_FORMAT_B8G8R8_SSCALED                                                                = 33,
 +      VK_FORMAT_B8G8R8_UINT                                                                   = 34,
 +      VK_FORMAT_B8G8R8_SINT                                                                   = 35,
 +      VK_FORMAT_B8G8R8_SRGB                                                                   = 36,
 +      VK_FORMAT_R8G8B8A8_UNORM                                                                = 37,
 +      VK_FORMAT_R8G8B8A8_SNORM                                                                = 38,
 +      VK_FORMAT_R8G8B8A8_USCALED                                                              = 39,
 +      VK_FORMAT_R8G8B8A8_SSCALED                                                              = 40,
 +      VK_FORMAT_R8G8B8A8_UINT                                                                 = 41,
 +      VK_FORMAT_R8G8B8A8_SINT                                                                 = 42,
 +      VK_FORMAT_R8G8B8A8_SRGB                                                                 = 43,
 +      VK_FORMAT_B8G8R8A8_UNORM                                                                = 44,
 +      VK_FORMAT_B8G8R8A8_SNORM                                                                = 45,
 +      VK_FORMAT_B8G8R8A8_USCALED                                                              = 46,
 +      VK_FORMAT_B8G8R8A8_SSCALED                                                              = 47,
 +      VK_FORMAT_B8G8R8A8_UINT                                                                 = 48,
 +      VK_FORMAT_B8G8R8A8_SINT                                                                 = 49,
 +      VK_FORMAT_B8G8R8A8_SRGB                                                                 = 50,
 +      VK_FORMAT_A8B8G8R8_UNORM_PACK32                                                 = 51,
 +      VK_FORMAT_A8B8G8R8_SNORM_PACK32                                                 = 52,
 +      VK_FORMAT_A8B8G8R8_USCALED_PACK32                                               = 53,
 +      VK_FORMAT_A8B8G8R8_SSCALED_PACK32                                               = 54,
 +      VK_FORMAT_A8B8G8R8_UINT_PACK32                                                  = 55,
 +      VK_FORMAT_A8B8G8R8_SINT_PACK32                                                  = 56,
 +      VK_FORMAT_A8B8G8R8_SRGB_PACK32                                                  = 57,
 +      VK_FORMAT_A2R10G10B10_UNORM_PACK32                                              = 58,
 +      VK_FORMAT_A2R10G10B10_SNORM_PACK32                                              = 59,
 +      VK_FORMAT_A2R10G10B10_USCALED_PACK32                                    = 60,
 +      VK_FORMAT_A2R10G10B10_SSCALED_PACK32                                    = 61,
 +      VK_FORMAT_A2R10G10B10_UINT_PACK32                                               = 62,
 +      VK_FORMAT_A2R10G10B10_SINT_PACK32                                               = 63,
 +      VK_FORMAT_A2B10G10R10_UNORM_PACK32                                              = 64,
 +      VK_FORMAT_A2B10G10R10_SNORM_PACK32                                              = 65,
 +      VK_FORMAT_A2B10G10R10_USCALED_PACK32                                    = 66,
 +      VK_FORMAT_A2B10G10R10_SSCALED_PACK32                                    = 67,
 +      VK_FORMAT_A2B10G10R10_UINT_PACK32                                               = 68,
 +      VK_FORMAT_A2B10G10R10_SINT_PACK32                                               = 69,
 +      VK_FORMAT_R16_UNORM                                                                             = 70,
 +      VK_FORMAT_R16_SNORM                                                                             = 71,
 +      VK_FORMAT_R16_USCALED                                                                   = 72,
 +      VK_FORMAT_R16_SSCALED                                                                   = 73,
 +      VK_FORMAT_R16_UINT                                                                              = 74,
 +      VK_FORMAT_R16_SINT                                                                              = 75,
 +      VK_FORMAT_R16_SFLOAT                                                                    = 76,
 +      VK_FORMAT_R16G16_UNORM                                                                  = 77,
 +      VK_FORMAT_R16G16_SNORM                                                                  = 78,
 +      VK_FORMAT_R16G16_USCALED                                                                = 79,
 +      VK_FORMAT_R16G16_SSCALED                                                                = 80,
 +      VK_FORMAT_R16G16_UINT                                                                   = 81,
 +      VK_FORMAT_R16G16_SINT                                                                   = 82,
 +      VK_FORMAT_R16G16_SFLOAT                                                                 = 83,
 +      VK_FORMAT_R16G16B16_UNORM                                                               = 84,
 +      VK_FORMAT_R16G16B16_SNORM                                                               = 85,
 +      VK_FORMAT_R16G16B16_USCALED                                                             = 86,
 +      VK_FORMAT_R16G16B16_SSCALED                                                             = 87,
 +      VK_FORMAT_R16G16B16_UINT                                                                = 88,
 +      VK_FORMAT_R16G16B16_SINT                                                                = 89,
 +      VK_FORMAT_R16G16B16_SFLOAT                                                              = 90,
 +      VK_FORMAT_R16G16B16A16_UNORM                                                    = 91,
 +      VK_FORMAT_R16G16B16A16_SNORM                                                    = 92,
 +      VK_FORMAT_R16G16B16A16_USCALED                                                  = 93,
 +      VK_FORMAT_R16G16B16A16_SSCALED                                                  = 94,
 +      VK_FORMAT_R16G16B16A16_UINT                                                             = 95,
 +      VK_FORMAT_R16G16B16A16_SINT                                                             = 96,
 +      VK_FORMAT_R16G16B16A16_SFLOAT                                                   = 97,
 +      VK_FORMAT_R32_UINT                                                                              = 98,
 +      VK_FORMAT_R32_SINT                                                                              = 99,
 +      VK_FORMAT_R32_SFLOAT                                                                    = 100,
 +      VK_FORMAT_R32G32_UINT                                                                   = 101,
 +      VK_FORMAT_R32G32_SINT                                                                   = 102,
 +      VK_FORMAT_R32G32_SFLOAT                                                                 = 103,
 +      VK_FORMAT_R32G32B32_UINT                                                                = 104,
 +      VK_FORMAT_R32G32B32_SINT                                                                = 105,
 +      VK_FORMAT_R32G32B32_SFLOAT                                                              = 106,
 +      VK_FORMAT_R32G32B32A32_UINT                                                             = 107,
 +      VK_FORMAT_R32G32B32A32_SINT                                                             = 108,
 +      VK_FORMAT_R32G32B32A32_SFLOAT                                                   = 109,
 +      VK_FORMAT_R64_UINT                                                                              = 110,
 +      VK_FORMAT_R64_SINT                                                                              = 111,
 +      VK_FORMAT_R64_SFLOAT                                                                    = 112,
 +      VK_FORMAT_R64G64_UINT                                                                   = 113,
 +      VK_FORMAT_R64G64_SINT                                                                   = 114,
 +      VK_FORMAT_R64G64_SFLOAT                                                                 = 115,
 +      VK_FORMAT_R64G64B64_UINT                                                                = 116,
 +      VK_FORMAT_R64G64B64_SINT                                                                = 117,
 +      VK_FORMAT_R64G64B64_SFLOAT                                                              = 118,
 +      VK_FORMAT_R64G64B64A64_UINT                                                             = 119,
 +      VK_FORMAT_R64G64B64A64_SINT                                                             = 120,
 +      VK_FORMAT_R64G64B64A64_SFLOAT                                                   = 121,
 +      VK_FORMAT_B10G11R11_UFLOAT_PACK32                                               = 122,
 +      VK_FORMAT_E5B9G9R9_UFLOAT_PACK32                                                = 123,
 +      VK_FORMAT_D16_UNORM                                                                             = 124,
 +      VK_FORMAT_X8_D24_UNORM_PACK32                                                   = 125,
 +      VK_FORMAT_D32_SFLOAT                                                                    = 126,
 +      VK_FORMAT_S8_UINT                                                                               = 127,
 +      VK_FORMAT_D16_UNORM_S8_UINT                                                             = 128,
 +      VK_FORMAT_D24_UNORM_S8_UINT                                                             = 129,
 +      VK_FORMAT_D32_SFLOAT_S8_UINT                                                    = 130,
 +      VK_FORMAT_BC1_RGB_UNORM_BLOCK                                                   = 131,
 +      VK_FORMAT_BC1_RGB_SRGB_BLOCK                                                    = 132,
 +      VK_FORMAT_BC1_RGBA_UNORM_BLOCK                                                  = 133,
 +      VK_FORMAT_BC1_RGBA_SRGB_BLOCK                                                   = 134,
 +      VK_FORMAT_BC2_UNORM_BLOCK                                                               = 135,
 +      VK_FORMAT_BC2_SRGB_BLOCK                                                                = 136,
 +      VK_FORMAT_BC3_UNORM_BLOCK                                                               = 137,
 +      VK_FORMAT_BC3_SRGB_BLOCK                                                                = 138,
 +      VK_FORMAT_BC4_UNORM_BLOCK                                                               = 139,
 +      VK_FORMAT_BC4_SNORM_BLOCK                                                               = 140,
 +      VK_FORMAT_BC5_UNORM_BLOCK                                                               = 141,
 +      VK_FORMAT_BC5_SNORM_BLOCK                                                               = 142,
 +      VK_FORMAT_BC6H_UFLOAT_BLOCK                                                             = 143,
 +      VK_FORMAT_BC6H_SFLOAT_BLOCK                                                             = 144,
 +      VK_FORMAT_BC7_UNORM_BLOCK                                                               = 145,
 +      VK_FORMAT_BC7_SRGB_BLOCK                                                                = 146,
 +      VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK                                               = 147,
 +      VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK                                                = 148,
 +      VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK                                             = 149,
 +      VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK                                              = 150,
 +      VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK                                             = 151,
 +      VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK                                              = 152,
 +      VK_FORMAT_EAC_R11_UNORM_BLOCK                                                   = 153,
 +      VK_FORMAT_EAC_R11_SNORM_BLOCK                                                   = 154,
 +      VK_FORMAT_EAC_R11G11_UNORM_BLOCK                                                = 155,
 +      VK_FORMAT_EAC_R11G11_SNORM_BLOCK                                                = 156,
 +      VK_FORMAT_ASTC_4x4_UNORM_BLOCK                                                  = 157,
 +      VK_FORMAT_ASTC_4x4_SRGB_BLOCK                                                   = 158,
 +      VK_FORMAT_ASTC_5x4_UNORM_BLOCK                                                  = 159,
 +      VK_FORMAT_ASTC_5x4_SRGB_BLOCK                                                   = 160,
 +      VK_FORMAT_ASTC_5x5_UNORM_BLOCK                                                  = 161,
 +      VK_FORMAT_ASTC_5x5_SRGB_BLOCK                                                   = 162,
 +      VK_FORMAT_ASTC_6x5_UNORM_BLOCK                                                  = 163,
 +      VK_FORMAT_ASTC_6x5_SRGB_BLOCK                                                   = 164,
 +      VK_FORMAT_ASTC_6x6_UNORM_BLOCK                                                  = 165,
 +      VK_FORMAT_ASTC_6x6_SRGB_BLOCK                                                   = 166,
 +      VK_FORMAT_ASTC_8x5_UNORM_BLOCK                                                  = 167,
 +      VK_FORMAT_ASTC_8x5_SRGB_BLOCK                                                   = 168,
 +      VK_FORMAT_ASTC_8x6_UNORM_BLOCK                                                  = 169,
 +      VK_FORMAT_ASTC_8x6_SRGB_BLOCK                                                   = 170,
 +      VK_FORMAT_ASTC_8x8_UNORM_BLOCK                                                  = 171,
 +      VK_FORMAT_ASTC_8x8_SRGB_BLOCK                                                   = 172,
 +      VK_FORMAT_ASTC_10x5_UNORM_BLOCK                                                 = 173,
 +      VK_FORMAT_ASTC_10x5_SRGB_BLOCK                                                  = 174,
 +      VK_FORMAT_ASTC_10x6_UNORM_BLOCK                                                 = 175,
 +      VK_FORMAT_ASTC_10x6_SRGB_BLOCK                                                  = 176,
 +      VK_FORMAT_ASTC_10x8_UNORM_BLOCK                                                 = 177,
 +      VK_FORMAT_ASTC_10x8_SRGB_BLOCK                                                  = 178,
 +      VK_FORMAT_ASTC_10x10_UNORM_BLOCK                                                = 179,
 +      VK_FORMAT_ASTC_10x10_SRGB_BLOCK                                                 = 180,
 +      VK_FORMAT_ASTC_12x10_UNORM_BLOCK                                                = 181,
 +      VK_FORMAT_ASTC_12x10_SRGB_BLOCK                                                 = 182,
 +      VK_FORMAT_ASTC_12x12_UNORM_BLOCK                                                = 183,
 +      VK_FORMAT_ASTC_12x12_SRGB_BLOCK                                                 = 184,
 +      VK_FORMAT_G8B8G8R8_422_UNORM                                                    = 1000156000,
 +      VK_FORMAT_B8G8R8G8_422_UNORM                                                    = 1000156001,
 +      VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM                                             = 1000156002,
 +      VK_FORMAT_G8_B8R8_2PLANE_420_UNORM                                              = 1000156003,
 +      VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM                                             = 1000156004,
 +      VK_FORMAT_G8_B8R8_2PLANE_422_UNORM                                              = 1000156005,
 +      VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM                                             = 1000156006,
 +      VK_FORMAT_R10X6_UNORM_PACK16                                                    = 1000156007,
 +      VK_FORMAT_R10X6G10X6_UNORM_2PACK16                                              = 1000156008,
 +      VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16                    = 1000156009,
 +      VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16                = 1000156010,
 +      VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16                = 1000156011,
 +      VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16    = 1000156012,
 +      VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16             = 1000156013,
 +      VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16    = 1000156014,
 +      VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16             = 1000156015,
 +      VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16    = 1000156016,
 +      VK_FORMAT_R12X4_UNORM_PACK16                                                    = 1000156017,
 +      VK_FORMAT_R12X4G12X4_UNORM_2PACK16                                              = 1000156018,
 +      VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16                    = 1000156019,
 +      VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16                = 1000156020,
 +      VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16                = 1000156021,
 +      VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16    = 1000156022,
 +      VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16             = 1000156023,
 +      VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16    = 1000156024,
 +      VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16             = 1000156025,
 +      VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16    = 1000156026,
 +      VK_FORMAT_G16B16G16R16_422_UNORM                                                = 1000156027,
 +      VK_FORMAT_B16G16R16G16_422_UNORM                                                = 1000156028,
 +      VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM                                  = 1000156029,
 +      VK_FORMAT_G16_B16R16_2PLANE_420_UNORM                                   = 1000156030,
 +      VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM                                  = 1000156031,
 +      VK_FORMAT_G16_B16R16_2PLANE_422_UNORM                                   = 1000156032,
 +      VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM                                  = 1000156033,
 +      VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT                                             = 1000066000,
 +      VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT                                             = 1000066001,
 +      VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT                                             = 1000066002,
 +      VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT                                             = 1000066003,
 +      VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT                                             = 1000066004,
 +      VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT                                             = 1000066005,
 +      VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT                                             = 1000066006,
 +      VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT                                             = 1000066007,
 +      VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT                                    = 1000066008,
 +      VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT                                    = 1000066009,
 +      VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT                                    = 1000066010,
 +      VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT                                   = 1000066011,
 +      VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT                                   = 1000066012,
 +      VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT                                   = 1000066013,
++      VK_FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT                                  = 1000330000,
++      VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT = 1000330001,
++      VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT = 1000330002,
++      VK_FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT                               = 1000330003,
 +      VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT                                             = 1000340000,
 +      VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT                                             = 1000340001,
 +      VK_FORMAT_MAX_ENUM                                                                              = 0x7FFFFFFF,
 +};
 +
 +enum VkImageTiling
 +{
 +      VK_IMAGE_TILING_OPTIMAL                                 = 0,
 +      VK_IMAGE_TILING_LINEAR                                  = 1,
 +      VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT = 1000158000,
 +      VK_IMAGE_TILING_MAX_ENUM                                = 0x7FFFFFFF,
 +};
 +
 +enum VkImageType
 +{
 +      VK_IMAGE_TYPE_1D                = 0,
 +      VK_IMAGE_TYPE_2D                = 1,
 +      VK_IMAGE_TYPE_3D                = 2,
 +      VK_IMAGE_TYPE_LAST,
 +      VK_IMAGE_TYPE_MAX_ENUM  = 0x7FFFFFFF,
 +};
 +
 +enum VkPhysicalDeviceType
 +{
 +      VK_PHYSICAL_DEVICE_TYPE_OTHER                   = 0,
 +      VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU  = 1,
 +      VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU    = 2,
 +      VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU             = 3,
 +      VK_PHYSICAL_DEVICE_TYPE_CPU                             = 4,
 +      VK_PHYSICAL_DEVICE_TYPE_LAST,
 +      VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM                = 0x7FFFFFFF,
 +};
 +
 +enum VkQueryType
 +{
 +      VK_QUERY_TYPE_OCCLUSION                         = 0,
 +      VK_QUERY_TYPE_PIPELINE_STATISTICS       = 1,
 +      VK_QUERY_TYPE_TIMESTAMP                         = 2,
- enum VkFaultLevel
- {
-       VK_FAULT_LEVEL_UNASSIGNED               = 0,
-       VK_FAULT_LEVEL_CRITICAL                 = 1,
-       VK_FAULT_LEVEL_RECOVERABLE              = 2,
-       VK_FAULT_LEVEL_WARNING                  = 3,
-       VK_FAULT_LEVEL_UNASSIGNED_KHR   = VK_FAULT_LEVEL_UNASSIGNED,
-       VK_FAULT_LEVEL_CRITICAL_KHR             = VK_FAULT_LEVEL_CRITICAL,
-       VK_FAULT_LEVEL_RECOVERABLE_KHR  = VK_FAULT_LEVEL_RECOVERABLE,
-       VK_FAULT_LEVEL_WARNING_KHR              = VK_FAULT_LEVEL_WARNING,
-       VK_FAULT_LEVEL_LAST,
-       VK_FAULT_LEVEL_MAX_ENUM                 = 0x7FFFFFFF,
- };
- enum VkFaultType
- {
-       VK_FAULT_TYPE_INVALID                                   = 0,
-       VK_FAULT_TYPE_UNASSIGNED                                = 1,
-       VK_FAULT_TYPE_IMPLEMENTATION                    = 2,
-       VK_FAULT_TYPE_SYSTEM                                    = 3,
-       VK_FAULT_TYPE_PHYSICAL_DEVICE                   = 4,
-       VK_FAULT_TYPE_COMMAND_BUFFER_FULL               = 5,
-       VK_FAULT_TYPE_INVALID_API_USAGE                 = 6,
-       VK_FAULT_TYPE_INVALID_KHR                               = VK_FAULT_TYPE_INVALID,
-       VK_FAULT_TYPE_UNASSIGNED_KHR                    = VK_FAULT_TYPE_UNASSIGNED,
-       VK_FAULT_TYPE_IMPLEMENTATION_KHR                = VK_FAULT_TYPE_IMPLEMENTATION,
-       VK_FAULT_TYPE_SYSTEM_KHR                                = VK_FAULT_TYPE_SYSTEM,
-       VK_FAULT_TYPE_PHYSICAL_DEVICE_KHR               = VK_FAULT_TYPE_PHYSICAL_DEVICE,
-       VK_FAULT_TYPE_COMMAND_BUFFER_FULL_KHR   = VK_FAULT_TYPE_COMMAND_BUFFER_FULL,
-       VK_FAULT_TYPE_INVALID_API_USAGE_KHR             = VK_FAULT_TYPE_INVALID_API_USAGE,
-       VK_FAULT_TYPE_LAST,
-       VK_FAULT_TYPE_MAX_ENUM                                  = 0x7FFFFFFF,
- };
- enum VkFaultQueryBehavior
- {
-       VK_FAULT_QUERY_BEHAVIOR_GET_AND_CLEAR_ALL_FAULTS                = 0,
-       VK_FAULT_QUERY_BEHAVIOR_GET_AND_CLEAR_ALL_FAULTS_KHR    = VK_FAULT_QUERY_BEHAVIOR_GET_AND_CLEAR_ALL_FAULTS,
-       VK_FAULT_QUERY_BEHAVIOR_LAST,
-       VK_FAULT_QUERY_BEHAVIOR_MAX_ENUM                                                = 0x7FFFFFFF,
- };
- enum VkPipelineMatchControl
- {
-       VK_PIPELINE_MATCH_CONTROL_APPLICATION_UUID_EXACT_MATCH          = 0,
-       VK_PIPELINE_MATCH_CONTROL_APPLICATION_UUID_EXACT_MATCH_KHR      = VK_PIPELINE_MATCH_CONTROL_APPLICATION_UUID_EXACT_MATCH,
-       VK_PIPELINE_MATCH_CONTROL_LAST,
-       VK_PIPELINE_MATCH_CONTROL_MAX_ENUM                                                      = 0x7FFFFFFF,
- };
++      VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR     = 1000116000,
 +      VK_QUERY_TYPE_MAX_ENUM                          = 0x7FFFFFFF,
 +};
 +
 +enum VkSharingMode
 +{
 +      VK_SHARING_MODE_EXCLUSIVE       = 0,
 +      VK_SHARING_MODE_CONCURRENT      = 1,
 +      VK_SHARING_MODE_LAST,
 +      VK_SHARING_MODE_MAX_ENUM        = 0x7FFFFFFF,
 +};
 +
 +enum VkComponentSwizzle
 +{
 +      VK_COMPONENT_SWIZZLE_IDENTITY   = 0,
 +      VK_COMPONENT_SWIZZLE_ZERO               = 1,
 +      VK_COMPONENT_SWIZZLE_ONE                = 2,
 +      VK_COMPONENT_SWIZZLE_R                  = 3,
 +      VK_COMPONENT_SWIZZLE_G                  = 4,
 +      VK_COMPONENT_SWIZZLE_B                  = 5,
 +      VK_COMPONENT_SWIZZLE_A                  = 6,
 +      VK_COMPONENT_SWIZZLE_LAST,
 +      VK_COMPONENT_SWIZZLE_MAX_ENUM   = 0x7FFFFFFF,
 +};
 +
 +enum VkImageViewType
 +{
 +      VK_IMAGE_VIEW_TYPE_1D                   = 0,
 +      VK_IMAGE_VIEW_TYPE_2D                   = 1,
 +      VK_IMAGE_VIEW_TYPE_3D                   = 2,
 +      VK_IMAGE_VIEW_TYPE_CUBE                 = 3,
 +      VK_IMAGE_VIEW_TYPE_1D_ARRAY             = 4,
 +      VK_IMAGE_VIEW_TYPE_2D_ARRAY             = 5,
 +      VK_IMAGE_VIEW_TYPE_CUBE_ARRAY   = 6,
 +      VK_IMAGE_VIEW_TYPE_LAST,
 +      VK_IMAGE_VIEW_TYPE_MAX_ENUM             = 0x7FFFFFFF,
 +};
 +
 +enum VkBlendFactor
 +{
 +      VK_BLEND_FACTOR_ZERO                                            = 0,
 +      VK_BLEND_FACTOR_ONE                                                     = 1,
 +      VK_BLEND_FACTOR_SRC_COLOR                                       = 2,
 +      VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR                     = 3,
 +      VK_BLEND_FACTOR_DST_COLOR                                       = 4,
 +      VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR                     = 5,
 +      VK_BLEND_FACTOR_SRC_ALPHA                                       = 6,
 +      VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA                     = 7,
 +      VK_BLEND_FACTOR_DST_ALPHA                                       = 8,
 +      VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA                     = 9,
 +      VK_BLEND_FACTOR_CONSTANT_COLOR                          = 10,
 +      VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR        = 11,
 +      VK_BLEND_FACTOR_CONSTANT_ALPHA                          = 12,
 +      VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA        = 13,
 +      VK_BLEND_FACTOR_SRC_ALPHA_SATURATE                      = 14,
 +      VK_BLEND_FACTOR_SRC1_COLOR                                      = 15,
 +      VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR            = 16,
 +      VK_BLEND_FACTOR_SRC1_ALPHA                                      = 17,
 +      VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA            = 18,
 +      VK_BLEND_FACTOR_LAST,
 +      VK_BLEND_FACTOR_MAX_ENUM                                        = 0x7FFFFFFF,
 +};
 +
 +enum VkBlendOp
 +{
 +      VK_BLEND_OP_ADD                                         = 0,
 +      VK_BLEND_OP_SUBTRACT                            = 1,
 +      VK_BLEND_OP_REVERSE_SUBTRACT            = 2,
 +      VK_BLEND_OP_MIN                                         = 3,
 +      VK_BLEND_OP_MAX                                         = 4,
 +      VK_BLEND_OP_ZERO_EXT                            = 1000148000,
 +      VK_BLEND_OP_SRC_EXT                                     = 1000148001,
 +      VK_BLEND_OP_DST_EXT                                     = 1000148002,
 +      VK_BLEND_OP_SRC_OVER_EXT                        = 1000148003,
 +      VK_BLEND_OP_DST_OVER_EXT                        = 1000148004,
 +      VK_BLEND_OP_SRC_IN_EXT                          = 1000148005,
 +      VK_BLEND_OP_DST_IN_EXT                          = 1000148006,
 +      VK_BLEND_OP_SRC_OUT_EXT                         = 1000148007,
 +      VK_BLEND_OP_DST_OUT_EXT                         = 1000148008,
 +      VK_BLEND_OP_SRC_ATOP_EXT                        = 1000148009,
 +      VK_BLEND_OP_DST_ATOP_EXT                        = 1000148010,
 +      VK_BLEND_OP_XOR_EXT                                     = 1000148011,
 +      VK_BLEND_OP_MULTIPLY_EXT                        = 1000148012,
 +      VK_BLEND_OP_SCREEN_EXT                          = 1000148013,
 +      VK_BLEND_OP_OVERLAY_EXT                         = 1000148014,
 +      VK_BLEND_OP_DARKEN_EXT                          = 1000148015,
 +      VK_BLEND_OP_LIGHTEN_EXT                         = 1000148016,
 +      VK_BLEND_OP_COLORDODGE_EXT                      = 1000148017,
 +      VK_BLEND_OP_COLORBURN_EXT                       = 1000148018,
 +      VK_BLEND_OP_HARDLIGHT_EXT                       = 1000148019,
 +      VK_BLEND_OP_SOFTLIGHT_EXT                       = 1000148020,
 +      VK_BLEND_OP_DIFFERENCE_EXT                      = 1000148021,
 +      VK_BLEND_OP_EXCLUSION_EXT                       = 1000148022,
 +      VK_BLEND_OP_INVERT_EXT                          = 1000148023,
 +      VK_BLEND_OP_INVERT_RGB_EXT                      = 1000148024,
 +      VK_BLEND_OP_LINEARDODGE_EXT                     = 1000148025,
 +      VK_BLEND_OP_LINEARBURN_EXT                      = 1000148026,
 +      VK_BLEND_OP_VIVIDLIGHT_EXT                      = 1000148027,
 +      VK_BLEND_OP_LINEARLIGHT_EXT                     = 1000148028,
 +      VK_BLEND_OP_PINLIGHT_EXT                        = 1000148029,
 +      VK_BLEND_OP_HARDMIX_EXT                         = 1000148030,
 +      VK_BLEND_OP_HSL_HUE_EXT                         = 1000148031,
 +      VK_BLEND_OP_HSL_SATURATION_EXT          = 1000148032,
 +      VK_BLEND_OP_HSL_COLOR_EXT                       = 1000148033,
 +      VK_BLEND_OP_HSL_LUMINOSITY_EXT          = 1000148034,
 +      VK_BLEND_OP_PLUS_EXT                            = 1000148035,
 +      VK_BLEND_OP_PLUS_CLAMPED_EXT            = 1000148036,
 +      VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT      = 1000148037,
 +      VK_BLEND_OP_PLUS_DARKER_EXT                     = 1000148038,
 +      VK_BLEND_OP_MINUS_EXT                           = 1000148039,
 +      VK_BLEND_OP_MINUS_CLAMPED_EXT           = 1000148040,
 +      VK_BLEND_OP_CONTRAST_EXT                        = 1000148041,
 +      VK_BLEND_OP_INVERT_OVG_EXT                      = 1000148042,
 +      VK_BLEND_OP_RED_EXT                                     = 1000148043,
 +      VK_BLEND_OP_GREEN_EXT                           = 1000148044,
 +      VK_BLEND_OP_BLUE_EXT                            = 1000148045,
 +      VK_BLEND_OP_MAX_ENUM                            = 0x7FFFFFFF,
 +};
 +
 +enum VkCompareOp
 +{
 +      VK_COMPARE_OP_NEVER                             = 0,
 +      VK_COMPARE_OP_LESS                              = 1,
 +      VK_COMPARE_OP_EQUAL                             = 2,
 +      VK_COMPARE_OP_LESS_OR_EQUAL             = 3,
 +      VK_COMPARE_OP_GREATER                   = 4,
 +      VK_COMPARE_OP_NOT_EQUAL                 = 5,
 +      VK_COMPARE_OP_GREATER_OR_EQUAL  = 6,
 +      VK_COMPARE_OP_ALWAYS                    = 7,
 +      VK_COMPARE_OP_LAST,
 +      VK_COMPARE_OP_MAX_ENUM                  = 0x7FFFFFFF,
 +};
 +
 +enum VkDynamicState
 +{
 +      VK_DYNAMIC_STATE_VIEWPORT                                                       = 0,
 +      VK_DYNAMIC_STATE_SCISSOR                                                        = 1,
 +      VK_DYNAMIC_STATE_LINE_WIDTH                                                     = 2,
 +      VK_DYNAMIC_STATE_DEPTH_BIAS                                                     = 3,
 +      VK_DYNAMIC_STATE_BLEND_CONSTANTS                                        = 4,
 +      VK_DYNAMIC_STATE_DEPTH_BOUNDS                                           = 5,
 +      VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK                           = 6,
 +      VK_DYNAMIC_STATE_STENCIL_WRITE_MASK                                     = 7,
 +      VK_DYNAMIC_STATE_STENCIL_REFERENCE                                      = 8,
 +      VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT                          = 1000099000,
 +      VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT                           = 1000143000,
 +      VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR                      = 1000226000,
 +      VK_DYNAMIC_STATE_LINE_STIPPLE_EXT                                       = 1000259000,
 +      VK_DYNAMIC_STATE_CULL_MODE_EXT                                          = 1000267000,
 +      VK_DYNAMIC_STATE_FRONT_FACE_EXT                                         = 1000267001,
 +      VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT                         = 1000267002,
 +      VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT                        = 1000267003,
 +      VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT                         = 1000267004,
 +      VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT        = 1000267005,
 +      VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT                          = 1000267006,
 +      VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT                         = 1000267007,
 +      VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT                           = 1000267008,
 +      VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT           = 1000267009,
 +      VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT                        = 1000267010,
 +      VK_DYNAMIC_STATE_STENCIL_OP_EXT                                         = 1000267011,
++      VK_DYNAMIC_STATE_VERTEX_INPUT_EXT                                       = 1000352000,
++      VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT                       = 1000377000,
++      VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT          = 1000377001,
++      VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT                          = 1000377002,
++      VK_DYNAMIC_STATE_LOGIC_OP_EXT                                           = 1000377003,
++      VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT           = 1000377004,
++      VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT                         = 1000381000,
 +      VK_DYNAMIC_STATE_MAX_ENUM                                                       = 0x7FFFFFFF,
 +};
 +
 +enum VkFrontFace
 +{
 +      VK_FRONT_FACE_COUNTER_CLOCKWISE = 0,
 +      VK_FRONT_FACE_CLOCKWISE                 = 1,
 +      VK_FRONT_FACE_LAST,
 +      VK_FRONT_FACE_MAX_ENUM                  = 0x7FFFFFFF,
 +};
 +
 +enum VkVertexInputRate
 +{
 +      VK_VERTEX_INPUT_RATE_VERTEX             = 0,
 +      VK_VERTEX_INPUT_RATE_INSTANCE   = 1,
 +      VK_VERTEX_INPUT_RATE_LAST,
 +      VK_VERTEX_INPUT_RATE_MAX_ENUM   = 0x7FFFFFFF,
 +};
 +
 +enum VkPrimitiveTopology
 +{
 +      VK_PRIMITIVE_TOPOLOGY_POINT_LIST                                        = 0,
 +      VK_PRIMITIVE_TOPOLOGY_LINE_LIST                                         = 1,
 +      VK_PRIMITIVE_TOPOLOGY_LINE_STRIP                                        = 2,
 +      VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST                                     = 3,
 +      VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP                            = 4,
 +      VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN                                      = 5,
 +      VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY          = 6,
 +      VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY         = 7,
 +      VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY      = 8,
 +      VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY     = 9,
 +      VK_PRIMITIVE_TOPOLOGY_PATCH_LIST                                        = 10,
 +      VK_PRIMITIVE_TOPOLOGY_LAST,
 +      VK_PRIMITIVE_TOPOLOGY_MAX_ENUM                                          = 0x7FFFFFFF,
 +};
 +
 +enum VkPolygonMode
 +{
 +      VK_POLYGON_MODE_FILL            = 0,
 +      VK_POLYGON_MODE_LINE            = 1,
 +      VK_POLYGON_MODE_POINT           = 2,
 +      VK_POLYGON_MODE_LAST,
 +      VK_POLYGON_MODE_MAX_ENUM        = 0x7FFFFFFF,
 +};
 +
 +enum VkStencilOp
 +{
 +      VK_STENCIL_OP_KEEP                                      = 0,
 +      VK_STENCIL_OP_ZERO                                      = 1,
 +      VK_STENCIL_OP_REPLACE                           = 2,
 +      VK_STENCIL_OP_INCREMENT_AND_CLAMP       = 3,
 +      VK_STENCIL_OP_DECREMENT_AND_CLAMP       = 4,
 +      VK_STENCIL_OP_INVERT                            = 5,
 +      VK_STENCIL_OP_INCREMENT_AND_WRAP        = 6,
 +      VK_STENCIL_OP_DECREMENT_AND_WRAP        = 7,
 +      VK_STENCIL_OP_LAST,
 +      VK_STENCIL_OP_MAX_ENUM                          = 0x7FFFFFFF,
 +};
 +
 +enum VkLogicOp
 +{
 +      VK_LOGIC_OP_CLEAR                       = 0,
 +      VK_LOGIC_OP_AND                         = 1,
 +      VK_LOGIC_OP_AND_REVERSE         = 2,
 +      VK_LOGIC_OP_COPY                        = 3,
 +      VK_LOGIC_OP_AND_INVERTED        = 4,
 +      VK_LOGIC_OP_NO_OP                       = 5,
 +      VK_LOGIC_OP_XOR                         = 6,
 +      VK_LOGIC_OP_OR                          = 7,
 +      VK_LOGIC_OP_NOR                         = 8,
 +      VK_LOGIC_OP_EQUIVALENT          = 9,
 +      VK_LOGIC_OP_INVERT                      = 10,
 +      VK_LOGIC_OP_OR_REVERSE          = 11,
 +      VK_LOGIC_OP_COPY_INVERTED       = 12,
 +      VK_LOGIC_OP_OR_INVERTED         = 13,
 +      VK_LOGIC_OP_NAND                        = 14,
 +      VK_LOGIC_OP_SET                         = 15,
 +      VK_LOGIC_OP_LAST,
 +      VK_LOGIC_OP_MAX_ENUM            = 0x7FFFFFFF,
 +};
 +
 +enum VkBorderColor
 +{
 +      VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0,
 +      VK_BORDER_COLOR_INT_TRANSPARENT_BLACK   = 1,
 +      VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK              = 2,
 +      VK_BORDER_COLOR_INT_OPAQUE_BLACK                = 3,
 +      VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE              = 4,
 +      VK_BORDER_COLOR_INT_OPAQUE_WHITE                = 5,
 +      VK_BORDER_COLOR_FLOAT_CUSTOM_EXT                = 1000287003,
 +      VK_BORDER_COLOR_INT_CUSTOM_EXT                  = 1000287004,
 +      VK_BORDER_COLOR_MAX_ENUM                                = 0x7FFFFFFF,
 +};
 +
 +enum VkFilter
 +{
 +      VK_FILTER_NEAREST       = 0,
 +      VK_FILTER_LINEAR        = 1,
 +      VK_FILTER_CUBIC_IMG     = 1000015000,
 +      VK_FILTER_CUBIC_EXT     = VK_FILTER_CUBIC_IMG,
 +      VK_FILTER_MAX_ENUM      = 0x7FFFFFFF,
 +};
 +
 +enum VkSamplerAddressMode
 +{
 +      VK_SAMPLER_ADDRESS_MODE_REPEAT                                  = 0,
 +      VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT                 = 1,
 +      VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE                   = 2,
 +      VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER                 = 3,
 +      VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE    = 4,
 +      VK_SAMPLER_ADDRESS_MODE_LAST,
 +      VK_SAMPLER_ADDRESS_MODE_MAX_ENUM                                = 0x7FFFFFFF,
 +};
 +
 +enum VkSamplerMipmapMode
 +{
 +      VK_SAMPLER_MIPMAP_MODE_NEAREST  = 0,
 +      VK_SAMPLER_MIPMAP_MODE_LINEAR   = 1,
 +      VK_SAMPLER_MIPMAP_MODE_LAST,
 +      VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 0x7FFFFFFF,
 +};
 +
 +enum VkDescriptorType
 +{
 +      VK_DESCRIPTOR_TYPE_SAMPLER                                      = 0,
 +      VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER       = 1,
 +      VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE                        = 2,
 +      VK_DESCRIPTOR_TYPE_STORAGE_IMAGE                        = 3,
 +      VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER         = 4,
 +      VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER         = 5,
 +      VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER                       = 6,
 +      VK_DESCRIPTOR_TYPE_STORAGE_BUFFER                       = 7,
 +      VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC       = 8,
 +      VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC       = 9,
 +      VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT                     = 10,
 +      VK_DESCRIPTOR_TYPE_LAST,
 +      VK_DESCRIPTOR_TYPE_MAX_ENUM                                     = 0x7FFFFFFF,
 +};
 +
 +enum VkAttachmentLoadOp
 +{
 +      VK_ATTACHMENT_LOAD_OP_LOAD              = 0,
 +      VK_ATTACHMENT_LOAD_OP_CLEAR             = 1,
 +      VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2,
 +      VK_ATTACHMENT_LOAD_OP_LAST,
 +      VK_ATTACHMENT_LOAD_OP_MAX_ENUM  = 0x7FFFFFFF,
 +};
 +
 +enum VkAttachmentStoreOp
 +{
 +      VK_ATTACHMENT_STORE_OP_STORE            = 0,
 +      VK_ATTACHMENT_STORE_OP_DONT_CARE        = 1,
 +      VK_ATTACHMENT_STORE_OP_LAST,
 +      VK_ATTACHMENT_STORE_OP_MAX_ENUM         = 0x7FFFFFFF,
 +};
 +
 +enum VkPipelineBindPoint
 +{
 +      VK_PIPELINE_BIND_POINT_GRAPHICS = 0,
 +      VK_PIPELINE_BIND_POINT_COMPUTE  = 1,
 +      VK_PIPELINE_BIND_POINT_LAST,
 +      VK_PIPELINE_BIND_POINT_MAX_ENUM = 0x7FFFFFFF,
 +};
 +
 +enum VkCommandBufferLevel
 +{
 +      VK_COMMAND_BUFFER_LEVEL_PRIMARY         = 0,
 +      VK_COMMAND_BUFFER_LEVEL_SECONDARY       = 1,
 +      VK_COMMAND_BUFFER_LEVEL_LAST,
 +      VK_COMMAND_BUFFER_LEVEL_MAX_ENUM        = 0x7FFFFFFF,
 +};
 +
 +enum VkIndexType
 +{
 +      VK_INDEX_TYPE_UINT16    = 0,
 +      VK_INDEX_TYPE_UINT32    = 1,
 +      VK_INDEX_TYPE_UINT8_EXT = 1000265000,
 +      VK_INDEX_TYPE_MAX_ENUM  = 0x7FFFFFFF,
 +};
 +
 +enum VkSubpassContents
 +{
 +      VK_SUBPASS_CONTENTS_INLINE                                              = 0,
 +      VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS   = 1,
 +      VK_SUBPASS_CONTENTS_LAST,
 +      VK_SUBPASS_CONTENTS_MAX_ENUM                                    = 0x7FFFFFFF,
 +};
 +
- typedef VkFaultLevel VkFaultLevelKHR;
- typedef VkFaultType VkFaultTypeKHR;
- typedef VkFaultQueryBehavior VkFaultQueryBehaviorKHR;
- typedef VkPipelineMatchControl VkPipelineMatchControlKHR;
 +enum VkPointClippingBehavior
 +{
 +      VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES                      = 0,
 +      VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY        = 1,
 +      VK_POINT_CLIPPING_BEHAVIOR_LAST,
 +      VK_POINT_CLIPPING_BEHAVIOR_MAX_ENUM                                     = 0x7FFFFFFF,
 +};
 +
 +enum VkTessellationDomainOrigin
 +{
 +      VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT        = 0,
 +      VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT        = 1,
 +      VK_TESSELLATION_DOMAIN_ORIGIN_LAST,
 +      VK_TESSELLATION_DOMAIN_ORIGIN_MAX_ENUM          = 0x7FFFFFFF,
 +};
 +
 +enum VkSamplerYcbcrModelConversion
 +{
 +      VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY          = 0,
 +      VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY        = 1,
 +      VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709                     = 2,
 +      VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601                     = 3,
 +      VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020            = 4,
 +      VK_SAMPLER_YCBCR_MODEL_CONVERSION_LAST,
 +      VK_SAMPLER_YCBCR_MODEL_CONVERSION_MAX_ENUM                      = 0x7FFFFFFF,
 +};
 +
 +enum VkSamplerYcbcrRange
 +{
 +      VK_SAMPLER_YCBCR_RANGE_ITU_FULL         = 0,
 +      VK_SAMPLER_YCBCR_RANGE_ITU_NARROW       = 1,
 +      VK_SAMPLER_YCBCR_RANGE_LAST,
 +      VK_SAMPLER_YCBCR_RANGE_MAX_ENUM         = 0x7FFFFFFF,
 +};
 +
 +enum VkChromaLocation
 +{
 +      VK_CHROMA_LOCATION_COSITED_EVEN = 0,
 +      VK_CHROMA_LOCATION_MIDPOINT             = 1,
 +      VK_CHROMA_LOCATION_LAST,
 +      VK_CHROMA_LOCATION_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_MESA_LLVMPIPE                              = 13,
 +      VK_DRIVER_ID_MOLTENVK                                   = 14,
++      VK_DRIVER_ID_COREAVI_PROPRIETARY                = 15,
 +      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_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_LAST,
 +      VK_SAMPLER_REDUCTION_MODE_MAX_ENUM                      = 0x7FFFFFFF,
 +};
 +
 +enum VkSemaphoreType
 +{
 +      VK_SEMAPHORE_TYPE_BINARY        = 0,
 +      VK_SEMAPHORE_TYPE_TIMELINE      = 1,
 +      VK_SEMAPHORE_TYPE_LAST,
 +      VK_SEMAPHORE_TYPE_MAX_ENUM      = 0x7FFFFFFF,
 +};
 +
++enum VkFaultLevel
++{
++      VK_FAULT_LEVEL_UNASSIGNED       = 0,
++      VK_FAULT_LEVEL_CRITICAL         = 1,
++      VK_FAULT_LEVEL_RECOVERABLE      = 2,
++      VK_FAULT_LEVEL_WARNING          = 3,
++      VK_FAULT_LEVEL_LAST,
++      VK_FAULT_LEVEL_MAX_ENUM         = 0x7FFFFFFF,
++};
++
++enum VkFaultType
++{
++      VK_FAULT_TYPE_INVALID                           = 0,
++      VK_FAULT_TYPE_UNASSIGNED                        = 1,
++      VK_FAULT_TYPE_IMPLEMENTATION            = 2,
++      VK_FAULT_TYPE_SYSTEM                            = 3,
++      VK_FAULT_TYPE_PHYSICAL_DEVICE           = 4,
++      VK_FAULT_TYPE_COMMAND_BUFFER_FULL       = 5,
++      VK_FAULT_TYPE_INVALID_API_USAGE         = 6,
++      VK_FAULT_TYPE_LAST,
++      VK_FAULT_TYPE_MAX_ENUM                          = 0x7FFFFFFF,
++};
++
++enum VkFaultQueryBehavior
++{
++      VK_FAULT_QUERY_BEHAVIOR_GET_AND_CLEAR_ALL_FAULTS        = 0,
++      VK_FAULT_QUERY_BEHAVIOR_LAST,
++      VK_FAULT_QUERY_BEHAVIOR_MAX_ENUM                                        = 0x7FFFFFFF,
++};
++
++enum VkPipelineMatchControl
++{
++      VK_PIPELINE_MATCH_CONTROL_APPLICATION_UUID_EXACT_MATCH  = 0,
++      VK_PIPELINE_MATCH_CONTROL_LAST,
++      VK_PIPELINE_MATCH_CONTROL_MAX_ENUM                                              = 0x7FFFFFFF,
++};
++
 +enum VkPresentModeKHR
 +{
 +      VK_PRESENT_MODE_IMMEDIATE_KHR                                   = 0,
 +      VK_PRESENT_MODE_MAILBOX_KHR                                             = 1,
 +      VK_PRESENT_MODE_FIFO_KHR                                                = 2,
 +      VK_PRESENT_MODE_FIFO_RELAXED_KHR                                = 3,
 +      VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR               = 1000111000,
 +      VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR   = 1000111001,
 +      VK_PRESENT_MODE_MAX_ENUM_KHR                                    = 0x7FFFFFFF,
 +};
 +
 +enum VkColorSpaceKHR
 +{
 +      VK_COLOR_SPACE_SRGB_NONLINEAR_KHR                       = 0,
 +      VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT         = 1000104001,
 +      VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT         = 1000104002,
 +      VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT            = 1000104003,
 +      VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT                     = 1000104004,
 +      VK_COLOR_SPACE_BT709_LINEAR_EXT                         = 1000104005,
 +      VK_COLOR_SPACE_BT709_NONLINEAR_EXT                      = 1000104006,
 +      VK_COLOR_SPACE_BT2020_LINEAR_EXT                        = 1000104007,
 +      VK_COLOR_SPACE_HDR10_ST2084_EXT                         = 1000104008,
 +      VK_COLOR_SPACE_DOLBYVISION_EXT                          = 1000104009,
 +      VK_COLOR_SPACE_HDR10_HLG_EXT                            = 1000104010,
 +      VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT                      = 1000104011,
 +      VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT           = 1000104012,
 +      VK_COLOR_SPACE_PASS_THROUGH_EXT                         = 1000104013,
 +      VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT      = 1000104014,
 +      VK_COLORSPACE_SRGB_NONLINEAR_KHR                        = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR,
 +      VK_COLOR_SPACE_DCI_P3_LINEAR_EXT                        = VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT,
 +      VK_COLOR_SPACE_MAX_ENUM_KHR                                     = 0x7FFFFFFF,
 +};
 +
++enum VkPerformanceCounterUnitKHR
++{
++      VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR                         = 0,
++      VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR                      = 1,
++      VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR                     = 2,
++      VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR                           = 3,
++      VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR        = 4,
++      VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR                          = 5,
++      VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR                           = 6,
++      VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR                           = 7,
++      VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR                            = 8,
++      VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR                           = 9,
++      VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR                          = 10,
++      VK_PERFORMANCE_COUNTER_UNIT_KHR_LAST,
++      VK_PERFORMANCE_COUNTER_UNIT_MAX_ENUM_KHR                        = 0x7FFFFFFF,
++};
++
++enum VkPerformanceCounterScopeKHR
++{
++      VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR = 0,
++      VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR    = 1,
++      VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR                = 2,
++      VK_QUERY_SCOPE_COMMAND_BUFFER_KHR                               = VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR,
++      VK_QUERY_SCOPE_RENDER_PASS_KHR                                  = VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR,
++      VK_QUERY_SCOPE_COMMAND_KHR                                              = VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR,
++      VK_PERFORMANCE_COUNTER_SCOPE_KHR_LAST,
++      VK_PERFORMANCE_COUNTER_SCOPE_MAX_ENUM_KHR               = 0x7FFFFFFF,
++};
++
++enum VkPerformanceCounterStorageKHR
++{
++      VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR        = 0,
++      VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR        = 1,
++      VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR       = 2,
++      VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR       = 3,
++      VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR      = 4,
++      VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR      = 5,
++      VK_PERFORMANCE_COUNTER_STORAGE_KHR_LAST,
++      VK_PERFORMANCE_COUNTER_STORAGE_MAX_ENUM_KHR     = 0x7FFFFFFF,
++};
++
 +enum VkFragmentShadingRateCombinerOpKHR
 +{
 +      VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR           = 0,
 +      VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR        = 1,
 +      VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHR            = 2,
 +      VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHR            = 3,
 +      VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR            = 4,
 +      VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KHR_LAST,
 +      VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_ENUM_KHR       = 0x7FFFFFFF,
 +};
 +
 +enum VkDisplayPowerStateEXT
 +{
 +      VK_DISPLAY_POWER_STATE_OFF_EXT          = 0,
 +      VK_DISPLAY_POWER_STATE_SUSPEND_EXT      = 1,
 +      VK_DISPLAY_POWER_STATE_ON_EXT           = 2,
 +      VK_DISPLAY_POWER_STATE_EXT_LAST,
 +      VK_DISPLAY_POWER_STATE_MAX_ENUM_EXT     = 0x7FFFFFFF,
 +};
 +
 +enum VkDeviceEventTypeEXT
 +{
 +      VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT        = 0,
 +      VK_DEVICE_EVENT_TYPE_EXT_LAST,
 +      VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT                       = 0x7FFFFFFF,
 +};
 +
 +enum VkDisplayEventTypeEXT
 +{
 +      VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT       = 0,
 +      VK_DISPLAY_EVENT_TYPE_EXT_LAST,
 +      VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT                      = 0x7FFFFFFF,
 +};
 +
 +enum VkDiscardRectangleModeEXT
 +{
 +      VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0,
 +      VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1,
 +      VK_DISCARD_RECTANGLE_MODE_EXT_LAST,
 +      VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT  = 0x7FFFFFFF,
 +};
 +
 +enum VkConservativeRasterizationModeEXT
 +{
 +      VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT                 = 0,
 +      VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT             = 1,
 +      VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT    = 2,
 +      VK_CONSERVATIVE_RASTERIZATION_MODE_EXT_LAST,
 +      VK_CONSERVATIVE_RASTERIZATION_MODE_MAX_ENUM_EXT                 = 0x7FFFFFFF,
 +};
 +
 +enum VkBlendOverlapEXT
 +{
 +      VK_BLEND_OVERLAP_UNCORRELATED_EXT       = 0,
 +      VK_BLEND_OVERLAP_DISJOINT_EXT           = 1,
 +      VK_BLEND_OVERLAP_CONJOINT_EXT           = 2,
 +      VK_BLEND_OVERLAP_EXT_LAST,
 +      VK_BLEND_OVERLAP_MAX_ENUM_EXT           = 0x7FFFFFFF,
 +};
 +
 +enum VkQueueGlobalPriorityEXT
 +{
 +      VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT                = 128,
 +      VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT             = 256,
 +      VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT               = 512,
 +      VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT   = 1024,
 +      VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM_EXT   = 0x7FFFFFFF,
 +};
 +
 +enum VkTimeDomainEXT
 +{
 +      VK_TIME_DOMAIN_DEVICE_EXT                                               = 0,
 +      VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT                              = 1,
 +      VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT                  = 2,
 +      VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT    = 3,
 +      VK_TIME_DOMAIN_EXT_LAST,
 +      VK_TIME_DOMAIN_MAX_ENUM_EXT                                             = 0x7FFFFFFF,
 +};
 +
++enum VkValidationFeatureEnableEXT
++{
++      VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT                                           = 0,
++      VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT      = 1,
++      VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT                                         = 2,
++      VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT                                           = 3,
++      VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT                     = 4,
++      VK_VALIDATION_FEATURE_ENABLE_EXT_LAST,
++      VK_VALIDATION_FEATURE_ENABLE_MAX_ENUM_EXT                                                       = 0x7FFFFFFF,
++};
++
++enum VkValidationFeatureDisableEXT
++{
++      VK_VALIDATION_FEATURE_DISABLE_ALL_EXT                           = 0,
++      VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT                       = 1,
++      VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT         = 2,
++      VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT        = 3,
++      VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT      = 4,
++      VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT           = 5,
++      VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT        = 6,
++      VK_VALIDATION_FEATURE_DISABLE_EXT_LAST,
++      VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT                      = 0x7FFFFFFF,
++};
++
 +enum VkLineRasterizationModeEXT
 +{
 +      VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT                          = 0,
 +      VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT                      = 1,
 +      VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT                        = 2,
 +      VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT       = 3,
 +      VK_LINE_RASTERIZATION_MODE_EXT_LAST,
 +      VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT                         = 0x7FFFFFFF,
 +};
 +
-       VK_MEMORY_HEAP_SEU_SAFE_BIT_KHR         = 0x00000004,
 +enum VkAccessFlagBits
 +{
 +      VK_ACCESS_INDIRECT_COMMAND_READ_BIT                                             = 0x00000001,
 +      VK_ACCESS_INDEX_READ_BIT                                                                = 0x00000002,
 +      VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT                                             = 0x00000004,
 +      VK_ACCESS_UNIFORM_READ_BIT                                                              = 0x00000008,
 +      VK_ACCESS_INPUT_ATTACHMENT_READ_BIT                                             = 0x00000010,
 +      VK_ACCESS_SHADER_READ_BIT                                                               = 0x00000020,
 +      VK_ACCESS_SHADER_WRITE_BIT                                                              = 0x00000040,
 +      VK_ACCESS_COLOR_ATTACHMENT_READ_BIT                                             = 0x00000080,
 +      VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT                                    = 0x00000100,
 +      VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT                             = 0x00000200,
 +      VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT                    = 0x00000400,
 +      VK_ACCESS_TRANSFER_READ_BIT                                                             = 0x00000800,
 +      VK_ACCESS_TRANSFER_WRITE_BIT                                                    = 0x00001000,
 +      VK_ACCESS_HOST_READ_BIT                                                                 = 0x00002000,
 +      VK_ACCESS_HOST_WRITE_BIT                                                                = 0x00004000,
 +      VK_ACCESS_MEMORY_READ_BIT                                                               = 0x00008000,
 +      VK_ACCESS_MEMORY_WRITE_BIT                                                              = 0x00010000,
 +      VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT             = 0x00080000,
 +      VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV                                = 0x00800000,
++      VK_ACCESS_NONE_KHR                                                                              = 0,
 +      VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV,
 +      VK_ACCESS_FLAG_BITS_MAX_ENUM                                                    = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkAccessFlags;
 +
 +enum VkImageAspectFlagBits
 +{
 +      VK_IMAGE_ASPECT_COLOR_BIT                               = 0x00000001,
 +      VK_IMAGE_ASPECT_DEPTH_BIT                               = 0x00000002,
 +      VK_IMAGE_ASPECT_STENCIL_BIT                             = 0x00000004,
 +      VK_IMAGE_ASPECT_METADATA_BIT                    = 0x00000008,
 +      VK_IMAGE_ASPECT_PLANE_0_BIT                             = 0x00000010,
 +      VK_IMAGE_ASPECT_PLANE_1_BIT                             = 0x00000020,
 +      VK_IMAGE_ASPECT_PLANE_2_BIT                             = 0x00000040,
 +      VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT  = 0x00000080,
 +      VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT  = 0x00000100,
 +      VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT  = 0x00000200,
 +      VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT  = 0x00000400,
 +      VK_IMAGE_ASPECT_FLAG_BITS_MAX_ENUM              = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkImageAspectFlags;
 +
 +enum VkFormatFeatureFlagBits
 +{
 +      VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT                                                                                                                             = 0x00000001,
 +      VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT                                                                                                                             = 0x00000002,
 +      VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT                                                                                                              = 0x00000004,
 +      VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT                                                                                                              = 0x00000008,
 +      VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT                                                                                                              = 0x00000010,
 +      VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT                                                                                               = 0x00000020,
 +      VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT                                                                                                                             = 0x00000040,
 +      VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT                                                                                                                  = 0x00000080,
 +      VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT                                                                                                    = 0x00000100,
 +      VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT                                                                                                  = 0x00000200,
 +      VK_FORMAT_FEATURE_BLIT_SRC_BIT                                                                                                                                  = 0x00000400,
 +      VK_FORMAT_FEATURE_BLIT_DST_BIT                                                                                                                                  = 0x00000800,
 +      VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT                                                                                               = 0x00001000,
 +      VK_FORMAT_FEATURE_TRANSFER_SRC_BIT                                                                                                                              = 0x00004000,
 +      VK_FORMAT_FEATURE_TRANSFER_DST_BIT                                                                                                                              = 0x00008000,
 +      VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT                                                                                                   = 0x00020000,
 +      VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT                                                              = 0x00040000,
 +      VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT                             = 0x00080000,
 +      VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT                             = 0x00100000,
 +      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_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR                                                                              = 0x40000000,
 +      VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT                                                                                    = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG,
 +      VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM                                                                                                                    = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkFormatFeatureFlags;
 +
 +enum VkImageCreateFlagBits
 +{
 +      VK_IMAGE_CREATE_SPARSE_BINDING_BIT                                                      = 0x00000001,
 +      VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT                                            = 0x00000002,
 +      VK_IMAGE_CREATE_SPARSE_ALIASED_BIT                                                      = 0x00000004,
 +      VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT                                                      = 0x00000008,
 +      VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT                                                     = 0x00000010,
 +      VK_IMAGE_CREATE_ALIAS_BIT                                                                       = 0x00000400,
 +      VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT                         = 0x00000040,
 +      VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT                                         = 0x00000020,
 +      VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT                         = 0x00000080,
 +      VK_IMAGE_CREATE_EXTENDED_USAGE_BIT                                                      = 0x00000100,
 +      VK_IMAGE_CREATE_PROTECTED_BIT                                                           = 0x00000800,
 +      VK_IMAGE_CREATE_DISJOINT_BIT                                                            = 0x00000200,
 +      VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT       = 0x00001000,
 +      VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM                                                      = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkImageCreateFlags;
 +
 +enum VkSampleCountFlagBits
 +{
 +      VK_SAMPLE_COUNT_1_BIT                           = 0x00000001,
 +      VK_SAMPLE_COUNT_2_BIT                           = 0x00000002,
 +      VK_SAMPLE_COUNT_4_BIT                           = 0x00000004,
 +      VK_SAMPLE_COUNT_8_BIT                           = 0x00000008,
 +      VK_SAMPLE_COUNT_16_BIT                          = 0x00000010,
 +      VK_SAMPLE_COUNT_32_BIT                          = 0x00000020,
 +      VK_SAMPLE_COUNT_64_BIT                          = 0x00000040,
 +      VK_SAMPLE_COUNT_FLAG_BITS_MAX_ENUM      = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkSampleCountFlags;
 +
 +enum VkImageUsageFlagBits
 +{
 +      VK_IMAGE_USAGE_TRANSFER_SRC_BIT                                                 = 0x00000001,
 +      VK_IMAGE_USAGE_TRANSFER_DST_BIT                                                 = 0x00000002,
 +      VK_IMAGE_USAGE_SAMPLED_BIT                                                              = 0x00000004,
 +      VK_IMAGE_USAGE_STORAGE_BIT                                                              = 0x00000008,
 +      VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT                                             = 0x00000010,
 +      VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT                             = 0x00000020,
 +      VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT                                 = 0x00000040,
 +      VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT                                             = 0x00000080,
 +      VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV                                = 0x00000100,
 +      VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV,
 +      VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM                                               = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkImageUsageFlags;
 +
 +enum VkMemoryHeapFlagBits
 +{
 +      VK_MEMORY_HEAP_DEVICE_LOCAL_BIT         = 0x00000001,
 +      VK_MEMORY_HEAP_MULTI_INSTANCE_BIT       = 0x00000002,
- enum VkSparseMemoryBindFlagBits
- {
-       VK_SPARSE_MEMORY_BIND_METADATA_BIT                      = 0x00000001,
-       VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM        = 0x7FFFFFFF,
- };
- typedef deUint32 VkSparseMemoryBindFlags;
- enum VkSparseImageFormatFlagBits
- {
-       VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT                       = 0x00000001,
-       VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT                     = 0x00000002,
-       VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT       = 0x00000004,
-       VK_SPARSE_IMAGE_FORMAT_FLAG_BITS_MAX_ENUM                       = 0x7FFFFFFF,
- };
- typedef deUint32 VkSparseImageFormatFlags;
++      VK_MEMORY_HEAP_SEU_SAFE_BIT                     = 0x00000004,
 +      VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM       = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkMemoryHeapFlags;
 +
 +enum VkMemoryPropertyFlagBits
 +{
 +      VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT             = 0x00000001,
 +      VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT             = 0x00000002,
 +      VK_MEMORY_PROPERTY_HOST_COHERENT_BIT    = 0x00000004,
 +      VK_MEMORY_PROPERTY_HOST_CACHED_BIT              = 0x00000008,
 +      VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 0x00000010,
 +      VK_MEMORY_PROPERTY_PROTECTED_BIT                = 0x00000020,
 +      VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM   = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkMemoryPropertyFlags;
 +
 +enum VkQueueFlagBits
 +{
 +      VK_QUEUE_GRAPHICS_BIT           = 0x00000001,
 +      VK_QUEUE_COMPUTE_BIT            = 0x00000002,
 +      VK_QUEUE_TRANSFER_BIT           = 0x00000004,
 +      VK_QUEUE_SPARSE_BINDING_BIT     = 0x00000008,
 +      VK_QUEUE_PROTECTED_BIT          = 0x00000010,
 +      VK_QUEUE_FLAG_BITS_MAX_ENUM     = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkQueueFlags;
 +
 +enum VkDeviceQueueCreateFlagBits
 +{
 +      VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT            = 0x00000001,
 +      VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM       = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkDeviceQueueCreateFlags;
 +
 +enum VkPipelineStageFlagBits
 +{
 +      VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT                                                       = 0x00000001,
 +      VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT                                                     = 0x00000002,
 +      VK_PIPELINE_STAGE_VERTEX_INPUT_BIT                                                      = 0x00000004,
 +      VK_PIPELINE_STAGE_VERTEX_SHADER_BIT                                                     = 0x00000008,
 +      VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT                       = 0x00000010,
 +      VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT            = 0x00000020,
 +      VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT                                           = 0x00000040,
 +      VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT                                           = 0x00000080,
 +      VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT                                      = 0x00000100,
 +      VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT                                       = 0x00000200,
 +      VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT                           = 0x00000400,
 +      VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT                                            = 0x00000800,
 +      VK_PIPELINE_STAGE_TRANSFER_BIT                                                          = 0x00001000,
 +      VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT                                            = 0x00002000,
 +      VK_PIPELINE_STAGE_HOST_BIT                                                                      = 0x00004000,
 +      VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT                                                      = 0x00008000,
 +      VK_PIPELINE_STAGE_ALL_COMMANDS_BIT                                                      = 0x00010000,
 +      VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV                                     = 0x00400000,
++      VK_PIPELINE_STAGE_NONE_KHR                                                                      = 0,
 +      VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR      = VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV,
 +      VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM                                            = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkPipelineStageFlags;
 +
-       VK_PIPELINE_CACHE_CREATE_USE_APPLICATION_STORAGE_BIT            = 0x00000004,
-       VK_PIPELINE_CACHE_CREATE_RESERVED_1_BIT_EXT                                     = 0x00000002,
-       VK_PIPELINE_CACHE_CREATE_READ_ONLY_BIT                                          = VK_PIPELINE_CACHE_CREATE_RESERVED_1_BIT_EXT,
-       VK_PIPELINE_CACHE_CREATE_READ_ONLY_BIT_KHR                                      = VK_PIPELINE_CACHE_CREATE_READ_ONLY_BIT,
-       VK_PIPELINE_CACHE_CREATE_USE_APPLICATION_STORAGE_BIT_KHR        = VK_PIPELINE_CACHE_CREATE_USE_APPLICATION_STORAGE_BIT,
-       VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM                                     = 0x7FFFFFFF,
 +enum VkFenceCreateFlagBits
 +{
 +      VK_FENCE_CREATE_SIGNALED_BIT            = 0x00000001,
 +      VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM      = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkFenceCreateFlags;
 +
++enum VkEventCreateFlagBits
++{
++      VK_EVENT_CREATE_DEVICE_ONLY_BIT_KHR     = 0x00000001,
++      VK_EVENT_CREATE_FLAG_BITS_MAX_ENUM      = 0x7FFFFFFF,
++};
++typedef deUint32 VkEventCreateFlags;
++
 +enum VkQueryPipelineStatisticFlagBits
 +{
 +      VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT                                         = 0x00000001,
 +      VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT                                       = 0x00000002,
 +      VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT                                       = 0x00000004,
 +      VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT                                     = 0x00000008,
 +      VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT                                      = 0x00000010,
 +      VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT                                            = 0x00000020,
 +      VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT                                                     = 0x00000040,
 +      VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT                                     = 0x00000080,
 +      VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT                     = 0x00000100,
 +      VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT      = 0x00000200,
 +      VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT                                      = 0x00000400,
 +      VK_QUERY_PIPELINE_STATISTIC_FLAG_BITS_MAX_ENUM                                                          = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkQueryPipelineStatisticFlags;
 +
 +enum VkQueryResultFlagBits
 +{
 +      VK_QUERY_RESULT_64_BIT                                  = 0x00000001,
 +      VK_QUERY_RESULT_WAIT_BIT                                = 0x00000002,
 +      VK_QUERY_RESULT_WITH_AVAILABILITY_BIT   = 0x00000004,
 +      VK_QUERY_RESULT_PARTIAL_BIT                             = 0x00000008,
 +      VK_QUERY_RESULT_FLAG_BITS_MAX_ENUM              = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkQueryResultFlags;
 +
 +enum VkBufferCreateFlagBits
 +{
 +      VK_BUFFER_CREATE_SPARSE_BINDING_BIT                                     = 0x00000001,
 +      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      = 0x00000010,
 +      VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM                                     = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkBufferCreateFlags;
 +
 +enum VkBufferUsageFlagBits
 +{
 +      VK_BUFFER_USAGE_TRANSFER_SRC_BIT                        = 0x00000001,
 +      VK_BUFFER_USAGE_TRANSFER_DST_BIT                        = 0x00000002,
 +      VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT        = 0x00000004,
 +      VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT        = 0x00000008,
 +      VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT                      = 0x00000010,
 +      VK_BUFFER_USAGE_STORAGE_BUFFER_BIT                      = 0x00000020,
 +      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_FLAG_BITS_MAX_ENUM                      = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkBufferUsageFlags;
 +
 +enum VkImageViewCreateFlagBits
 +{
 +      VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkImageViewCreateFlags;
 +
 +enum VkPipelineCacheCreateFlagBits
 +{
- typedef deUint32 VkEventCreateFlags;
++      VK_PIPELINE_CACHE_CREATE_USE_APPLICATION_STORAGE_BIT    = 0x00000004,
++      VK_PIPELINE_CACHE_CREATE_RESERVED_1_BIT_EXT                             = 0x00000002,
++      VK_PIPELINE_CACHE_CREATE_READ_ONLY_BIT                                  = VK_PIPELINE_CACHE_CREATE_RESERVED_1_BIT_EXT,
++      VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM                             = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkPipelineCacheCreateFlags;
 +
 +enum VkColorComponentFlagBits
 +{
 +      VK_COLOR_COMPONENT_R_BIT                                = 0x00000001,
 +      VK_COLOR_COMPONENT_G_BIT                                = 0x00000002,
 +      VK_COLOR_COMPONENT_B_BIT                                = 0x00000004,
 +      VK_COLOR_COMPONENT_A_BIT                                = 0x00000008,
 +      VK_COLOR_COMPONENT_FLAG_BITS_MAX_ENUM   = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkColorComponentFlags;
 +
 +enum VkPipelineCreateFlagBits
 +{
 +      VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT                     = 0x00000001,
 +      VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT                        = 0x00000002,
 +      VK_PIPELINE_CREATE_DERIVATIVE_BIT                                       = 0x00000004,
 +      VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT     = 0x00000008,
 +      VK_PIPELINE_CREATE_DISPATCH_BASE_BIT                            = 0x00000010,
 +      VK_PIPELINE_CREATE_DISPATCH_BASE                                        = VK_PIPELINE_CREATE_DISPATCH_BASE_BIT,
 +      VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM                           = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkPipelineCreateFlags;
 +
 +enum VkPipelineShaderStageCreateFlagBits
 +{
 +      VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT     = 0x00000001,
 +      VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT          = 0x00000002,
 +      VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM                                      = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkPipelineShaderStageCreateFlags;
 +
 +enum VkShaderStageFlagBits
 +{
 +      VK_SHADER_STAGE_VERTEX_BIT                                      = 0x00000001,
 +      VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT        = 0x00000002,
 +      VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT     = 0x00000004,
 +      VK_SHADER_STAGE_GEOMETRY_BIT                            = 0x00000008,
 +      VK_SHADER_STAGE_FRAGMENT_BIT                            = 0x00000010,
 +      VK_SHADER_STAGE_COMPUTE_BIT                                     = 0x00000020,
 +      VK_SHADER_STAGE_ALL_GRAPHICS                            = 0x0000001F,
 +      VK_SHADER_STAGE_ALL                                                     = 0x7FFFFFFF,
 +      VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM                      = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkShaderStageFlags;
 +
 +enum VkCullModeFlagBits
 +{
 +      VK_CULL_MODE_NONE                               = 0,
 +      VK_CULL_MODE_FRONT_BIT                  = 0x00000001,
 +      VK_CULL_MODE_BACK_BIT                   = 0x00000002,
 +      VK_CULL_MODE_FRONT_AND_BACK             = 0x00000003,
 +      VK_CULL_MODE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkCullModeFlags;
 +
 +enum VkSamplerCreateFlagBits
 +{
 +      VK_SAMPLER_CREATE_FLAG_BITS_MAX_ENUM    = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkSamplerCreateFlags;
 +
 +enum VkDescriptorPoolCreateFlagBits
 +{
 +      VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT       = 0x00000001,
 +      VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT         = 0x00000002,
 +      VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM            = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkDescriptorPoolCreateFlags;
 +
 +enum VkDescriptorSetLayoutCreateFlagBits
 +{
 +      VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT      = 0x00000002,
 +      VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM                      = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkDescriptorSetLayoutCreateFlags;
 +
 +enum VkAttachmentDescriptionFlagBits
 +{
 +      VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT                 = 0x00000001,
 +      VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM    = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkAttachmentDescriptionFlags;
 +
 +enum VkDependencyFlagBits
 +{
 +      VK_DEPENDENCY_BY_REGION_BIT                     = 0x00000001,
 +      VK_DEPENDENCY_DEVICE_GROUP_BIT          = 0x00000004,
 +      VK_DEPENDENCY_VIEW_LOCAL_BIT            = 0x00000002,
 +      VK_DEPENDENCY_FLAG_BITS_MAX_ENUM        = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkDependencyFlags;
 +
 +enum VkFramebufferCreateFlagBits
 +{
 +      VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT                     = 0x00000001,
 +      VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM        = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkFramebufferCreateFlags;
 +
 +enum VkRenderPassCreateFlagBits
 +{
 +      VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM        = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkRenderPassCreateFlags;
 +
 +enum VkSubpassDescriptionFlagBits
 +{
 +      VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM       = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkSubpassDescriptionFlags;
 +
 +enum VkCommandPoolCreateFlagBits
 +{
 +      VK_COMMAND_POOL_CREATE_TRANSIENT_BIT                    = 0x00000001,
 +      VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 0x00000002,
 +      VK_COMMAND_POOL_CREATE_PROTECTED_BIT                    = 0x00000004,
 +      VK_COMMAND_POOL_CREATE_FLAG_BITS_MAX_ENUM               = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkCommandPoolCreateFlags;
 +
 +enum VkCommandPoolResetFlagBits
 +{
 +      VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT     = 0x00000001,
 +      VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM        = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkCommandPoolResetFlags;
 +
 +enum VkCommandBufferUsageFlagBits
 +{
 +      VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT                     = 0x00000001,
 +      VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT        = 0x00000002,
 +      VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT            = 0x00000004,
 +      VK_COMMAND_BUFFER_USAGE_FLAG_BITS_MAX_ENUM                      = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkCommandBufferUsageFlags;
 +
 +enum VkQueryControlFlagBits
 +{
 +      VK_QUERY_CONTROL_PRECISE_BIT            = 0x00000001,
 +      VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM     = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkQueryControlFlags;
 +
 +enum VkCommandBufferResetFlagBits
 +{
 +      VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT   = 0x00000001,
 +      VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM              = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkCommandBufferResetFlags;
 +
 +enum VkStencilFaceFlagBits
 +{
 +      VK_STENCIL_FACE_FRONT_BIT                       = 0x00000001,
 +      VK_STENCIL_FACE_BACK_BIT                        = 0x00000002,
 +      VK_STENCIL_FACE_FRONT_AND_BACK          = 0x00000003,
 +      VK_STENCIL_FRONT_AND_BACK                       = VK_STENCIL_FACE_FRONT_AND_BACK,
 +      VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM      = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkStencilFaceFlags;
 +
 +enum VkSubgroupFeatureFlagBits
 +{
 +      VK_SUBGROUP_FEATURE_BASIC_BIT                           = 0x00000001,
 +      VK_SUBGROUP_FEATURE_VOTE_BIT                            = 0x00000002,
 +      VK_SUBGROUP_FEATURE_ARITHMETIC_BIT                      = 0x00000004,
 +      VK_SUBGROUP_FEATURE_BALLOT_BIT                          = 0x00000008,
 +      VK_SUBGROUP_FEATURE_SHUFFLE_BIT                         = 0x00000010,
 +      VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT        = 0x00000020,
 +      VK_SUBGROUP_FEATURE_CLUSTERED_BIT                       = 0x00000040,
 +      VK_SUBGROUP_FEATURE_QUAD_BIT                            = 0x00000080,
 +      VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM          = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkSubgroupFeatureFlags;
 +
 +enum VkPeerMemoryFeatureFlagBits
 +{
 +      VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT                     = 0x00000001,
 +      VK_PEER_MEMORY_FEATURE_COPY_DST_BIT                     = 0x00000002,
 +      VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT          = 0x00000004,
 +      VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT          = 0x00000008,
 +      VK_PEER_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM       = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkPeerMemoryFeatureFlags;
 +
 +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_FLAG_BITS_MAX_ENUM                                   = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkMemoryAllocateFlags;
 +
 +enum VkExternalMemoryHandleTypeFlagBits
 +{
 +      VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT                                            = 0x00000001,
 +      VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT                                         = 0x00000002,
 +      VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT                                     = 0x00000004,
 +      VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT                                        = 0x00000008,
 +      VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT                            = 0x00000010,
 +      VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT                                           = 0x00000020,
 +      VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT                                       = 0x00000040,
 +      VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT                                          = 0x00000200,
 +      VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT                          = 0x00000080,
 +      VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT       = 0x00000100,
 +      VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM                                       = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkExternalMemoryHandleTypeFlags;
 +
 +enum VkExternalMemoryFeatureFlagBits
 +{
 +      VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT   = 0x00000001,
 +      VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT               = 0x00000002,
 +      VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT               = 0x00000004,
 +      VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM   = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkExternalMemoryFeatureFlags;
 +
 +enum VkExternalFenceHandleTypeFlagBits
 +{
 +      VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT                     = 0x00000001,
 +      VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT          = 0x00000002,
 +      VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT      = 0x00000004,
 +      VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT                       = 0x00000008,
 +      VK_EXTERNAL_FENCE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM        = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkExternalFenceHandleTypeFlags;
 +
 +enum VkExternalFenceFeatureFlagBits
 +{
 +      VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT                = 0x00000001,
 +      VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT                = 0x00000002,
 +      VK_EXTERNAL_FENCE_FEATURE_FLAG_BITS_MAX_ENUM    = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkExternalFenceFeatureFlags;
 +
 +enum VkFenceImportFlagBits
 +{
 +      VK_FENCE_IMPORT_TEMPORARY_BIT           = 0x00000001,
 +      VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM      = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkFenceImportFlags;
 +
 +enum VkSemaphoreImportFlagBits
 +{
 +      VK_SEMAPHORE_IMPORT_TEMPORARY_BIT               = 0x00000001,
 +      VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM  = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkSemaphoreImportFlags;
 +
 +enum VkExternalSemaphoreHandleTypeFlagBits
 +{
 +      VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT                 = 0x00000001,
 +      VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT              = 0x00000002,
 +      VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT  = 0x00000004,
 +      VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT               = 0x00000008,
 +      VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT                   = 0x00000010,
 +      VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE_BIT               = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT,
 +      VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM    = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkExternalSemaphoreHandleTypeFlags;
 +
 +enum VkExternalSemaphoreFeatureFlagBits
 +{
 +      VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT            = 0x00000001,
 +      VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT            = 0x00000002,
 +      VK_EXTERNAL_SEMAPHORE_FEATURE_FLAG_BITS_MAX_ENUM        = 0x7FFFFFFF,
 +};
 +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_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_FLAG_BITS_MAX_ENUM                                = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkDescriptorBindingFlags;
 +
 +enum VkSemaphoreWaitFlagBits
 +{
 +      VK_SEMAPHORE_WAIT_ANY_BIT                               = 0x00000001,
 +      VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM    = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkSemaphoreWaitFlags;
 +
 +enum VkSurfaceTransformFlagBitsKHR
 +{
 +      VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR                                           = 0x00000001,
 +      VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR                                          = 0x00000002,
 +      VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR                                         = 0x00000004,
 +      VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR                                         = 0x00000008,
 +      VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR                          = 0x00000010,
 +      VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR        = 0x00000020,
 +      VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR       = 0x00000040,
 +      VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR       = 0x00000080,
 +      VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR                                            = 0x00000100,
 +      VK_SURFACE_TRANSFORM_FLAG_BITS_MAX_ENUM_KHR                                     = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkSurfaceTransformFlagsKHR;
 +
 +enum VkCompositeAlphaFlagBitsKHR
 +{
 +      VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR                       = 0x00000001,
 +      VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR       = 0x00000002,
 +      VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR      = 0x00000004,
 +      VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR                      = 0x00000008,
 +      VK_COMPOSITE_ALPHA_FLAG_BITS_MAX_ENUM_KHR       = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkCompositeAlphaFlagsKHR;
 +
 +enum VkSwapchainCreateFlagBitsKHR
 +{
 +      VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 0x00000001,
 +      VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR                                   = 0x00000002,
 +      VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR                              = 0x00000004,
 +      VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR                              = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkSwapchainCreateFlagsKHR;
 +
 +enum VkDeviceGroupPresentModeFlagBitsKHR
 +{
 +      VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR                              = 0x00000001,
 +      VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR                             = 0x00000002,
 +      VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR                                = 0x00000004,
 +      VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR = 0x00000008,
 +      VK_DEVICE_GROUP_PRESENT_MODE_FLAG_BITS_MAX_ENUM_KHR             = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkDeviceGroupPresentModeFlagsKHR;
 +
 +enum VkDisplayPlaneAlphaFlagBitsKHR
 +{
 +      VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR                                   = 0x00000001,
 +      VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR                                   = 0x00000002,
 +      VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR                                = 0x00000004,
 +      VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR  = 0x00000008,
 +      VK_DISPLAY_PLANE_ALPHA_FLAG_BITS_MAX_ENUM_KHR                   = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkDisplayPlaneAlphaFlagsKHR;
 +
++enum VkPerformanceCounterDescriptionFlagBitsKHR
++{
++      VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR        = 0x00000001,
++      VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR        = 0x00000002,
++      VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR            = VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR,
++      VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR            = VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR,
++      VK_PERFORMANCE_COUNTER_DESCRIPTION_FLAG_BITS_MAX_ENUM_KHR                       = 0x7FFFFFFF,
++};
++typedef deUint32 VkPerformanceCounterDescriptionFlagsKHR;
++
++enum VkAcquireProfilingLockFlagBitsKHR
++{
++      VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR        = 0x7FFFFFFF,
++};
++typedef deUint32 VkAcquireProfilingLockFlagsKHR;
++
 +enum VkRefreshObjectFlagBitsKHR
 +{
 +      VK_REFRESH_OBJECT_FLAG_BITS_MAX_ENUM_KHR        = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkRefreshObjectFlagsKHR;
 +
++enum VkSubmitFlagBitsKHR
++{
++      VK_SUBMIT_PROTECTED_BIT_KHR                     = 0x00000001,
++      VK_SUBMIT_FLAG_BITS_MAX_ENUM_KHR        = 0x7FFFFFFF,
++};
++typedef deUint32 VkSubmitFlagsKHR;
++
 +enum VkSurfaceCounterFlagBitsEXT
 +{
 +      VK_SURFACE_COUNTER_VBLANK_BIT_EXT                       = 0x00000001,
 +      VK_SURFACE_COUNTER_VBLANK_EXT                           = VK_SURFACE_COUNTER_VBLANK_BIT_EXT,
 +      VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT       = 0x7FFFFFFF,
 +};
 +typedef deUint32 VkSurfaceCounterFlagsEXT;
 +
++enum VkDebugUtilsMessageSeverityFlagBitsEXT
++{
++      VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT                 = 0x00000001,
++      VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT                    = 0x00000010,
++      VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT                 = 0x00000100,
++      VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT                   = 0x00001000,
++      VK_DEBUG_UTILS_MESSAGE_SEVERITY_FLAG_BITS_MAX_ENUM_EXT  = 0x7FFFFFFF,
++};
++typedef deUint32 VkDebugUtilsMessageSeverityFlagsEXT;
++
++enum VkDebugUtilsMessageTypeFlagBitsEXT
++{
++      VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT                     = 0x00000001,
++      VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT          = 0x00000002,
++      VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT         = 0x00000004,
++      VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT      = 0x7FFFFFFF,
++};
++typedef deUint32 VkDebugUtilsMessageTypeFlagsEXT;
++
 +typedef deUint32 VkInstanceCreateFlags;
 +
 +typedef deUint32 VkDeviceCreateFlags;
 +
 +typedef deUint32 VkMemoryMapFlags;
 +
 +typedef deUint32 VkSemaphoreCreateFlags;
 +
- #define VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION 1
 +typedef deUint32 VkQueryPoolCreateFlags;
 +
 +typedef deUint32 VkBufferViewCreateFlags;
 +
 +typedef deUint32 VkPipelineVertexInputStateCreateFlags;
 +
 +typedef deUint32 VkPipelineInputAssemblyStateCreateFlags;
 +
 +typedef deUint32 VkPipelineTessellationStateCreateFlags;
 +
 +typedef deUint32 VkPipelineViewportStateCreateFlags;
 +
 +typedef deUint32 VkPipelineRasterizationStateCreateFlags;
 +
 +typedef deUint32 VkPipelineMultisampleStateCreateFlags;
 +
 +typedef deUint32 VkPipelineDepthStencilStateCreateFlags;
 +
 +typedef deUint32 VkPipelineColorBlendStateCreateFlags;
 +
 +typedef deUint32 VkPipelineDynamicStateCreateFlags;
 +
 +typedef deUint32 VkPipelineLayoutCreateFlags;
 +
 +typedef deUint32 VkDescriptorPoolResetFlags;
 +
 +typedef deUint32 VkDisplayModeCreateFlagsKHR;
 +
 +typedef deUint32 VkDisplaySurfaceCreateFlagsKHR;
 +
 +typedef deUint32 VkPipelineDiscardRectangleStateCreateFlagsEXT;
 +
 +typedef deUint32 VkPipelineRasterizationConservativeStateCreateFlagsEXT;
 +
 +typedef deUint32 VkPipelineRasterizationDepthClipStateCreateFlagsEXT;
 +
++typedef deUint32 VkDebugUtilsMessengerCallbackDataFlagsEXT;
++
++typedef deUint32 VkDebugUtilsMessengerCreateFlagsEXT;
++
 +typedef deUint32 VkHeadlessSurfaceCreateFlagsEXT;
 +
++typedef deUint64 VkPipelineStageFlags2KHR;
++typedef deUint64 VkPipelineStageFlagBits2KHR;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_NONE_KHR                                                                 = 0ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR                                              = 0x00000001ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR                                            = 0x00000002ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT_KHR                                             = 0x00000004ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR                                            = 0x00000008ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR              = 0x00000010ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR           = 0x00000020ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR                                  = 0x00000040ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR                                  = 0x00000080ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR                             = 0x00000100ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR                              = 0x00000200ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR                  = 0x00000400ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR                                           = 0x00000800ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR                                             = 0x00001000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR                                                 = 0x00001000;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR                                           = 0x00002000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_HOST_BIT_KHR                                                             = 0x00004000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR                                             = 0x00008000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR                                             = 0x00010000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_COPY_BIT_KHR                                                             = 0x100000000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR                                                  = 0x200000000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_BLIT_BIT_KHR                                                             = 0x400000000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR                                                            = 0x800000000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR                                              = 0x1000000000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR                           = 0x2000000000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT_KHR                        = 0x4000000000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT                                       = 0x01000000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT                            = 0x00040000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV                                        = 0x00020000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x00400000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV                                        = 0x00400000;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR             = 0x02000000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR                                       = 0x00200000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_NV                                        = 0x00200000;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_NV              = 0x02000000;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT                 = 0x00800000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV                                                       = 0x00080000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV                                                       = 0x00100000ULL;
++
++typedef deUint64 VkAccessFlags2KHR;
++typedef deUint64 VkAccessFlagBits2KHR;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_NONE_KHR                                                                                = 0ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR                                   = 0x00000001ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_INDEX_READ_BIT_KHR                                                      = 0x00000002ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT_KHR                                   = 0x00000004ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_UNIFORM_READ_BIT_KHR                                                    = 0x00000008ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR                                   = 0x00000010ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_SHADER_READ_BIT_KHR                                                     = 0x00000020ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_SHADER_WRITE_BIT_KHR                                                    = 0x00000040ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT_KHR                                   = 0x00000080ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR                          = 0x00000100ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR                   = 0x00000200ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR          = 0x00000400ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_TRANSFER_READ_BIT_KHR                                                   = 0x00000800ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR                                          = 0x00001000ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_HOST_READ_BIT_KHR                                                               = 0x00002000ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_HOST_WRITE_BIT_KHR                                                      = 0x00004000ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_MEMORY_READ_BIT_KHR                                                     = 0x00008000ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_MEMORY_WRITE_BIT_KHR                                                    = 0x00010000ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR                                     = 0x100000000ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR                                     = 0x200000000ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR                                    = 0x400000000ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT                                = 0x02000000ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT         = 0x04000000ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT                = 0x08000000ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT                      = 0x00100000ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV                          = 0x00020000ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV                         = 0x00040000ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR   = 0x00800000ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV                          = 0x00800000;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR                     = 0x00200000ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR                    = 0x00400000ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_NV                      = 0x00200000;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_NV                     = 0x00400000;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT                               = 0x01000000ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT               = 0x00080000ULL;
++
 +VK_DEFINE_PLATFORM_TYPE(XlibDisplayPtr,                               void*);
 +VK_DEFINE_PLATFORM_TYPE(XlibWindow,                                   deUintptr);
 +VK_DEFINE_PLATFORM_TYPE(XlibVisualID,                         deUint32);
 +VK_DEFINE_PLATFORM_TYPE(XcbConnectionPtr,                     void*);
 +VK_DEFINE_PLATFORM_TYPE(XcbWindow,                                    deUintptr);
 +VK_DEFINE_PLATFORM_TYPE(XcbVisualid,                          deUint32);
 +VK_DEFINE_PLATFORM_TYPE(WaylandDisplayPtr,                    void*);
 +VK_DEFINE_PLATFORM_TYPE(WaylandSurfacePtr,                    void*);
 +VK_DEFINE_PLATFORM_TYPE(MirConnectionPtr,                     void*);
 +VK_DEFINE_PLATFORM_TYPE(MirSurfacePtr,                                void*);
 +VK_DEFINE_PLATFORM_TYPE(AndroidNativeWindowPtr,               void*);
 +VK_DEFINE_PLATFORM_TYPE(Win32InstanceHandle,          void*);
 +VK_DEFINE_PLATFORM_TYPE(Win32WindowHandle,                    void*);
 +VK_DEFINE_PLATFORM_TYPE(Win32Handle,                          void*);
 +VK_DEFINE_PLATFORM_TYPE(Win32SecurityAttributesPtr,   const void*);
 +VK_DEFINE_PLATFORM_TYPE(AndroidHardwareBufferPtr,     void*);
 +VK_DEFINE_PLATFORM_TYPE(Win32MonitorHandle,                   void*);
 +VK_DEFINE_PLATFORM_TYPE(Win32LPCWSTR,                         const void*);
 +VK_DEFINE_PLATFORM_TYPE(RROutput,                                     void*);
 +VK_DEFINE_PLATFORM_TYPE(zx_handle_t,                          deInt32);
 +VK_DEFINE_PLATFORM_TYPE(GgpFrameToken,                                deInt32);
 +VK_DEFINE_PLATFORM_TYPE(GgpStreamDescriptor,          deInt32);
 +VK_DEFINE_PLATFORM_TYPE(CAMetalLayer,                         void*);
 +#define VK_KHR_SURFACE_SPEC_VERSION 25
 +#define VK_KHR_SWAPCHAIN_SPEC_VERSION 70
 +#define VK_KHR_DISPLAY_SPEC_VERSION 23
 +#define VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION 10
 +#define VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION 1
 +#define VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION 1
- #define VK_KHR_FAULT_HANDLING_SPEC_VERSION 1
++#define VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION 2
 +#define VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION 1
 +#define VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION 1
++#define VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION 1
 +#define VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME "VK_KHR_get_surface_capabilities2"
 +#define VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME "VK_KHR_get_display_properties2"
 +#define VK_KHR_SHADER_CLOCK_SPEC_VERSION 1
 +#define VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION 1
 +#define VK_KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION 1
 +#define VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION 1
- #define VK_KHR_SEU_SAFE_MEMORY_SPEC_VERSION 1
- #define VK_KHR_PIPELINE_IDENTIFIER_SPEC_VERSION 1
 +#define VK_KHR_OBJECT_REFRESH_SPEC_VERSION 1
- #define VK_KHR_SC_PIPELINE_CACHE_FUNCTIONALITY_SPEC_VERSION 1
++#define VK_KHR_SYNCHRONIZATION_2_SPEC_VERSION 1
 +#define VK_KHR_COPY_COMMANDS_2_EXTENSION_NAME "VK_KHR_copy_commands2"
- #define VK_QUEUE_FAMILY_FOREIGN_EXT (~0U-2)
 +#define VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION 1
 +#define VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION 1
 +#define VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION 1
 +#define VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION 1
 +#define VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION 1
 +#define VK_EXT_DISPLAY_CONTROL_SPEC_VERSION 1
 +#define VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION 1
 +#define VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION 1
 +#define VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION 1
 +#define VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME "VK_EXT_swapchain_colorspace"
 +#define VK_EXT_HDR_METADATA_SPEC_VERSION 2
 +#define VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION 1
 +#define VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION 1
- #define VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION 1
++#define VK_QUEUE_FAMILY_FOREIGN_EXT (~2U)
++#define VK_EXT_DEBUG_UTILS_SPEC_VERSION 2
 +#define VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION 1
 +#define VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION 1
 +#define VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION 2
 +#define VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION 1
 +#define VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION 1
 +#define VK_EXT_FILTER_CUBIC_SPEC_VERSION 3
 +#define VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION 2
 +#define VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION 1
++#define VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION 2
 +#define VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION 3
 +#define VK_EXT_PCI_BUS_INFO_SPEC_VERSION 2
 +#define VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION 2
 +#define VK_EXT_SHADER_IMAGE_ATOMIC_INT64_SPEC_VERSION 1
 +#define VK_EXT_MEMORY_BUDGET_SPEC_VERSION 1
++#define VK_EXT_VALIDATION_FEATURES_SPEC_VERSION 4
 +#define VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION 1
 +#define VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION 1
 +#define VK_EXT_HEADLESS_SURFACE_SPEC_VERSION 1
 +#define VK_EXT_LINE_RASTERIZATION_SPEC_VERSION 1
 +#define VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION 1
 +#define VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION 1
 +#define VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION 1
 +#define VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION 1
 +#define VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION 1
 +#define VK_EXT_ROBUSTNESS_2_SPEC_VERSION 1
 +#define VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION 12
++#define VK_EXT_YCBCR_2PLANE_444_FORMATS_SPEC_VERSION 1
 +#define VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION 1
 +#define VK_EXT_4444_FORMATS_SPEC_VERSION 1
++#define VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_SPEC_VERSION 2
++#define VK_EXT_EXTENDED_DYNAMIC_STATE_2_SPEC_VERSION 1
++#define VK_EXT_COLOR_WRITE_ENABLE_SPEC_VERSION 1
index 52a17cf,0000000..2cece62
mode 100644,000000..100644
--- /dev/null
@@@ -1,190 -1,0 +1,211 @@@
- virtual void                          getImageSparseMemoryRequirements                (VkDevice device, VkImage image, deUint32* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements* pSparseMemoryRequirements) const;
- virtual VkResult                      queueBindSparse                                                 (VkQueue queue, deUint32 bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence) const;
 +/* WARNING: This is auto-generated file. Do not modify, since changes will
 + * be lost! Modify the generating script instead.
 + */
 +virtual PFN_vkVoidFunction    getDeviceProcAddr                                               (VkDevice device, const char* pName) const;
 +virtual void                          destroyDevice                                                   (VkDevice device, const VkAllocationCallbacks* pAllocator) const;
 +virtual void                          getDeviceQueue                                                  (VkDevice device, deUint32 queueFamilyIndex, deUint32 queueIndex, VkQueue* pQueue) const;
 +virtual VkResult                      queueSubmit                                                             (VkQueue queue, deUint32 submitCount, const VkSubmitInfo* pSubmits, VkFence fence) const;
 +virtual VkResult                      queueWaitIdle                                                   (VkQueue queue) const;
 +virtual VkResult                      deviceWaitIdle                                                  (VkDevice device) const;
 +virtual VkResult                      allocateMemory                                                  (VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory) const;
 +virtual VkResult                      mapMemory                                                               (VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData) const;
 +virtual void                          unmapMemory                                                             (VkDevice device, VkDeviceMemory memory) const;
 +virtual VkResult                      flushMappedMemoryRanges                                 (VkDevice device, deUint32 memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges) const;
 +virtual VkResult                      invalidateMappedMemoryRanges                    (VkDevice device, deUint32 memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges) const;
 +virtual void                          getDeviceMemoryCommitment                               (VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes) const;
 +virtual VkResult                      bindBufferMemory                                                (VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset) const;
 +virtual VkResult                      bindImageMemory                                                 (VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset) const;
 +virtual void                          getBufferMemoryRequirements                             (VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements) const;
 +virtual void                          getImageMemoryRequirements                              (VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements) const;
- virtual void                          getCommandPoolMemoryConsumption                 (VkDevice device, VkCommandPool commandPool, VkCommandBuffer commandBuffer, VkCommandPoolMemoryConsumption* pConsumption) const;
- virtual VkResult                      getFaultData                                                    (VkDevice device, VkFaultQueryBehavior faultQueryBehavior, VkBool32* pUnrecordedFaults, deUint32* pFaultCount, VkFaultData* pFaults) const;
 +virtual VkResult                      createFence                                                             (VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence) const;
 +virtual void                          destroyFence                                                    (VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator) const;
 +virtual VkResult                      resetFences                                                             (VkDevice device, deUint32 fenceCount, const VkFence* pFences) const;
 +virtual VkResult                      getFenceStatus                                                  (VkDevice device, VkFence fence) const;
 +virtual VkResult                      waitForFences                                                   (VkDevice device, deUint32 fenceCount, const VkFence* pFences, VkBool32 waitAll, deUint64 timeout) const;
 +virtual VkResult                      createSemaphore                                                 (VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore) const;
 +virtual void                          destroySemaphore                                                (VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator) const;
 +virtual VkResult                      createEvent                                                             (VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkEvent* pEvent) const;
 +virtual void                          destroyEvent                                                    (VkDevice device, VkEvent event, const VkAllocationCallbacks* pAllocator) const;
 +virtual VkResult                      getEventStatus                                                  (VkDevice device, VkEvent event) const;
 +virtual VkResult                      setEvent                                                                (VkDevice device, VkEvent event) const;
 +virtual VkResult                      resetEvent                                                              (VkDevice device, VkEvent event) const;
 +virtual VkResult                      createQueryPool                                                 (VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkQueryPool* pQueryPool) const;
 +virtual VkResult                      getQueryPoolResults                                             (VkDevice device, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount, deUintptr dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags) const;
 +virtual VkResult                      createBuffer                                                    (VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer) const;
 +virtual void                          destroyBuffer                                                   (VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator) const;
 +virtual VkResult                      createBufferView                                                (VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView) const;
 +virtual void                          destroyBufferView                                               (VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* pAllocator) const;
 +virtual VkResult                      createImage                                                             (VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImage* pImage) const;
 +virtual void                          destroyImage                                                    (VkDevice device, VkImage image, const VkAllocationCallbacks* pAllocator) const;
 +virtual void                          getImageSubresourceLayout                               (VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout) const;
 +virtual VkResult                      createImageView                                                 (VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImageView* pView) const;
 +virtual void                          destroyImageView                                                (VkDevice device, VkImageView imageView, const VkAllocationCallbacks* pAllocator) const;
 +virtual VkResult                      createPipelineCache                                             (VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache) const;
 +virtual void                          destroyPipelineCache                                    (VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator) const;
 +virtual VkResult                      createGraphicsPipelines                                 (VkDevice device, VkPipelineCache pipelineCache, deUint32 createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines) const;
 +virtual VkResult                      createComputePipelines                                  (VkDevice device, VkPipelineCache pipelineCache, deUint32 createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines) const;
 +virtual void                          destroyPipeline                                                 (VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator) const;
 +virtual VkResult                      createPipelineLayout                                    (VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout) const;
 +virtual void                          destroyPipelineLayout                                   (VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* pAllocator) const;
 +virtual VkResult                      createSampler                                                   (VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler) const;
 +virtual void                          destroySampler                                                  (VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator) const;
 +virtual VkResult                      createDescriptorSetLayout                               (VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout) const;
 +virtual void                          destroyDescriptorSetLayout                              (VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* pAllocator) const;
 +virtual VkResult                      createDescriptorPool                                    (VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool) const;
 +virtual VkResult                      resetDescriptorPool                                             (VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags) const;
 +virtual VkResult                      allocateDescriptorSets                                  (VkDevice device, const VkDescriptorSetAllocateInfo* pAllocateInfo, VkDescriptorSet* pDescriptorSets) const;
 +virtual VkResult                      freeDescriptorSets                                              (VkDevice device, VkDescriptorPool descriptorPool, deUint32 descriptorSetCount, const VkDescriptorSet* pDescriptorSets) const;
 +virtual void                          updateDescriptorSets                                    (VkDevice device, deUint32 descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites, deUint32 descriptorCopyCount, const VkCopyDescriptorSet* pDescriptorCopies) const;
 +virtual VkResult                      createFramebuffer                                               (VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFramebuffer* pFramebuffer) const;
 +virtual void                          destroyFramebuffer                                              (VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator) const;
 +virtual VkResult                      createRenderPass                                                (VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass) const;
 +virtual void                          destroyRenderPass                                               (VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator) const;
 +virtual void                          getRenderAreaGranularity                                (VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity) const;
 +virtual VkResult                      createCommandPool                                               (VkDevice device, const VkCommandPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCommandPool* pCommandPool) const;
 +virtual VkResult                      resetCommandPool                                                (VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags) const;
 +virtual VkResult                      allocateCommandBuffers                                  (VkDevice device, const VkCommandBufferAllocateInfo* pAllocateInfo, VkCommandBuffer* pCommandBuffers) const;
 +virtual void                          freeCommandBuffers                                              (VkDevice device, VkCommandPool commandPool, deUint32 commandBufferCount, const VkCommandBuffer* pCommandBuffers) const;
 +virtual VkResult                      beginCommandBuffer                                              (VkCommandBuffer commandBuffer, const VkCommandBufferBeginInfo* pBeginInfo) const;
 +virtual VkResult                      endCommandBuffer                                                (VkCommandBuffer commandBuffer) const;
 +virtual VkResult                      resetCommandBuffer                                              (VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags) const;
 +virtual void                          cmdBindPipeline                                                 (VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline) const;
 +virtual void                          cmdSetViewport                                                  (VkCommandBuffer commandBuffer, deUint32 firstViewport, deUint32 viewportCount, const VkViewport* pViewports) const;
 +virtual void                          cmdSetScissor                                                   (VkCommandBuffer commandBuffer, deUint32 firstScissor, deUint32 scissorCount, const VkRect2D* pScissors) const;
 +virtual void                          cmdSetLineWidth                                                 (VkCommandBuffer commandBuffer, float lineWidth) const;
 +virtual void                          cmdSetDepthBias                                                 (VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor) const;
 +virtual void                          cmdSetBlendConstants                                    (VkCommandBuffer commandBuffer, const float blendConstants[4]) const;
 +virtual void                          cmdSetDepthBounds                                               (VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds) const;
 +virtual void                          cmdSetStencilCompareMask                                (VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, deUint32 compareMask) const;
 +virtual void                          cmdSetStencilWriteMask                                  (VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, deUint32 writeMask) const;
 +virtual void                          cmdSetStencilReference                                  (VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, deUint32 reference) const;
 +virtual void                          cmdBindDescriptorSets                                   (VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, deUint32 firstSet, deUint32 descriptorSetCount, const VkDescriptorSet* pDescriptorSets, deUint32 dynamicOffsetCount, const deUint32* pDynamicOffsets) const;
 +virtual void                          cmdBindIndexBuffer                                              (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType) const;
 +virtual void                          cmdBindVertexBuffers                                    (VkCommandBuffer commandBuffer, deUint32 firstBinding, deUint32 bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets) const;
 +virtual void                          cmdDraw                                                                 (VkCommandBuffer commandBuffer, deUint32 vertexCount, deUint32 instanceCount, deUint32 firstVertex, deUint32 firstInstance) const;
 +virtual void                          cmdDrawIndexed                                                  (VkCommandBuffer commandBuffer, deUint32 indexCount, deUint32 instanceCount, deUint32 firstIndex, deInt32 vertexOffset, deUint32 firstInstance) const;
 +virtual void                          cmdDrawIndirect                                                 (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, deUint32 drawCount, deUint32 stride) const;
 +virtual void                          cmdDrawIndexedIndirect                                  (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, deUint32 drawCount, deUint32 stride) const;
 +virtual void                          cmdDispatch                                                             (VkCommandBuffer commandBuffer, deUint32 groupCountX, deUint32 groupCountY, deUint32 groupCountZ) const;
 +virtual void                          cmdDispatchIndirect                                             (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset) const;
 +virtual void                          cmdCopyBuffer                                                   (VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, deUint32 regionCount, const VkBufferCopy* pRegions) const;
 +virtual void                          cmdCopyImage                                                    (VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkImageCopy* pRegions) const;
 +virtual void                          cmdBlitImage                                                    (VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkImageBlit* pRegions, VkFilter filter) const;
 +virtual void                          cmdCopyBufferToImage                                    (VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkBufferImageCopy* pRegions) const;
 +virtual void                          cmdCopyImageToBuffer                                    (VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, deUint32 regionCount, const VkBufferImageCopy* pRegions) const;
 +virtual void                          cmdUpdateBuffer                                                 (VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const void* pData) const;
 +virtual void                          cmdFillBuffer                                                   (VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, deUint32 data) const;
 +virtual void                          cmdClearColorImage                                              (VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, deUint32 rangeCount, const VkImageSubresourceRange* pRanges) const;
 +virtual void                          cmdClearDepthStencilImage                               (VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, deUint32 rangeCount, const VkImageSubresourceRange* pRanges) const;
 +virtual void                          cmdClearAttachments                                             (VkCommandBuffer commandBuffer, deUint32 attachmentCount, const VkClearAttachment* pAttachments, deUint32 rectCount, const VkClearRect* pRects) const;
 +virtual void                          cmdResolveImage                                                 (VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkImageResolve* pRegions) const;
 +virtual void                          cmdSetEvent                                                             (VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask) const;
 +virtual void                          cmdResetEvent                                                   (VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask) const;
 +virtual void                          cmdWaitEvents                                                   (VkCommandBuffer commandBuffer, deUint32 eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, deUint32 memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, deUint32 bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, deUint32 imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers) const;
 +virtual void                          cmdPipelineBarrier                                              (VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, deUint32 memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, deUint32 bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, deUint32 imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers) const;
 +virtual void                          cmdBeginQuery                                                   (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query, VkQueryControlFlags flags) const;
 +virtual void                          cmdEndQuery                                                             (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query) const;
 +virtual void                          cmdResetQueryPool                                               (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount) const;
 +virtual void                          cmdWriteTimestamp                                               (VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, deUint32 query) const;
 +virtual void                          cmdCopyQueryPoolResults                                 (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags) const;
 +virtual void                          cmdPushConstants                                                (VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, deUint32 offset, deUint32 size, const void* pValues) const;
 +virtual void                          cmdBeginRenderPass                                              (VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents) const;
 +virtual void                          cmdNextSubpass                                                  (VkCommandBuffer commandBuffer, VkSubpassContents contents) const;
 +virtual void                          cmdEndRenderPass                                                (VkCommandBuffer commandBuffer) const;
 +virtual void                          cmdExecuteCommands                                              (VkCommandBuffer commandBuffer, deUint32 commandBufferCount, const VkCommandBuffer* pCommandBuffers) const;
- virtual void                          getImageSparseMemoryRequirements2               (VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, deUint32* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) const;
 +virtual VkResult                      bindBufferMemory2                                               (VkDevice device, deUint32 bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos) const;
 +virtual VkResult                      bindImageMemory2                                                (VkDevice device, deUint32 bindInfoCount, const VkBindImageMemoryInfo* pBindInfos) const;
 +virtual void                          getDeviceGroupPeerMemoryFeatures                (VkDevice device, deUint32 heapIndex, deUint32 localDeviceIndex, deUint32 remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures) const;
 +virtual void                          cmdSetDeviceMask                                                (VkCommandBuffer commandBuffer, deUint32 deviceMask) const;
 +virtual void                          cmdDispatchBase                                                 (VkCommandBuffer commandBuffer, deUint32 baseGroupX, deUint32 baseGroupY, deUint32 baseGroupZ, deUint32 groupCountX, deUint32 groupCountY, deUint32 groupCountZ) const;
 +virtual void                          getImageMemoryRequirements2                             (VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements) const;
 +virtual void                          getBufferMemoryRequirements2                    (VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements) const;
- virtual VkResult                      getFaultDataKHR                                                 (VkDevice device, VkFaultQueryBehavior faultQueryBehavior, VkBool32* pUnrecordedFaults, deUint32* pFaultCount, VkFaultData* pFaults) const;
 +virtual void                          getDeviceQueue2                                                 (VkDevice device, const VkDeviceQueueInfo2* pQueueInfo, VkQueue* pQueue) const;
 +virtual VkResult                      createSamplerYcbcrConversion                    (VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion) const;
 +virtual void                          destroySamplerYcbcrConversion                   (VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator) 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 void                          getCommandPoolMemoryConsumption                 (VkDevice device, VkCommandPool commandPool, VkCommandBuffer commandBuffer, VkCommandPoolMemoryConsumption* pConsumption) const;
++virtual VkResult                      getFaultData                                                    (VkDevice device, VkFaultQueryBehavior faultQueryBehavior, VkBool32* pUnrecordedFaults, deUint32* pFaultCount, VkFaultData* pFaults) const;
 +virtual VkResult                      createSwapchainKHR                                              (VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain) const;
 +virtual VkResult                      getSwapchainImagesKHR                                   (VkDevice device, VkSwapchainKHR swapchain, deUint32* pSwapchainImageCount, VkImage* pSwapchainImages) const;
 +virtual VkResult                      acquireNextImageKHR                                             (VkDevice device, VkSwapchainKHR swapchain, deUint64 timeout, VkSemaphore semaphore, VkFence fence, deUint32* pImageIndex) const;
 +virtual VkResult                      queuePresentKHR                                                 (VkQueue queue, const VkPresentInfoKHR* pPresentInfo) const;
 +virtual VkResult                      getDeviceGroupPresentCapabilitiesKHR    (VkDevice device, VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities) const;
 +virtual VkResult                      getDeviceGroupSurfacePresentModesKHR    (VkDevice device, VkSurfaceKHR surface, VkDeviceGroupPresentModeFlagsKHR* pModes) const;
 +virtual VkResult                      acquireNextImage2KHR                                    (VkDevice device, const VkAcquireNextImageInfoKHR* pAcquireInfo, deUint32* pImageIndex) const;
 +virtual VkResult                      createSharedSwapchainsKHR                               (VkDevice device, deUint32 swapchainCount, const VkSwapchainCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchains) const;
 +virtual VkResult                      getMemoryFdKHR                                                  (VkDevice device, const VkMemoryGetFdInfoKHR* pGetFdInfo, int* pFd) const;
 +virtual VkResult                      getMemoryFdPropertiesKHR                                (VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, int fd, VkMemoryFdPropertiesKHR* pMemoryFdProperties) const;
 +virtual VkResult                      importSemaphoreFdKHR                                    (VkDevice device, const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo) const;
 +virtual VkResult                      getSemaphoreFdKHR                                               (VkDevice device, const VkSemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd) 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                          cmdSetFragmentShadingRateKHR                    (VkCommandBuffer commandBuffer, const VkExtent2D* pFragmentSize, const VkFragmentShadingRateCombinerOpKHR combinerOps[2]) const;
 +virtual void                          cmdRefreshObjectsKHR                                    (VkCommandBuffer commandBuffer, const VkRefreshObjectListKHR* pRefreshObjects) const;
++virtual void                          cmdSetEvent2KHR                                                 (VkCommandBuffer commandBuffer, VkEvent event, const VkDependencyInfoKHR* pDependencyInfo) const;
++virtual void                          cmdResetEvent2KHR                                               (VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags2KHR stageMask) const;
++virtual void                          cmdWaitEvents2KHR                                               (VkCommandBuffer commandBuffer, deUint32 eventCount, const VkEvent* pEvents, const VkDependencyInfoKHR* pDependencyInfos) const;
++virtual void                          cmdPipelineBarrier2KHR                                  (VkCommandBuffer commandBuffer, const VkDependencyInfoKHR* pDependencyInfo) const;
++virtual void                          cmdWriteTimestamp2KHR                                   (VkCommandBuffer commandBuffer, VkPipelineStageFlags2KHR stage, VkQueryPool queryPool, deUint32 query) const;
++virtual VkResult                      queueSubmit2KHR                                                 (VkQueue queue, deUint32 submitCount, const VkSubmitInfo2KHR* pSubmits, VkFence fence) const;
++virtual void                          cmdWriteBufferMarker2AMD                                (VkCommandBuffer commandBuffer, VkPipelineStageFlags2KHR stage, VkBuffer dstBuffer, VkDeviceSize dstOffset, deUint32 marker) const;
++virtual void                          getQueueCheckpointData2NV                               (VkQueue queue, deUint32* pCheckpointDataCount, VkCheckpointData2NV* pCheckpointData) const;
 +virtual void                          cmdCopyBuffer2KHR                                               (VkCommandBuffer commandBuffer, const VkCopyBufferInfo2KHR* pCopyBufferInfo) const;
 +virtual void                          cmdCopyImage2KHR                                                (VkCommandBuffer commandBuffer, const VkCopyImageInfo2KHR* pCopyImageInfo) const;
 +virtual void                          cmdCopyBufferToImage2KHR                                (VkCommandBuffer commandBuffer, const VkCopyBufferToImageInfo2KHR* pCopyBufferToImageInfo) const;
 +virtual void                          cmdCopyImageToBuffer2KHR                                (VkCommandBuffer commandBuffer, const VkCopyImageToBufferInfo2KHR* pCopyImageToBufferInfo) const;
 +virtual void                          cmdBlitImage2KHR                                                (VkCommandBuffer commandBuffer, const VkBlitImageInfo2KHR* pBlitImageInfo) const;
 +virtual void                          cmdResolveImage2KHR                                             (VkCommandBuffer commandBuffer, const VkResolveImageInfo2KHR* pResolveImageInfo) const;
 +virtual VkResult                      displayPowerControlEXT                                  (VkDevice device, VkDisplayKHR display, const VkDisplayPowerInfoEXT* pDisplayPowerInfo) const;
 +virtual VkResult                      registerDeviceEventEXT                                  (VkDevice device, const VkDeviceEventInfoEXT* pDeviceEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence) const;
 +virtual VkResult                      registerDisplayEventEXT                                 (VkDevice device, VkDisplayKHR display, const VkDisplayEventInfoEXT* pDisplayEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence) const;
 +virtual VkResult                      getSwapchainCounterEXT                                  (VkDevice device, VkSwapchainKHR swapchain, VkSurfaceCounterFlagBitsEXT counter, deUint64* pCounterValue) const;
 +virtual void                          cmdSetDiscardRectangleEXT                               (VkCommandBuffer commandBuffer, deUint32 firstDiscardRectangle, deUint32 discardRectangleCount, const VkRect2D* pDiscardRectangles) const;
 +virtual void                          setHdrMetadataEXT                                               (VkDevice device, deUint32 swapchainCount, const VkSwapchainKHR* pSwapchains, const VkHdrMetadataEXT* pMetadata) const;
++virtual VkResult                      setDebugUtilsObjectNameEXT                              (VkDevice device, const VkDebugUtilsObjectNameInfoEXT* pNameInfo) const;
++virtual VkResult                      setDebugUtilsObjectTagEXT                               (VkDevice device, const VkDebugUtilsObjectTagInfoEXT* pTagInfo) const;
++virtual void                          queueBeginDebugUtilsLabelEXT                    (VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo) const;
++virtual void                          queueEndDebugUtilsLabelEXT                              (VkQueue queue) const;
++virtual void                          queueInsertDebugUtilsLabelEXT                   (VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo) const;
++virtual void                          cmdBeginDebugUtilsLabelEXT                              (VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo) const;
++virtual void                          cmdEndDebugUtilsLabelEXT                                (VkCommandBuffer commandBuffer) const;
++virtual void                          cmdInsertDebugUtilsLabelEXT                             (VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo) const;
 +virtual void                          cmdSetSampleLocationsEXT                                (VkCommandBuffer commandBuffer, const VkSampleLocationsInfoEXT* pSampleLocationsInfo) const;
 +virtual VkResult                      getImageDrmFormatModifierPropertiesEXT  (VkDevice device, VkImage image, VkImageDrmFormatModifierPropertiesEXT* pProperties) const;
 +virtual VkResult                      getMemoryHostPointerPropertiesEXT               (VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, const void* pHostPointer, VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties) const;
 +virtual VkResult                      getCalibratedTimestampsEXT                              (VkDevice device, deUint32 timestampCount, const VkCalibratedTimestampInfoEXT* pTimestampInfos, deUint64* pTimestamps, deUint64* pMaxDeviation) const;
 +virtual void                          cmdSetLineStippleEXT                                    (VkCommandBuffer commandBuffer, deUint32 lineStippleFactor, deUint16 lineStipplePattern) const;
 +virtual void                          cmdSetCullModeEXT                                               (VkCommandBuffer commandBuffer, VkCullModeFlags cullMode) const;
 +virtual void                          cmdSetFrontFaceEXT                                              (VkCommandBuffer commandBuffer, VkFrontFace frontFace) const;
 +virtual void                          cmdSetPrimitiveTopologyEXT                              (VkCommandBuffer commandBuffer, VkPrimitiveTopology primitiveTopology) const;
 +virtual void                          cmdSetViewportWithCountEXT                              (VkCommandBuffer commandBuffer, deUint32 viewportCount, const VkViewport* pViewports) const;
 +virtual void                          cmdSetScissorWithCountEXT                               (VkCommandBuffer commandBuffer, deUint32 scissorCount, const VkRect2D* pScissors) const;
 +virtual void                          cmdBindVertexBuffers2EXT                                (VkCommandBuffer commandBuffer, deUint32 firstBinding, deUint32 bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes, const VkDeviceSize* pStrides) const;
 +virtual void                          cmdSetDepthTestEnableEXT                                (VkCommandBuffer commandBuffer, VkBool32 depthTestEnable) const;
 +virtual void                          cmdSetDepthWriteEnableEXT                               (VkCommandBuffer commandBuffer, VkBool32 depthWriteEnable) const;
 +virtual void                          cmdSetDepthCompareOpEXT                                 (VkCommandBuffer commandBuffer, VkCompareOp depthCompareOp) const;
 +virtual void                          cmdSetDepthBoundsTestEnableEXT                  (VkCommandBuffer commandBuffer, VkBool32 depthBoundsTestEnable) const;
 +virtual void                          cmdSetStencilTestEnableEXT                              (VkCommandBuffer commandBuffer, VkBool32 stencilTestEnable) const;
 +virtual void                          cmdSetStencilOpEXT                                              (VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, VkStencilOp failOp, VkStencilOp passOp, VkStencilOp depthFailOp, VkCompareOp compareOp) const;
++virtual void                          cmdSetVertexInputEXT                                    (VkCommandBuffer commandBuffer, deUint32 vertexBindingDescriptionCount, const VkVertexInputBindingDescription2EXT* pVertexBindingDescriptions, deUint32 vertexAttributeDescriptionCount, const VkVertexInputAttributeDescription2EXT* pVertexAttributeDescriptions) const;
++virtual void                          cmdSetPatchControlPointsEXT                             (VkCommandBuffer commandBuffer, deUint32 patchControlPoints) const;
++virtual void                          cmdSetRasterizerDiscardEnableEXT                (VkCommandBuffer commandBuffer, VkBool32 rasterizerDiscardEnable) const;
++virtual void                          cmdSetDepthBiasEnableEXT                                (VkCommandBuffer commandBuffer, VkBool32 depthBiasEnable) const;
++virtual void                          cmdSetLogicOpEXT                                                (VkCommandBuffer commandBuffer, VkLogicOp logicOp) const;
++virtual void                          cmdSetPrimitiveRestartEnableEXT                 (VkCommandBuffer commandBuffer, VkBool32 primitiveRestartEnable) const;
++virtual void                          cmdSetColorWriteEnableEXT                               (VkCommandBuffer commandBuffer, deUint32 attachmentCount, const VkBool32* pColorWriteEnables) const;
index aa82737,0000000..225f7b6
mode 100644,000000..100644
--- /dev/null
@@@ -1,52 -1,0 +1,55 @@@
- virtual void          destroyInstance                                                                 (VkInstance instance, const VkAllocationCallbacks* pAllocator) const;
- virtual VkResult      enumeratePhysicalDevices                                                (VkInstance instance, deUint32* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices) const;
- virtual void          getPhysicalDeviceFeatures                                               (VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures) const;
- virtual void          getPhysicalDeviceFormatProperties                               (VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties) const;
- virtual VkResult      getPhysicalDeviceImageFormatProperties                  (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties) const;
- virtual void          getPhysicalDeviceProperties                                             (VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties) const;
- virtual void          getPhysicalDeviceQueueFamilyProperties                  (VkPhysicalDevice physicalDevice, deUint32* pQueueFamilyPropertyCount, VkQueueFamilyProperties* pQueueFamilyProperties) const;
- virtual void          getPhysicalDeviceMemoryProperties                               (VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties) const;
- virtual VkResult      createDevice                                                                    (VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice) const;
- virtual VkResult      enumerateDeviceExtensionProperties                              (VkPhysicalDevice physicalDevice, const char* pLayerName, deUint32* pPropertyCount, VkExtensionProperties* pProperties) const;
- virtual VkResult      enumerateDeviceLayerProperties                                  (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkLayerProperties* pProperties) const;
- virtual void          getPhysicalDeviceSparseImageFormatProperties    (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, deUint32* pPropertyCount, VkSparseImageFormatProperties* pProperties) const;
- virtual VkResult      enumeratePhysicalDeviceGroups                                   (VkInstance instance, deUint32* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties) const;
- virtual void          getPhysicalDeviceFeatures2                                              (VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures) const;
- virtual void          getPhysicalDeviceProperties2                                    (VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties) const;
- virtual void          getPhysicalDeviceFormatProperties2                              (VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties) const;
- virtual VkResult      getPhysicalDeviceImageFormatProperties2                 (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties) const;
- virtual void          getPhysicalDeviceQueueFamilyProperties2                 (VkPhysicalDevice physicalDevice, deUint32* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties) const;
- virtual void          getPhysicalDeviceMemoryProperties2                              (VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties) const;
- virtual void          getPhysicalDeviceSparseImageFormatProperties2   (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, deUint32* pPropertyCount, VkSparseImageFormatProperties2* pProperties) const;
- virtual void          getPhysicalDeviceExternalBufferProperties               (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties) const;
- virtual void          getPhysicalDeviceExternalFenceProperties                (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties) const;
- virtual void          getPhysicalDeviceExternalSemaphoreProperties    (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties) const;
- virtual void          destroySurfaceKHR                                                               (VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks* pAllocator) const;
- virtual VkResult      getPhysicalDeviceSurfaceSupportKHR                              (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported) const;
- virtual VkResult      getPhysicalDeviceSurfaceCapabilitiesKHR                 (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities) const;
- virtual VkResult      getPhysicalDeviceSurfaceFormatsKHR                              (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats) const;
- virtual VkResult      getPhysicalDeviceSurfacePresentModesKHR                 (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pPresentModeCount, VkPresentModeKHR* pPresentModes) const;
- virtual VkResult      getPhysicalDevicePresentRectanglesKHR                   (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pRectCount, VkRect2D* pRects) const;
- virtual VkResult      getPhysicalDeviceDisplayPropertiesKHR                   (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPropertiesKHR* pProperties) const;
- virtual VkResult      getPhysicalDeviceDisplayPlanePropertiesKHR              (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties) const;
- virtual VkResult      getDisplayPlaneSupportedDisplaysKHR                             (VkPhysicalDevice physicalDevice, deUint32 planeIndex, deUint32* pDisplayCount, VkDisplayKHR* pDisplays) const;
- virtual VkResult      getDisplayModePropertiesKHR                                             (VkPhysicalDevice physicalDevice, VkDisplayKHR display, deUint32* pPropertyCount, VkDisplayModePropertiesKHR* pProperties) const;
- virtual VkResult      createDisplayModeKHR                                                    (VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDisplayModeKHR* pMode) const;
- virtual VkResult      getDisplayPlaneCapabilitiesKHR                                  (VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, deUint32 planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities) const;
- virtual VkResult      createDisplayPlaneSurfaceKHR                                    (VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
- virtual VkResult      getPhysicalDeviceSurfaceCapabilities2KHR                (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkSurfaceCapabilities2KHR* pSurfaceCapabilities) const;
- virtual VkResult      getPhysicalDeviceSurfaceFormats2KHR                             (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, deUint32* pSurfaceFormatCount, VkSurfaceFormat2KHR* pSurfaceFormats) const;
- virtual VkResult      getPhysicalDeviceDisplayProperties2KHR                  (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayProperties2KHR* pProperties) const;
- virtual VkResult      getPhysicalDeviceDisplayPlaneProperties2KHR             (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPlaneProperties2KHR* pProperties) const;
- virtual VkResult      getDisplayModeProperties2KHR                                    (VkPhysicalDevice physicalDevice, VkDisplayKHR display, deUint32* pPropertyCount, VkDisplayModeProperties2KHR* pProperties) const;
- virtual VkResult      getDisplayPlaneCapabilities2KHR                                 (VkPhysicalDevice physicalDevice, const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo, VkDisplayPlaneCapabilities2KHR* pCapabilities) const;
- virtual VkResult      getPhysicalDeviceFragmentShadingRatesKHR                (VkPhysicalDevice physicalDevice, deUint32* pFragmentShadingRateCount, VkPhysicalDeviceFragmentShadingRateKHR* pFragmentShadingRates) const;
- virtual VkResult      getPhysicalDeviceRefreshableObjectTypesKHR              (VkPhysicalDevice physicalDevice, deUint32* pRefreshableObjectCount, VkObjectType* pRefreshableObjectTypes) const;
- virtual VkResult      releaseDisplayEXT                                                               (VkPhysicalDevice physicalDevice, VkDisplayKHR display) const;
- virtual VkResult      getPhysicalDeviceSurfaceCapabilities2EXT                (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilities2EXT* pSurfaceCapabilities) const;
- virtual void          getPhysicalDeviceMultisamplePropertiesEXT               (VkPhysicalDevice physicalDevice, VkSampleCountFlagBits samples, VkMultisamplePropertiesEXT* pMultisampleProperties) const;
- virtual VkResult      getPhysicalDeviceCalibrateableTimeDomainsEXT    (VkPhysicalDevice physicalDevice, deUint32* pTimeDomainCount, VkTimeDomainEXT* pTimeDomains) const;
- virtual VkResult      createHeadlessSurfaceEXT                                                (VkInstance instance, const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
 +/* WARNING: This is auto-generated file. Do not modify, since changes will
 + * be lost! Modify the generating script instead.
 + */
++virtual void          destroyInstance                                                                                                 (VkInstance instance, const VkAllocationCallbacks* pAllocator) const;
++virtual VkResult      enumeratePhysicalDevices                                                                                (VkInstance instance, deUint32* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices) const;
++virtual void          getPhysicalDeviceFeatures                                                                               (VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures) const;
++virtual void          getPhysicalDeviceFormatProperties                                                               (VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties) const;
++virtual VkResult      getPhysicalDeviceImageFormatProperties                                                  (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties) const;
++virtual void          getPhysicalDeviceProperties                                                                             (VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties) const;
++virtual void          getPhysicalDeviceQueueFamilyProperties                                                  (VkPhysicalDevice physicalDevice, deUint32* pQueueFamilyPropertyCount, VkQueueFamilyProperties* pQueueFamilyProperties) const;
++virtual void          getPhysicalDeviceMemoryProperties                                                               (VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties) const;
++virtual VkResult      createDevice                                                                                                    (VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice) const;
++virtual VkResult      enumerateDeviceExtensionProperties                                                              (VkPhysicalDevice physicalDevice, const char* pLayerName, deUint32* pPropertyCount, VkExtensionProperties* pProperties) const;
++virtual VkResult      enumerateDeviceLayerProperties                                                                  (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkLayerProperties* pProperties) const;
++virtual VkResult      enumeratePhysicalDeviceGroups                                                                   (VkInstance instance, deUint32* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties) const;
++virtual void          getPhysicalDeviceFeatures2                                                                              (VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures) const;
++virtual void          getPhysicalDeviceProperties2                                                                    (VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties) const;
++virtual void          getPhysicalDeviceFormatProperties2                                                              (VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties) const;
++virtual VkResult      getPhysicalDeviceImageFormatProperties2                                                 (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties) const;
++virtual void          getPhysicalDeviceQueueFamilyProperties2                                                 (VkPhysicalDevice physicalDevice, deUint32* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties) const;
++virtual void          getPhysicalDeviceMemoryProperties2                                                              (VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties) const;
++virtual void          getPhysicalDeviceExternalBufferProperties                                               (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties) const;
++virtual void          getPhysicalDeviceExternalFenceProperties                                                (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties) const;
++virtual void          getPhysicalDeviceExternalSemaphoreProperties                                    (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties) const;
++virtual void          destroySurfaceKHR                                                                                               (VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks* pAllocator) const;
++virtual VkResult      getPhysicalDeviceSurfaceSupportKHR                                                              (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported) const;
++virtual VkResult      getPhysicalDeviceSurfaceCapabilitiesKHR                                                 (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities) const;
++virtual VkResult      getPhysicalDeviceSurfaceFormatsKHR                                                              (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats) const;
++virtual VkResult      getPhysicalDeviceSurfacePresentModesKHR                                                 (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pPresentModeCount, VkPresentModeKHR* pPresentModes) const;
++virtual VkResult      getPhysicalDevicePresentRectanglesKHR                                                   (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pRectCount, VkRect2D* pRects) const;
++virtual VkResult      getPhysicalDeviceDisplayPropertiesKHR                                                   (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPropertiesKHR* pProperties) const;
++virtual VkResult      getPhysicalDeviceDisplayPlanePropertiesKHR                                              (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties) const;
++virtual VkResult      getDisplayPlaneSupportedDisplaysKHR                                                             (VkPhysicalDevice physicalDevice, deUint32 planeIndex, deUint32* pDisplayCount, VkDisplayKHR* pDisplays) const;
++virtual VkResult      getDisplayModePropertiesKHR                                                                             (VkPhysicalDevice physicalDevice, VkDisplayKHR display, deUint32* pPropertyCount, VkDisplayModePropertiesKHR* pProperties) const;
++virtual VkResult      createDisplayModeKHR                                                                                    (VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDisplayModeKHR* pMode) const;
++virtual VkResult      getDisplayPlaneCapabilitiesKHR                                                                  (VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, deUint32 planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities) const;
++virtual VkResult      createDisplayPlaneSurfaceKHR                                                                    (VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
++virtual VkResult      enumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR   (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, deUint32* pCounterCount, VkPerformanceCounterKHR* pCounters, VkPerformanceCounterDescriptionKHR* pCounterDescriptions) const;
++virtual void          getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR                   (VkPhysicalDevice physicalDevice, const VkQueryPoolPerformanceCreateInfoKHR* pPerformanceQueryCreateInfo, deUint32* pNumPasses) const;
++virtual VkResult      getPhysicalDeviceSurfaceCapabilities2KHR                                                (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkSurfaceCapabilities2KHR* pSurfaceCapabilities) const;
++virtual VkResult      getPhysicalDeviceSurfaceFormats2KHR                                                             (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, deUint32* pSurfaceFormatCount, VkSurfaceFormat2KHR* pSurfaceFormats) const;
++virtual VkResult      getPhysicalDeviceDisplayProperties2KHR                                                  (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayProperties2KHR* pProperties) const;
++virtual VkResult      getPhysicalDeviceDisplayPlaneProperties2KHR                                             (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPlaneProperties2KHR* pProperties) const;
++virtual VkResult      getDisplayModeProperties2KHR                                                                    (VkPhysicalDevice physicalDevice, VkDisplayKHR display, deUint32* pPropertyCount, VkDisplayModeProperties2KHR* pProperties) const;
++virtual VkResult      getDisplayPlaneCapabilities2KHR                                                                 (VkPhysicalDevice physicalDevice, const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo, VkDisplayPlaneCapabilities2KHR* pCapabilities) const;
++virtual VkResult      getPhysicalDeviceFragmentShadingRatesKHR                                                (VkPhysicalDevice physicalDevice, deUint32* pFragmentShadingRateCount, VkPhysicalDeviceFragmentShadingRateKHR* pFragmentShadingRates) const;
++virtual VkResult      getPhysicalDeviceRefreshableObjectTypesKHR                                              (VkPhysicalDevice physicalDevice, deUint32* pRefreshableObjectCount, VkObjectType* pRefreshableObjectTypes) const;
++virtual VkResult      releaseDisplayEXT                                                                                               (VkPhysicalDevice physicalDevice, VkDisplayKHR display) const;
++virtual VkResult      getPhysicalDeviceSurfaceCapabilities2EXT                                                (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilities2EXT* pSurfaceCapabilities) const;
++virtual VkResult      createDebugUtilsMessengerEXT                                                                    (VkInstance instance, const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugUtilsMessengerEXT* pMessenger) const;
++virtual void          destroyDebugUtilsMessengerEXT                                                                   (VkInstance instance, VkDebugUtilsMessengerEXT messenger, const VkAllocationCallbacks* pAllocator) const;
++virtual void          submitDebugUtilsMessageEXT                                                                              (VkInstance instance, VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageTypes, const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData) const;
++virtual void          getPhysicalDeviceMultisamplePropertiesEXT                                               (VkPhysicalDevice physicalDevice, VkSampleCountFlagBits samples, VkMultisamplePropertiesEXT* pMultisampleProperties) const;
++virtual VkResult      getPhysicalDeviceCalibrateableTimeDomainsEXT                                    (VkPhysicalDevice physicalDevice, deUint32* pTimeDomainCount, VkTimeDomainEXT* pTimeDomains) const;
++virtual VkResult      createHeadlessSurfaceEXT                                                                                (VkInstance instance, const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
index 618aae1,0000000..1c69078
mode 100644,000000..100644
--- /dev/null
@@@ -1,606 -1,0 +1,625 @@@
-       apis.insert(::std::pair<deUint32, FunctionInfosList>(VKSC_API_VERSION_1_0, FunctionInfosList()));
 +/* WARNING: This is auto-generated file. Do not modify, since changes will
 + * be lost! Modify the generating script instead.
 + */
 +
 +enum FunctionOrigin
 +{
 +      FUNCTIONORIGIN_PLATFORM         = 0,
 +      FUNCTIONORIGIN_INSTANCE,
 +      FUNCTIONORIGIN_DEVICE
 +};
 +
 +typedef ::std::pair<const char*, FunctionOrigin> FunctionInfo;
 +typedef ::std::vector<FunctionInfo> FunctionInfosList;
 +typedef ::std::map<deUint32, FunctionInfosList> ApisMap;
 +
 +void initApisMap (ApisMap& apis)
 +{
 +      apis.clear();
 +      apis.insert(::std::pair<deUint32, FunctionInfosList>(VK_API_VERSION_1_0, 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));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkEnumeratePhysicalDevices",                                           FUNCTIONORIGIN_INSTANCE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkGetPhysicalDeviceFeatures",                                          FUNCTIONORIGIN_INSTANCE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkGetPhysicalDeviceFormatProperties",                          FUNCTIONORIGIN_INSTANCE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkGetPhysicalDeviceImageFormatProperties",                     FUNCTIONORIGIN_INSTANCE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkGetPhysicalDeviceProperties",                                        FUNCTIONORIGIN_INSTANCE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkGetPhysicalDeviceQueueFamilyProperties",                     FUNCTIONORIGIN_INSTANCE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkGetPhysicalDeviceMemoryProperties",                          FUNCTIONORIGIN_INSTANCE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkGetInstanceProcAddr",                                                        FUNCTIONORIGIN_PLATFORM));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkGetDeviceProcAddr",                                                          FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCreateDevice",                                                                       FUNCTIONORIGIN_INSTANCE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyDevice",                                                                      FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkEnumerateInstanceExtensionProperties",                       FUNCTIONORIGIN_PLATFORM));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkEnumerateDeviceExtensionProperties",                         FUNCTIONORIGIN_INSTANCE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkEnumerateInstanceLayerProperties",                           FUNCTIONORIGIN_PLATFORM));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkEnumerateDeviceLayerProperties",                                     FUNCTIONORIGIN_INSTANCE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkGetDeviceQueue",                                                                     FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkQueueSubmit",                                                                        FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkQueueWaitIdle",                                                                      FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkDeviceWaitIdle",                                                                     FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkAllocateMemory",                                                                     FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkMapMemory",                                                                          FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkUnmapMemory",                                                                        FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkFlushMappedMemoryRanges",                                            FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkInvalidateMappedMemoryRanges",                                       FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkGetDeviceMemoryCommitment",                                          FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkBindBufferMemory",                                                           FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkBindImageMemory",                                                            FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkGetBufferMemoryRequirements",                                        FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkGetImageMemoryRequirements",                                         FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkGetImageSparseMemoryRequirements",                           FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkGetPhysicalDeviceSparseImageFormatProperties",       FUNCTIONORIGIN_INSTANCE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkQueueBindSparse",                                                            FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCreateFence",                                                                        FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyFence",                                                                       FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkResetFences",                                                                        FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkGetFenceStatus",                                                                     FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkWaitForFences",                                                                      FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCreateSemaphore",                                                            FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkDestroySemaphore",                                                           FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCreateEvent",                                                                        FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyEvent",                                                                       FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkGetEventStatus",                                                                     FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkSetEvent",                                                                           FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkResetEvent",                                                                         FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCreateQueryPool",                                                            FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkGetQueryPoolResults",                                                        FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCreateBuffer",                                                                       FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyBuffer",                                                                      FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCreateBufferView",                                                           FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyBufferView",                                                          FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCreateImage",                                                                        FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyImage",                                                                       FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkGetImageSubresourceLayout",                                          FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCreateImageView",                                                            FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyImageView",                                                           FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCreatePipelineCache",                                                        FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyPipelineCache",                                                       FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCreateGraphicsPipelines",                                            FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCreateComputePipelines",                                                     FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyPipeline",                                                            FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCreatePipelineLayout",                                                       FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyPipelineLayout",                                                      FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCreateSampler",                                                                      FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkDestroySampler",                                                                     FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCreateDescriptorSetLayout",                                          FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyDescriptorSetLayout",                                         FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCreateDescriptorPool",                                                       FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkResetDescriptorPool",                                                        FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkAllocateDescriptorSets",                                                     FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkFreeDescriptorSets",                                                         FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkUpdateDescriptorSets",                                                       FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCreateFramebuffer",                                                          FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyFramebuffer",                                                         FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCreateRenderPass",                                                           FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyRenderPass",                                                          FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkGetRenderAreaGranularity",                                           FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCreateCommandPool",                                                          FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkResetCommandPool",                                                           FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkAllocateCommandBuffers",                                                     FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkFreeCommandBuffers",                                                         FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkBeginCommandBuffer",                                                         FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkEndCommandBuffer",                                                           FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkResetCommandBuffer",                                                         FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdBindPipeline",                                                            FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdSetViewport",                                                                     FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdSetScissor",                                                                      FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdSetLineWidth",                                                            FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdSetDepthBias",                                                            FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdSetBlendConstants",                                                       FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdSetDepthBounds",                                                          FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdSetStencilCompareMask",                                           FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdSetStencilWriteMask",                                                     FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdSetStencilReference",                                                     FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdBindDescriptorSets",                                                      FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdBindIndexBuffer",                                                         FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdBindVertexBuffers",                                                       FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdDraw",                                                                            FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdDrawIndexed",                                                                     FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdDrawIndirect",                                                            FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdDrawIndexedIndirect",                                                     FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdDispatch",                                                                        FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdDispatchIndirect",                                                        FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdCopyBuffer",                                                                      FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdCopyImage",                                                                       FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdBlitImage",                                                                       FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdCopyBufferToImage",                                                       FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdCopyImageToBuffer",                                                       FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdUpdateBuffer",                                                            FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdFillBuffer",                                                                      FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdClearColorImage",                                                         FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdClearDepthStencilImage",                                          FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdClearAttachments",                                                        FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdResolveImage",                                                            FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdSetEvent",                                                                        FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdResetEvent",                                                                      FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdWaitEvents",                                                                      FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdPipelineBarrier",                                                         FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdBeginQuery",                                                                      FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdEndQuery",                                                                        FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdResetQueryPool",                                                          FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdWriteTimestamp",                                                          FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdCopyQueryPoolResults",                                            FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdPushConstants",                                                           FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdBeginRenderPass",                                                         FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdNextSubpass",                                                                     FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdEndRenderPass",                                                           FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdExecuteCommands",                                                         FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCreateInstance",                                                           FUNCTIONORIGIN_PLATFORM));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyInstance",                                                          FUNCTIONORIGIN_INSTANCE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkEnumeratePhysicalDevices",                                         FUNCTIONORIGIN_INSTANCE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkGetPhysicalDeviceFeatures",                                        FUNCTIONORIGIN_INSTANCE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkGetPhysicalDeviceFormatProperties",                        FUNCTIONORIGIN_INSTANCE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkGetPhysicalDeviceImageFormatProperties",           FUNCTIONORIGIN_INSTANCE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkGetPhysicalDeviceProperties",                                      FUNCTIONORIGIN_INSTANCE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkGetPhysicalDeviceQueueFamilyProperties",           FUNCTIONORIGIN_INSTANCE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkGetPhysicalDeviceMemoryProperties",                        FUNCTIONORIGIN_INSTANCE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkGetInstanceProcAddr",                                                      FUNCTIONORIGIN_PLATFORM));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkGetDeviceProcAddr",                                                        FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCreateDevice",                                                                     FUNCTIONORIGIN_INSTANCE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyDevice",                                                            FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkEnumerateInstanceExtensionProperties",                     FUNCTIONORIGIN_PLATFORM));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkEnumerateDeviceExtensionProperties",                       FUNCTIONORIGIN_INSTANCE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkEnumerateInstanceLayerProperties",                         FUNCTIONORIGIN_PLATFORM));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkEnumerateDeviceLayerProperties",                           FUNCTIONORIGIN_INSTANCE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkGetDeviceQueue",                                                           FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkQueueSubmit",                                                                      FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkQueueWaitIdle",                                                            FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkDeviceWaitIdle",                                                           FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkAllocateMemory",                                                           FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkMapMemory",                                                                        FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkUnmapMemory",                                                                      FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkFlushMappedMemoryRanges",                                          FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkInvalidateMappedMemoryRanges",                                     FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkGetDeviceMemoryCommitment",                                        FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkBindBufferMemory",                                                         FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkBindImageMemory",                                                          FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkGetBufferMemoryRequirements",                                      FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkGetImageMemoryRequirements",                                       FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkGetImageSparseMemoryRequirements",                         FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkGetPhysicalDeviceSparseImageFormatProperties",     FUNCTIONORIGIN_INSTANCE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkQueueBindSparse",                                                          FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCreateFence",                                                                      FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyFence",                                                                     FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkResetFences",                                                                      FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkGetFenceStatus",                                                           FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkWaitForFences",                                                            FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCreateSemaphore",                                                          FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkDestroySemaphore",                                                         FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCreateEvent",                                                                      FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyEvent",                                                                     FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkGetEventStatus",                                                           FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkSetEvent",                                                                         FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkResetEvent",                                                                       FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCreateQueryPool",                                                          FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkGetQueryPoolResults",                                                      FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCreateBuffer",                                                                     FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyBuffer",                                                            FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCreateBufferView",                                                         FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyBufferView",                                                        FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCreateImage",                                                                      FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyImage",                                                                     FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkGetImageSubresourceLayout",                                        FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCreateImageView",                                                          FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyImageView",                                                         FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCreatePipelineCache",                                                      FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyPipelineCache",                                                     FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCreateGraphicsPipelines",                                          FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCreateComputePipelines",                                           FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyPipeline",                                                          FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCreatePipelineLayout",                                                     FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyPipelineLayout",                                            FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCreateSampler",                                                            FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkDestroySampler",                                                           FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCreateDescriptorSetLayout",                                        FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyDescriptorSetLayout",                                       FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCreateDescriptorPool",                                                     FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkResetDescriptorPool",                                                      FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkAllocateDescriptorSets",                                           FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkFreeDescriptorSets",                                                       FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkUpdateDescriptorSets",                                                     FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCreateFramebuffer",                                                        FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyFramebuffer",                                                       FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCreateRenderPass",                                                         FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyRenderPass",                                                        FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkGetRenderAreaGranularity",                                         FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCreateCommandPool",                                                        FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkResetCommandPool",                                                         FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkAllocateCommandBuffers",                                           FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkFreeCommandBuffers",                                                       FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkBeginCommandBuffer",                                                       FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkEndCommandBuffer",                                                         FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkResetCommandBuffer",                                                       FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdBindPipeline",                                                          FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdSetViewport",                                                           FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdSetScissor",                                                            FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdSetLineWidth",                                                          FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdSetDepthBias",                                                          FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdSetBlendConstants",                                                     FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdSetDepthBounds",                                                        FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdSetStencilCompareMask",                                         FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdSetStencilWriteMask",                                           FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdSetStencilReference",                                           FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdBindDescriptorSets",                                            FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdBindIndexBuffer",                                                       FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdBindVertexBuffers",                                                     FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdDraw",                                                                          FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdDrawIndexed",                                                           FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdDrawIndirect",                                                          FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdDrawIndexedIndirect",                                           FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdDispatch",                                                                      FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdDispatchIndirect",                                                      FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdCopyBuffer",                                                            FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdCopyImage",                                                                     FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdBlitImage",                                                                     FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdCopyBufferToImage",                                                     FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdCopyImageToBuffer",                                                     FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdUpdateBuffer",                                                          FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdFillBuffer",                                                            FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdClearColorImage",                                                       FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdClearDepthStencilImage",                                        FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdClearAttachments",                                                      FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdResolveImage",                                                          FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdSetEvent",                                                                      FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdResetEvent",                                                            FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdWaitEvents",                                                            FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdPipelineBarrier",                                                       FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdBeginQuery",                                                            FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdEndQuery",                                                                      FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdResetQueryPool",                                                        FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdWriteTimestamp",                                                        FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdCopyQueryPoolResults",                                          FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdPushConstants",                                                         FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdBeginRenderPass",                                                       FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdNextSubpass",                                                           FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdEndRenderPass",                                                         FUNCTIONORIGIN_DEVICE));
-       apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdExecuteCommands",                                                       FUNCTIONORIGIN_DEVICE));
 +      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.insert(::std::pair<deUint32, FunctionInfosList>(VKSC_API_VERSION_1_0, FunctionInfosList()));
 +
-       apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkGetImageSparseMemoryRequirements",                           FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkGetPhysicalDeviceSparseImageFormatProperties",       FUNCTIONORIGIN_INSTANCE));
-       apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkQueueBindSparse",                                                            FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCreateInstance",                                                     FUNCTIONORIGIN_PLATFORM));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyInstance",                                            FUNCTIONORIGIN_INSTANCE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkEnumeratePhysicalDevices",                           FUNCTIONORIGIN_INSTANCE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkGetPhysicalDeviceFeatures",                          FUNCTIONORIGIN_INSTANCE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkGetPhysicalDeviceFormatProperties",          FUNCTIONORIGIN_INSTANCE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkGetPhysicalDeviceImageFormatProperties",     FUNCTIONORIGIN_INSTANCE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkGetPhysicalDeviceProperties",                        FUNCTIONORIGIN_INSTANCE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkGetPhysicalDeviceQueueFamilyProperties",     FUNCTIONORIGIN_INSTANCE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkGetPhysicalDeviceMemoryProperties",          FUNCTIONORIGIN_INSTANCE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkGetInstanceProcAddr",                                        FUNCTIONORIGIN_PLATFORM));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkGetDeviceProcAddr",                                          FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCreateDevice",                                                       FUNCTIONORIGIN_INSTANCE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyDevice",                                                      FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkEnumerateInstanceExtensionProperties",       FUNCTIONORIGIN_PLATFORM));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkEnumerateDeviceExtensionProperties",         FUNCTIONORIGIN_INSTANCE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkEnumerateInstanceLayerProperties",           FUNCTIONORIGIN_PLATFORM));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkEnumerateDeviceLayerProperties",                     FUNCTIONORIGIN_INSTANCE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkGetDeviceQueue",                                                     FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkQueueSubmit",                                                        FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkQueueWaitIdle",                                                      FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkDeviceWaitIdle",                                                     FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkAllocateMemory",                                                     FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkMapMemory",                                                          FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkUnmapMemory",                                                        FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkFlushMappedMemoryRanges",                            FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkInvalidateMappedMemoryRanges",                       FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkGetDeviceMemoryCommitment",                          FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkBindBufferMemory",                                           FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkBindImageMemory",                                            FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkGetBufferMemoryRequirements",                        FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkGetImageMemoryRequirements",                         FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCreateFence",                                                        FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyFence",                                                       FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkResetFences",                                                        FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkGetFenceStatus",                                                     FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkWaitForFences",                                                      FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCreateSemaphore",                                            FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkDestroySemaphore",                                           FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCreateEvent",                                                        FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyEvent",                                                       FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkGetEventStatus",                                                     FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkSetEvent",                                                           FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkResetEvent",                                                         FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCreateQueryPool",                                            FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkGetQueryPoolResults",                                        FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCreateBuffer",                                                       FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyBuffer",                                                      FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCreateBufferView",                                           FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyBufferView",                                          FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCreateImage",                                                        FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyImage",                                                       FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkGetImageSubresourceLayout",                          FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCreateImageView",                                            FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyImageView",                                           FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCreatePipelineCache",                                        FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyPipelineCache",                                       FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCreateGraphicsPipelines",                            FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCreateComputePipelines",                                     FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyPipeline",                                            FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCreatePipelineLayout",                                       FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyPipelineLayout",                                      FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCreateSampler",                                                      FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkDestroySampler",                                                     FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCreateDescriptorSetLayout",                          FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyDescriptorSetLayout",                         FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCreateDescriptorPool",                                       FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkResetDescriptorPool",                                        FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkAllocateDescriptorSets",                                     FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkFreeDescriptorSets",                                         FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkUpdateDescriptorSets",                                       FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCreateFramebuffer",                                          FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyFramebuffer",                                         FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCreateRenderPass",                                           FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyRenderPass",                                          FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkGetRenderAreaGranularity",                           FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCreateCommandPool",                                          FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkResetCommandPool",                                           FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkAllocateCommandBuffers",                                     FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkFreeCommandBuffers",                                         FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkBeginCommandBuffer",                                         FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkEndCommandBuffer",                                           FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkResetCommandBuffer",                                         FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdBindPipeline",                                            FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdSetViewport",                                                     FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdSetScissor",                                                      FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdSetLineWidth",                                            FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdSetDepthBias",                                            FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdSetBlendConstants",                                       FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdSetDepthBounds",                                          FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdSetStencilCompareMask",                           FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdSetStencilWriteMask",                                     FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdSetStencilReference",                                     FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdBindDescriptorSets",                                      FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdBindIndexBuffer",                                         FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdBindVertexBuffers",                                       FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdDraw",                                                            FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdDrawIndexed",                                                     FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdDrawIndirect",                                            FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdDrawIndexedIndirect",                                     FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdDispatch",                                                        FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdDispatchIndirect",                                        FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdCopyBuffer",                                                      FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdCopyImage",                                                       FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdBlitImage",                                                       FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdCopyBufferToImage",                                       FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdCopyImageToBuffer",                                       FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdUpdateBuffer",                                            FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdFillBuffer",                                                      FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdClearColorImage",                                         FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdClearDepthStencilImage",                          FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdClearAttachments",                                        FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdResolveImage",                                            FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdSetEvent",                                                        FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdResetEvent",                                                      FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdWaitEvents",                                                      FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdPipelineBarrier",                                         FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdBeginQuery",                                                      FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdEndQuery",                                                        FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdResetQueryPool",                                          FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdWriteTimestamp",                                          FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdCopyQueryPoolResults",                            FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdPushConstants",                                           FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdBeginRenderPass",                                         FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdNextSubpass",                                                     FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdEndRenderPass",                                           FUNCTIONORIGIN_DEVICE));
++      apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCmdExecuteCommands",                                         FUNCTIONORIGIN_DEVICE));
 +
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCreateInstance",                                                                     FUNCTIONORIGIN_PLATFORM));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkDestroyInstance",                                                            FUNCTIONORIGIN_INSTANCE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkEnumeratePhysicalDevices",                                           FUNCTIONORIGIN_INSTANCE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkGetPhysicalDeviceFeatures",                                          FUNCTIONORIGIN_INSTANCE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkGetPhysicalDeviceFormatProperties",                          FUNCTIONORIGIN_INSTANCE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkGetPhysicalDeviceImageFormatProperties",                     FUNCTIONORIGIN_INSTANCE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkGetPhysicalDeviceProperties",                                        FUNCTIONORIGIN_INSTANCE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkGetPhysicalDeviceQueueFamilyProperties",                     FUNCTIONORIGIN_INSTANCE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkGetPhysicalDeviceMemoryProperties",                          FUNCTIONORIGIN_INSTANCE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkGetInstanceProcAddr",                                                        FUNCTIONORIGIN_PLATFORM));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkGetDeviceProcAddr",                                                          FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCreateDevice",                                                                       FUNCTIONORIGIN_INSTANCE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkDestroyDevice",                                                                      FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkEnumerateInstanceExtensionProperties",                       FUNCTIONORIGIN_PLATFORM));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkEnumerateDeviceExtensionProperties",                         FUNCTIONORIGIN_INSTANCE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkEnumerateInstanceLayerProperties",                           FUNCTIONORIGIN_PLATFORM));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkEnumerateDeviceLayerProperties",                                     FUNCTIONORIGIN_INSTANCE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkGetDeviceQueue",                                                                     FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkQueueSubmit",                                                                        FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkQueueWaitIdle",                                                                      FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkDeviceWaitIdle",                                                                     FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkAllocateMemory",                                                                     FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkMapMemory",                                                                          FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkUnmapMemory",                                                                        FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkFlushMappedMemoryRanges",                                            FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkInvalidateMappedMemoryRanges",                                       FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkGetDeviceMemoryCommitment",                                          FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkBindBufferMemory",                                                           FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkBindImageMemory",                                                            FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkGetBufferMemoryRequirements",                                        FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkGetImageMemoryRequirements",                                         FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkGetImageSparseMemoryRequirements2",                          FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCreateFence",                                                                        FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkDestroyFence",                                                                       FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkResetFences",                                                                        FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkGetFenceStatus",                                                                     FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkWaitForFences",                                                                      FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCreateSemaphore",                                                            FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkDestroySemaphore",                                                           FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCreateEvent",                                                                        FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkDestroyEvent",                                                                       FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkGetEventStatus",                                                                     FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkSetEvent",                                                                           FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkResetEvent",                                                                         FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCreateQueryPool",                                                            FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkGetQueryPoolResults",                                                        FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCreateBuffer",                                                                       FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkDestroyBuffer",                                                                      FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCreateBufferView",                                                           FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkDestroyBufferView",                                                          FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCreateImage",                                                                        FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkDestroyImage",                                                                       FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkGetImageSubresourceLayout",                                          FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCreateImageView",                                                            FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkDestroyImageView",                                                           FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCreatePipelineCache",                                                        FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkDestroyPipelineCache",                                                       FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCreateGraphicsPipelines",                                            FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCreateComputePipelines",                                                     FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkDestroyPipeline",                                                            FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCreatePipelineLayout",                                                       FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkDestroyPipelineLayout",                                                      FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCreateSampler",                                                                      FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkDestroySampler",                                                                     FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCreateDescriptorSetLayout",                                          FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkDestroyDescriptorSetLayout",                                         FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCreateDescriptorPool",                                                       FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkResetDescriptorPool",                                                        FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkAllocateDescriptorSets",                                                     FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkFreeDescriptorSets",                                                         FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkUpdateDescriptorSets",                                                       FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCreateFramebuffer",                                                          FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkDestroyFramebuffer",                                                         FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCreateRenderPass",                                                           FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkDestroyRenderPass",                                                          FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkGetRenderAreaGranularity",                                           FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCreateCommandPool",                                                          FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkResetCommandPool",                                                           FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkAllocateCommandBuffers",                                                     FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkFreeCommandBuffers",                                                         FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkBeginCommandBuffer",                                                         FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkEndCommandBuffer",                                                           FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkResetCommandBuffer",                                                         FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCmdBindPipeline",                                                            FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCmdSetViewport",                                                                     FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCmdSetScissor",                                                                      FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCmdSetLineWidth",                                                            FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCmdSetDepthBias",                                                            FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCmdSetBlendConstants",                                                       FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCmdSetDepthBounds",                                                          FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCmdSetStencilCompareMask",                                           FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCmdSetStencilWriteMask",                                                     FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCmdSetStencilReference",                                                     FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCmdBindDescriptorSets",                                                      FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCmdBindIndexBuffer",                                                         FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCmdBindVertexBuffers",                                                       FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCmdDraw",                                                                            FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCmdDrawIndexed",                                                                     FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCmdDrawIndirect",                                                            FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCmdDrawIndexedIndirect",                                                     FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCmdDispatch",                                                                        FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCmdDispatchIndirect",                                                        FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCmdCopyBuffer",                                                                      FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCmdCopyImage",                                                                       FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCmdBlitImage",                                                                       FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCmdCopyBufferToImage",                                                       FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCmdCopyImageToBuffer",                                                       FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCmdUpdateBuffer",                                                            FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCmdFillBuffer",                                                                      FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCmdClearColorImage",                                                         FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCmdClearDepthStencilImage",                                          FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCmdClearAttachments",                                                        FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCmdResolveImage",                                                            FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCmdSetEvent",                                                                        FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCmdResetEvent",                                                                      FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCmdWaitEvents",                                                                      FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCmdPipelineBarrier",                                                         FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCmdBeginQuery",                                                                      FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCmdEndQuery",                                                                        FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCmdResetQueryPool",                                                          FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCmdWriteTimestamp",                                                          FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCmdCopyQueryPoolResults",                                            FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCmdPushConstants",                                                           FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCmdBeginRenderPass",                                                         FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCmdNextSubpass",                                                                     FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCmdEndRenderPass",                                                           FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCmdExecuteCommands",                                                         FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkEnumerateInstanceVersion",                                           FUNCTIONORIGIN_PLATFORM));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkBindBufferMemory2",                                                          FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkBindImageMemory2",                                                           FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkGetDeviceGroupPeerMemoryFeatures",                           FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCmdSetDeviceMask",                                                           FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCmdDispatchBase",                                                            FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkEnumeratePhysicalDeviceGroups",                                      FUNCTIONORIGIN_INSTANCE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkGetImageMemoryRequirements2",                                        FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkGetBufferMemoryRequirements2",                                       FUNCTIONORIGIN_DEVICE));
-       apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkGetPhysicalDeviceSparseImageFormatProperties2",      FUNCTIONORIGIN_INSTANCE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkGetPhysicalDeviceFeatures2",                                         FUNCTIONORIGIN_INSTANCE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkGetPhysicalDeviceProperties2",                                       FUNCTIONORIGIN_INSTANCE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkGetPhysicalDeviceFormatProperties2",                         FUNCTIONORIGIN_INSTANCE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkGetPhysicalDeviceImageFormatProperties2",            FUNCTIONORIGIN_INSTANCE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkGetPhysicalDeviceQueueFamilyProperties2",            FUNCTIONORIGIN_INSTANCE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkGetPhysicalDeviceMemoryProperties2",                         FUNCTIONORIGIN_INSTANCE));
-       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_1].push_back(FunctionInfo("vkGetDeviceQueue2",                                                            FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCreateSamplerYcbcrConversion",                                       FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkDestroySamplerYcbcrConversion",                                      FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkGetPhysicalDeviceExternalBufferProperties",          FUNCTIONORIGIN_INSTANCE));
 +      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("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("vkGetImageSparseMemoryRequirements2",                          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("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("vkCreatePipelineCache",                                                        FUNCTIONORIGIN_DEVICE));
 +      apis[VK_API_VERSION_1_2].push_back(FunctionInfo("vkDestroyPipelineCache",                                                       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("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("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("vkGetPhysicalDeviceSparseImageFormatProperties2",      FUNCTIONORIGIN_INSTANCE));
 +      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("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("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));
 +
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCreateInstance",                                                           FUNCTIONORIGIN_PLATFORM));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyInstance",                                                          FUNCTIONORIGIN_INSTANCE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkEnumeratePhysicalDevices",                                         FUNCTIONORIGIN_INSTANCE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkGetPhysicalDeviceFeatures",                                        FUNCTIONORIGIN_INSTANCE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkGetPhysicalDeviceFormatProperties",                        FUNCTIONORIGIN_INSTANCE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkGetPhysicalDeviceImageFormatProperties",           FUNCTIONORIGIN_INSTANCE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkGetPhysicalDeviceProperties",                                      FUNCTIONORIGIN_INSTANCE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkGetPhysicalDeviceQueueFamilyProperties",           FUNCTIONORIGIN_INSTANCE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkGetPhysicalDeviceMemoryProperties",                        FUNCTIONORIGIN_INSTANCE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkGetInstanceProcAddr",                                                      FUNCTIONORIGIN_PLATFORM));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkGetDeviceProcAddr",                                                        FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCreateDevice",                                                                     FUNCTIONORIGIN_INSTANCE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyDevice",                                                            FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkEnumerateInstanceExtensionProperties",                     FUNCTIONORIGIN_PLATFORM));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkEnumerateDeviceExtensionProperties",                       FUNCTIONORIGIN_INSTANCE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkEnumerateInstanceLayerProperties",                         FUNCTIONORIGIN_PLATFORM));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkEnumerateDeviceLayerProperties",                           FUNCTIONORIGIN_INSTANCE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkGetDeviceQueue",                                                           FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkQueueSubmit",                                                                      FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkQueueWaitIdle",                                                            FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkDeviceWaitIdle",                                                           FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkAllocateMemory",                                                           FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkMapMemory",                                                                        FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkUnmapMemory",                                                                      FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkFlushMappedMemoryRanges",                                          FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkInvalidateMappedMemoryRanges",                                     FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkGetDeviceMemoryCommitment",                                        FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkBindBufferMemory",                                                         FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkBindImageMemory",                                                          FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkGetBufferMemoryRequirements",                                      FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkGetImageMemoryRequirements",                                       FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCreateFence",                                                                      FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyFence",                                                                     FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkResetFences",                                                                      FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkGetFenceStatus",                                                           FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkWaitForFences",                                                            FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCreateSemaphore",                                                          FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkDestroySemaphore",                                                         FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCreateEvent",                                                                      FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyEvent",                                                                     FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkGetEventStatus",                                                           FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkSetEvent",                                                                         FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkResetEvent",                                                                       FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCreateQueryPool",                                                          FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkGetQueryPoolResults",                                                      FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCreateBuffer",                                                                     FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyBuffer",                                                            FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCreateBufferView",                                                         FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyBufferView",                                                        FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCreateImage",                                                                      FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyImage",                                                                     FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkGetImageSubresourceLayout",                                        FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCreateImageView",                                                          FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyImageView",                                                         FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCreatePipelineCache",                                                      FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyPipelineCache",                                                     FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCreateGraphicsPipelines",                                          FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCreateComputePipelines",                                           FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyPipeline",                                                          FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCreatePipelineLayout",                                                     FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyPipelineLayout",                                            FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCreateSampler",                                                            FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkDestroySampler",                                                           FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCreateDescriptorSetLayout",                                        FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyDescriptorSetLayout",                                       FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCreateDescriptorPool",                                                     FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkResetDescriptorPool",                                                      FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkAllocateDescriptorSets",                                           FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkFreeDescriptorSets",                                                       FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkUpdateDescriptorSets",                                                     FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCreateFramebuffer",                                                        FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyFramebuffer",                                                       FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCreateRenderPass",                                                         FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyRenderPass",                                                        FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkGetRenderAreaGranularity",                                         FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCreateCommandPool",                                                        FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkResetCommandPool",                                                         FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkAllocateCommandBuffers",                                           FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkFreeCommandBuffers",                                                       FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkBeginCommandBuffer",                                                       FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkEndCommandBuffer",                                                         FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkResetCommandBuffer",                                                       FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdBindPipeline",                                                          FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdSetViewport",                                                           FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdSetScissor",                                                            FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdSetLineWidth",                                                          FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdSetDepthBias",                                                          FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdSetBlendConstants",                                                     FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdSetDepthBounds",                                                        FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdSetStencilCompareMask",                                         FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdSetStencilWriteMask",                                           FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdSetStencilReference",                                           FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdBindDescriptorSets",                                            FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdBindIndexBuffer",                                                       FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdBindVertexBuffers",                                                     FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdDraw",                                                                          FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdDrawIndexed",                                                           FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdDrawIndirect",                                                          FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdDrawIndexedIndirect",                                           FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdDispatch",                                                                      FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdDispatchIndirect",                                                      FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdCopyBuffer",                                                            FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdCopyImage",                                                                     FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdBlitImage",                                                                     FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdCopyBufferToImage",                                                     FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdCopyImageToBuffer",                                                     FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdUpdateBuffer",                                                          FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdFillBuffer",                                                            FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdClearColorImage",                                                       FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdClearDepthStencilImage",                                        FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdClearAttachments",                                                      FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdResolveImage",                                                          FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdSetEvent",                                                                      FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdResetEvent",                                                            FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdWaitEvents",                                                            FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdPipelineBarrier",                                                       FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdBeginQuery",                                                            FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdEndQuery",                                                                      FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdResetQueryPool",                                                        FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdWriteTimestamp",                                                        FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdCopyQueryPoolResults",                                          FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdPushConstants",                                                         FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdBeginRenderPass",                                                       FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdNextSubpass",                                                           FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdEndRenderPass",                                                         FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdExecuteCommands",                                                       FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkEnumerateInstanceVersion",                                         FUNCTIONORIGIN_PLATFORM));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkBindBufferMemory2",                                                        FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkBindImageMemory2",                                                         FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkGetDeviceGroupPeerMemoryFeatures",                         FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdSetDeviceMask",                                                         FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdDispatchBase",                                                          FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkEnumeratePhysicalDeviceGroups",                            FUNCTIONORIGIN_INSTANCE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkGetImageMemoryRequirements2",                                      FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkGetBufferMemoryRequirements2",                                     FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkGetPhysicalDeviceFeatures2",                                       FUNCTIONORIGIN_INSTANCE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkGetPhysicalDeviceProperties2",                                     FUNCTIONORIGIN_INSTANCE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkGetPhysicalDeviceFormatProperties2",                       FUNCTIONORIGIN_INSTANCE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkGetPhysicalDeviceImageFormatProperties2",          FUNCTIONORIGIN_INSTANCE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkGetPhysicalDeviceQueueFamilyProperties2",          FUNCTIONORIGIN_INSTANCE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkGetPhysicalDeviceMemoryProperties2",                       FUNCTIONORIGIN_INSTANCE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkGetDeviceQueue2",                                                          FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCreateSamplerYcbcrConversion",                                     FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkDestroySamplerYcbcrConversion",                            FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkGetPhysicalDeviceExternalBufferProperties",        FUNCTIONORIGIN_INSTANCE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkGetPhysicalDeviceExternalFenceProperties",         FUNCTIONORIGIN_INSTANCE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkGetPhysicalDeviceExternalSemaphoreProperties",     FUNCTIONORIGIN_INSTANCE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkGetDescriptorSetLayoutSupport",                            FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdDrawIndirectCount",                                                     FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdDrawIndexedIndirectCount",                                      FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCreateRenderPass2",                                                        FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdBeginRenderPass2",                                                      FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdNextSubpass2",                                                          FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkCmdEndRenderPass2",                                                        FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkResetQueryPool",                                                           FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkGetSemaphoreCounterValue",                                         FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkWaitSemaphores",                                                           FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkSignalSemaphore",                                                          FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkGetBufferDeviceAddress",                                           FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkGetBufferOpaqueCaptureAddress",                            FUNCTIONORIGIN_DEVICE));
++      apis[VKSC_API_VERSION_1_0].push_back(FunctionInfo("vkGetDeviceMemoryOpaqueCaptureAddress",                      FUNCTIONORIGIN_DEVICE));
++
 +}
 +
index 5fd22b1,0000000..62e76c4
mode 100644,000000..100644
--- /dev/null
@@@ -1,938 -1,0 +1,1043 @@@
- void DeviceDriver::getImageSparseMemoryRequirements (VkDevice device, VkImage image, deUint32* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements* pSparseMemoryRequirements) const
- {
-       m_vk.getImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
- }
- VkResult DeviceDriver::queueBindSparse (VkQueue queue, deUint32 bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence) const
- {
-       return m_vk.queueBindSparse(queue, bindInfoCount, pBindInfo, fence);
- }
 +/* WARNING: This is auto-generated file. Do not modify, since changes will
 + * be lost! Modify the generating script instead.
 + */
 +
 +PFN_vkVoidFunction DeviceDriver::getDeviceProcAddr (VkDevice device, const char* pName) const
 +{
 +      return m_vk.getDeviceProcAddr(device, pName);
 +}
 +
 +void DeviceDriver::destroyDevice (VkDevice device, const VkAllocationCallbacks* pAllocator) const
 +{
 +      m_vk.destroyDevice(device, pAllocator);
 +}
 +
 +void DeviceDriver::getDeviceQueue (VkDevice device, deUint32 queueFamilyIndex, deUint32 queueIndex, VkQueue* pQueue) const
 +{
 +      m_vk.getDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue);
 +}
 +
 +VkResult DeviceDriver::queueSubmit (VkQueue queue, deUint32 submitCount, const VkSubmitInfo* pSubmits, VkFence fence) const
 +{
 +      return m_vk.queueSubmit(queue, submitCount, pSubmits, fence);
 +}
 +
 +VkResult DeviceDriver::queueWaitIdle (VkQueue queue) const
 +{
 +      return m_vk.queueWaitIdle(queue);
 +}
 +
 +VkResult DeviceDriver::deviceWaitIdle (VkDevice device) const
 +{
 +      return m_vk.deviceWaitIdle(device);
 +}
 +
 +VkResult DeviceDriver::allocateMemory (VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory) const
 +{
 +      return m_vk.allocateMemory(device, pAllocateInfo, pAllocator, pMemory);
 +}
 +
 +VkResult DeviceDriver::mapMemory (VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData) const
 +{
 +      return m_vk.mapMemory(device, memory, offset, size, flags, ppData);
 +}
 +
 +void DeviceDriver::unmapMemory (VkDevice device, VkDeviceMemory memory) const
 +{
 +      m_vk.unmapMemory(device, memory);
 +}
 +
 +VkResult DeviceDriver::flushMappedMemoryRanges (VkDevice device, deUint32 memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges) const
 +{
 +      return m_vk.flushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges);
 +}
 +
 +VkResult DeviceDriver::invalidateMappedMemoryRanges (VkDevice device, deUint32 memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges) const
 +{
 +      return m_vk.invalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges);
 +}
 +
 +void DeviceDriver::getDeviceMemoryCommitment (VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes) const
 +{
 +      m_vk.getDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes);
 +}
 +
 +VkResult DeviceDriver::bindBufferMemory (VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset) const
 +{
 +      return m_vk.bindBufferMemory(device, buffer, memory, memoryOffset);
 +}
 +
 +VkResult DeviceDriver::bindImageMemory (VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset) const
 +{
 +      return m_vk.bindImageMemory(device, image, memory, memoryOffset);
 +}
 +
 +void DeviceDriver::getBufferMemoryRequirements (VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements) const
 +{
 +      m_vk.getBufferMemoryRequirements(device, buffer, pMemoryRequirements);
 +}
 +
 +void DeviceDriver::getImageMemoryRequirements (VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements) const
 +{
 +      m_vk.getImageMemoryRequirements(device, image, pMemoryRequirements);
 +}
 +
- void DeviceDriver::getCommandPoolMemoryConsumption (VkDevice device, VkCommandPool commandPool, VkCommandBuffer commandBuffer, VkCommandPoolMemoryConsumption* pConsumption) const
- {
-       m_vk.getCommandPoolMemoryConsumption(device, commandPool, commandBuffer, pConsumption);
- }
- VkResult DeviceDriver::getFaultData (VkDevice device, VkFaultQueryBehavior faultQueryBehavior, VkBool32* pUnrecordedFaults, deUint32* pFaultCount, VkFaultData* pFaults) const
- {
-       return m_vk.getFaultData(device, faultQueryBehavior, pUnrecordedFaults, pFaultCount, pFaults);
- }
 +VkResult DeviceDriver::createFence (VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence) const
 +{
 +      return m_vk.createFence(device, pCreateInfo, pAllocator, pFence);
 +}
 +
 +void DeviceDriver::destroyFence (VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator) const
 +{
 +      m_vk.destroyFence(device, fence, pAllocator);
 +}
 +
 +VkResult DeviceDriver::resetFences (VkDevice device, deUint32 fenceCount, const VkFence* pFences) const
 +{
 +      return m_vk.resetFences(device, fenceCount, pFences);
 +}
 +
 +VkResult DeviceDriver::getFenceStatus (VkDevice device, VkFence fence) const
 +{
 +      return m_vk.getFenceStatus(device, fence);
 +}
 +
 +VkResult DeviceDriver::waitForFences (VkDevice device, deUint32 fenceCount, const VkFence* pFences, VkBool32 waitAll, deUint64 timeout) const
 +{
 +      return m_vk.waitForFences(device, fenceCount, pFences, waitAll, timeout);
 +}
 +
 +VkResult DeviceDriver::createSemaphore (VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore) const
 +{
 +      return m_vk.createSemaphore(device, pCreateInfo, pAllocator, pSemaphore);
 +}
 +
 +void DeviceDriver::destroySemaphore (VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator) const
 +{
 +      m_vk.destroySemaphore(device, semaphore, pAllocator);
 +}
 +
 +VkResult DeviceDriver::createEvent (VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkEvent* pEvent) const
 +{
 +      return m_vk.createEvent(device, pCreateInfo, pAllocator, pEvent);
 +}
 +
 +void DeviceDriver::destroyEvent (VkDevice device, VkEvent event, const VkAllocationCallbacks* pAllocator) const
 +{
 +      m_vk.destroyEvent(device, event, pAllocator);
 +}
 +
 +VkResult DeviceDriver::getEventStatus (VkDevice device, VkEvent event) const
 +{
 +      return m_vk.getEventStatus(device, event);
 +}
 +
 +VkResult DeviceDriver::setEvent (VkDevice device, VkEvent event) const
 +{
 +      return m_vk.setEvent(device, event);
 +}
 +
 +VkResult DeviceDriver::resetEvent (VkDevice device, VkEvent event) const
 +{
 +      return m_vk.resetEvent(device, event);
 +}
 +
 +VkResult DeviceDriver::createQueryPool (VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkQueryPool* pQueryPool) const
 +{
 +      return m_vk.createQueryPool(device, pCreateInfo, pAllocator, pQueryPool);
 +}
 +
 +VkResult DeviceDriver::getQueryPoolResults (VkDevice device, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount, deUintptr dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags) const
 +{
 +      return m_vk.getQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags);
 +}
 +
 +VkResult DeviceDriver::createBuffer (VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer) const
 +{
 +      return m_vk.createBuffer(device, pCreateInfo, pAllocator, pBuffer);
 +}
 +
 +void DeviceDriver::destroyBuffer (VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator) const
 +{
 +      m_vk.destroyBuffer(device, buffer, pAllocator);
 +}
 +
 +VkResult DeviceDriver::createBufferView (VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView) const
 +{
 +      return m_vk.createBufferView(device, pCreateInfo, pAllocator, pView);
 +}
 +
 +void DeviceDriver::destroyBufferView (VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* pAllocator) const
 +{
 +      m_vk.destroyBufferView(device, bufferView, pAllocator);
 +}
 +
 +VkResult DeviceDriver::createImage (VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImage* pImage) const
 +{
 +      return m_vk.createImage(device, pCreateInfo, pAllocator, pImage);
 +}
 +
 +void DeviceDriver::destroyImage (VkDevice device, VkImage image, const VkAllocationCallbacks* pAllocator) const
 +{
 +      m_vk.destroyImage(device, image, pAllocator);
 +}
 +
 +void DeviceDriver::getImageSubresourceLayout (VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout) const
 +{
 +      m_vk.getImageSubresourceLayout(device, image, pSubresource, pLayout);
 +}
 +
 +VkResult DeviceDriver::createImageView (VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImageView* pView) const
 +{
 +      return m_vk.createImageView(device, pCreateInfo, pAllocator, pView);
 +}
 +
 +void DeviceDriver::destroyImageView (VkDevice device, VkImageView imageView, const VkAllocationCallbacks* pAllocator) const
 +{
 +      m_vk.destroyImageView(device, imageView, pAllocator);
 +}
 +
 +VkResult DeviceDriver::createPipelineCache (VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache) const
 +{
 +      return m_vk.createPipelineCache(device, pCreateInfo, pAllocator, pPipelineCache);
 +}
 +
 +void DeviceDriver::destroyPipelineCache (VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator) const
 +{
 +      m_vk.destroyPipelineCache(device, pipelineCache, pAllocator);
 +}
 +
 +VkResult DeviceDriver::createGraphicsPipelines (VkDevice device, VkPipelineCache pipelineCache, deUint32 createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines) const
 +{
 +      return m_vk.createGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
 +}
 +
 +VkResult DeviceDriver::createComputePipelines (VkDevice device, VkPipelineCache pipelineCache, deUint32 createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines) const
 +{
 +      return m_vk.createComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
 +}
 +
 +void DeviceDriver::destroyPipeline (VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator) const
 +{
 +      m_vk.destroyPipeline(device, pipeline, pAllocator);
 +}
 +
 +VkResult DeviceDriver::createPipelineLayout (VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout) const
 +{
 +      return m_vk.createPipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout);
 +}
 +
 +void DeviceDriver::destroyPipelineLayout (VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* pAllocator) const
 +{
 +      m_vk.destroyPipelineLayout(device, pipelineLayout, pAllocator);
 +}
 +
 +VkResult DeviceDriver::createSampler (VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler) const
 +{
 +      return m_vk.createSampler(device, pCreateInfo, pAllocator, pSampler);
 +}
 +
 +void DeviceDriver::destroySampler (VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator) const
 +{
 +      m_vk.destroySampler(device, sampler, pAllocator);
 +}
 +
 +VkResult DeviceDriver::createDescriptorSetLayout (VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout) const
 +{
 +      return m_vk.createDescriptorSetLayout(device, pCreateInfo, pAllocator, pSetLayout);
 +}
 +
 +void DeviceDriver::destroyDescriptorSetLayout (VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* pAllocator) const
 +{
 +      m_vk.destroyDescriptorSetLayout(device, descriptorSetLayout, pAllocator);
 +}
 +
 +VkResult DeviceDriver::createDescriptorPool (VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool) const
 +{
 +      return m_vk.createDescriptorPool(device, pCreateInfo, pAllocator, pDescriptorPool);
 +}
 +
 +VkResult DeviceDriver::resetDescriptorPool (VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags) const
 +{
 +      return m_vk.resetDescriptorPool(device, descriptorPool, flags);
 +}
 +
 +VkResult DeviceDriver::allocateDescriptorSets (VkDevice device, const VkDescriptorSetAllocateInfo* pAllocateInfo, VkDescriptorSet* pDescriptorSets) const
 +{
 +      return m_vk.allocateDescriptorSets(device, pAllocateInfo, pDescriptorSets);
 +}
 +
 +VkResult DeviceDriver::freeDescriptorSets (VkDevice device, VkDescriptorPool descriptorPool, deUint32 descriptorSetCount, const VkDescriptorSet* pDescriptorSets) const
 +{
 +      return m_vk.freeDescriptorSets(device, descriptorPool, descriptorSetCount, pDescriptorSets);
 +}
 +
 +void DeviceDriver::updateDescriptorSets (VkDevice device, deUint32 descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites, deUint32 descriptorCopyCount, const VkCopyDescriptorSet* pDescriptorCopies) const
 +{
 +      m_vk.updateDescriptorSets(device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies);
 +}
 +
 +VkResult DeviceDriver::createFramebuffer (VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFramebuffer* pFramebuffer) const
 +{
 +      return m_vk.createFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer);
 +}
 +
 +void DeviceDriver::destroyFramebuffer (VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator) const
 +{
 +      m_vk.destroyFramebuffer(device, framebuffer, pAllocator);
 +}
 +
 +VkResult DeviceDriver::createRenderPass (VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass) const
 +{
 +      return m_vk.createRenderPass(device, pCreateInfo, pAllocator, pRenderPass);
 +}
 +
 +void DeviceDriver::destroyRenderPass (VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator) const
 +{
 +      m_vk.destroyRenderPass(device, renderPass, pAllocator);
 +}
 +
 +void DeviceDriver::getRenderAreaGranularity (VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity) const
 +{
 +      m_vk.getRenderAreaGranularity(device, renderPass, pGranularity);
 +}
 +
 +VkResult DeviceDriver::createCommandPool (VkDevice device, const VkCommandPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCommandPool* pCommandPool) const
 +{
 +      return m_vk.createCommandPool(device, pCreateInfo, pAllocator, pCommandPool);
 +}
 +
 +VkResult DeviceDriver::resetCommandPool (VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags) const
 +{
 +      return m_vk.resetCommandPool(device, commandPool, flags);
 +}
 +
 +VkResult DeviceDriver::allocateCommandBuffers (VkDevice device, const VkCommandBufferAllocateInfo* pAllocateInfo, VkCommandBuffer* pCommandBuffers) const
 +{
 +      return m_vk.allocateCommandBuffers(device, pAllocateInfo, pCommandBuffers);
 +}
 +
 +void DeviceDriver::freeCommandBuffers (VkDevice device, VkCommandPool commandPool, deUint32 commandBufferCount, const VkCommandBuffer* pCommandBuffers) const
 +{
 +      m_vk.freeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers);
 +}
 +
 +VkResult DeviceDriver::beginCommandBuffer (VkCommandBuffer commandBuffer, const VkCommandBufferBeginInfo* pBeginInfo) const
 +{
 +      return m_vk.beginCommandBuffer(commandBuffer, pBeginInfo);
 +}
 +
 +VkResult DeviceDriver::endCommandBuffer (VkCommandBuffer commandBuffer) const
 +{
 +      return m_vk.endCommandBuffer(commandBuffer);
 +}
 +
 +VkResult DeviceDriver::resetCommandBuffer (VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags) const
 +{
 +      return m_vk.resetCommandBuffer(commandBuffer, flags);
 +}
 +
 +void DeviceDriver::cmdBindPipeline (VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline) const
 +{
 +      m_vk.cmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline);
 +}
 +
 +void DeviceDriver::cmdSetViewport (VkCommandBuffer commandBuffer, deUint32 firstViewport, deUint32 viewportCount, const VkViewport* pViewports) const
 +{
 +      m_vk.cmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports);
 +}
 +
 +void DeviceDriver::cmdSetScissor (VkCommandBuffer commandBuffer, deUint32 firstScissor, deUint32 scissorCount, const VkRect2D* pScissors) const
 +{
 +      m_vk.cmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors);
 +}
 +
 +void DeviceDriver::cmdSetLineWidth (VkCommandBuffer commandBuffer, float lineWidth) const
 +{
 +      m_vk.cmdSetLineWidth(commandBuffer, lineWidth);
 +}
 +
 +void DeviceDriver::cmdSetDepthBias (VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor) const
 +{
 +      m_vk.cmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor);
 +}
 +
 +void DeviceDriver::cmdSetBlendConstants (VkCommandBuffer commandBuffer, const float blendConstants[4]) const
 +{
 +      m_vk.cmdSetBlendConstants(commandBuffer, blendConstants);
 +}
 +
 +void DeviceDriver::cmdSetDepthBounds (VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds) const
 +{
 +      m_vk.cmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds);
 +}
 +
 +void DeviceDriver::cmdSetStencilCompareMask (VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, deUint32 compareMask) const
 +{
 +      m_vk.cmdSetStencilCompareMask(commandBuffer, faceMask, compareMask);
 +}
 +
 +void DeviceDriver::cmdSetStencilWriteMask (VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, deUint32 writeMask) const
 +{
 +      m_vk.cmdSetStencilWriteMask(commandBuffer, faceMask, writeMask);
 +}
 +
 +void DeviceDriver::cmdSetStencilReference (VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, deUint32 reference) const
 +{
 +      m_vk.cmdSetStencilReference(commandBuffer, faceMask, reference);
 +}
 +
 +void DeviceDriver::cmdBindDescriptorSets (VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, deUint32 firstSet, deUint32 descriptorSetCount, const VkDescriptorSet* pDescriptorSets, deUint32 dynamicOffsetCount, const deUint32* pDynamicOffsets) const
 +{
 +      m_vk.cmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets);
 +}
 +
 +void DeviceDriver::cmdBindIndexBuffer (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType) const
 +{
 +      m_vk.cmdBindIndexBuffer(commandBuffer, buffer, offset, indexType);
 +}
 +
 +void DeviceDriver::cmdBindVertexBuffers (VkCommandBuffer commandBuffer, deUint32 firstBinding, deUint32 bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets) const
 +{
 +      m_vk.cmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets);
 +}
 +
 +void DeviceDriver::cmdDraw (VkCommandBuffer commandBuffer, deUint32 vertexCount, deUint32 instanceCount, deUint32 firstVertex, deUint32 firstInstance) const
 +{
 +      m_vk.cmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance);
 +}
 +
 +void DeviceDriver::cmdDrawIndexed (VkCommandBuffer commandBuffer, deUint32 indexCount, deUint32 instanceCount, deUint32 firstIndex, deInt32 vertexOffset, deUint32 firstInstance) const
 +{
 +      m_vk.cmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance);
 +}
 +
 +void DeviceDriver::cmdDrawIndirect (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, deUint32 drawCount, deUint32 stride) const
 +{
 +      m_vk.cmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride);
 +}
 +
 +void DeviceDriver::cmdDrawIndexedIndirect (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, deUint32 drawCount, deUint32 stride) const
 +{
 +      m_vk.cmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride);
 +}
 +
 +void DeviceDriver::cmdDispatch (VkCommandBuffer commandBuffer, deUint32 groupCountX, deUint32 groupCountY, deUint32 groupCountZ) const
 +{
 +      m_vk.cmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ);
 +}
 +
 +void DeviceDriver::cmdDispatchIndirect (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset) const
 +{
 +      m_vk.cmdDispatchIndirect(commandBuffer, buffer, offset);
 +}
 +
 +void DeviceDriver::cmdCopyBuffer (VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, deUint32 regionCount, const VkBufferCopy* pRegions) const
 +{
 +      m_vk.cmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions);
 +}
 +
 +void DeviceDriver::cmdCopyImage (VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkImageCopy* pRegions) const
 +{
 +      m_vk.cmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions);
 +}
 +
 +void DeviceDriver::cmdBlitImage (VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkImageBlit* pRegions, VkFilter filter) const
 +{
 +      m_vk.cmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter);
 +}
 +
 +void DeviceDriver::cmdCopyBufferToImage (VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkBufferImageCopy* pRegions) const
 +{
 +      m_vk.cmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions);
 +}
 +
 +void DeviceDriver::cmdCopyImageToBuffer (VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, deUint32 regionCount, const VkBufferImageCopy* pRegions) const
 +{
 +      m_vk.cmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions);
 +}
 +
 +void DeviceDriver::cmdUpdateBuffer (VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const void* pData) const
 +{
 +      m_vk.cmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData);
 +}
 +
 +void DeviceDriver::cmdFillBuffer (VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, deUint32 data) const
 +{
 +      m_vk.cmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data);
 +}
 +
 +void DeviceDriver::cmdClearColorImage (VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, deUint32 rangeCount, const VkImageSubresourceRange* pRanges) const
 +{
 +      m_vk.cmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges);
 +}
 +
 +void DeviceDriver::cmdClearDepthStencilImage (VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, deUint32 rangeCount, const VkImageSubresourceRange* pRanges) const
 +{
 +      m_vk.cmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges);
 +}
 +
 +void DeviceDriver::cmdClearAttachments (VkCommandBuffer commandBuffer, deUint32 attachmentCount, const VkClearAttachment* pAttachments, deUint32 rectCount, const VkClearRect* pRects) const
 +{
 +      m_vk.cmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects);
 +}
 +
 +void DeviceDriver::cmdResolveImage (VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkImageResolve* pRegions) const
 +{
 +      m_vk.cmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions);
 +}
 +
 +void DeviceDriver::cmdSetEvent (VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask) const
 +{
 +      m_vk.cmdSetEvent(commandBuffer, event, stageMask);
 +}
 +
 +void DeviceDriver::cmdResetEvent (VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask) const
 +{
 +      m_vk.cmdResetEvent(commandBuffer, event, stageMask);
 +}
 +
 +void DeviceDriver::cmdWaitEvents (VkCommandBuffer commandBuffer, deUint32 eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, deUint32 memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, deUint32 bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, deUint32 imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers) const
 +{
 +      m_vk.cmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers);
 +}
 +
 +void DeviceDriver::cmdPipelineBarrier (VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, deUint32 memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, deUint32 bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, deUint32 imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers) const
 +{
 +      m_vk.cmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers);
 +}
 +
 +void DeviceDriver::cmdBeginQuery (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query, VkQueryControlFlags flags) const
 +{
 +      m_vk.cmdBeginQuery(commandBuffer, queryPool, query, flags);
 +}
 +
 +void DeviceDriver::cmdEndQuery (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query) const
 +{
 +      m_vk.cmdEndQuery(commandBuffer, queryPool, query);
 +}
 +
 +void DeviceDriver::cmdResetQueryPool (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount) const
 +{
 +      m_vk.cmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount);
 +}
 +
 +void DeviceDriver::cmdWriteTimestamp (VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, deUint32 query) const
 +{
 +      m_vk.cmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query);
 +}
 +
 +void DeviceDriver::cmdCopyQueryPoolResults (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags) const
 +{
 +      m_vk.cmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags);
 +}
 +
 +void DeviceDriver::cmdPushConstants (VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, deUint32 offset, deUint32 size, const void* pValues) const
 +{
 +      m_vk.cmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues);
 +}
 +
 +void DeviceDriver::cmdBeginRenderPass (VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents) const
 +{
 +      m_vk.cmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents);
 +}
 +
 +void DeviceDriver::cmdNextSubpass (VkCommandBuffer commandBuffer, VkSubpassContents contents) const
 +{
 +      m_vk.cmdNextSubpass(commandBuffer, contents);
 +}
 +
 +void DeviceDriver::cmdEndRenderPass (VkCommandBuffer commandBuffer) const
 +{
 +      m_vk.cmdEndRenderPass(commandBuffer);
 +}
 +
 +void DeviceDriver::cmdExecuteCommands (VkCommandBuffer commandBuffer, deUint32 commandBufferCount, const VkCommandBuffer* pCommandBuffers) const
 +{
 +      m_vk.cmdExecuteCommands(commandBuffer, commandBufferCount, pCommandBuffers);
 +}
 +
- void DeviceDriver::getImageSparseMemoryRequirements2 (VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, deUint32* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) const
- {
-       m_vk.getImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
- }
 +VkResult DeviceDriver::bindBufferMemory2 (VkDevice device, deUint32 bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos) const
 +{
 +      return m_vk.bindBufferMemory2(device, bindInfoCount, pBindInfos);
 +}
 +
 +VkResult DeviceDriver::bindImageMemory2 (VkDevice device, deUint32 bindInfoCount, const VkBindImageMemoryInfo* pBindInfos) const
 +{
 +      return m_vk.bindImageMemory2(device, bindInfoCount, pBindInfos);
 +}
 +
 +void DeviceDriver::getDeviceGroupPeerMemoryFeatures (VkDevice device, deUint32 heapIndex, deUint32 localDeviceIndex, deUint32 remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures) const
 +{
 +      m_vk.getDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures);
 +}
 +
 +void DeviceDriver::cmdSetDeviceMask (VkCommandBuffer commandBuffer, deUint32 deviceMask) const
 +{
 +      m_vk.cmdSetDeviceMask(commandBuffer, deviceMask);
 +}
 +
 +void DeviceDriver::cmdDispatchBase (VkCommandBuffer commandBuffer, deUint32 baseGroupX, deUint32 baseGroupY, deUint32 baseGroupZ, deUint32 groupCountX, deUint32 groupCountY, deUint32 groupCountZ) const
 +{
 +      m_vk.cmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ);
 +}
 +
 +void DeviceDriver::getImageMemoryRequirements2 (VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements) const
 +{
 +      m_vk.getImageMemoryRequirements2(device, pInfo, pMemoryRequirements);
 +}
 +
 +void DeviceDriver::getBufferMemoryRequirements2 (VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements) const
 +{
 +      m_vk.getBufferMemoryRequirements2(device, pInfo, pMemoryRequirements);
 +}
 +
- void DeviceDriver::cmdSetFragmentShadingRateKHR (VkCommandBuffer commandBuffer, const VkExtent2D* pFragmentSize, const VkFragmentShadingRateCombinerOpKHR combinerOps[2]) const
 +void DeviceDriver::getDeviceQueue2 (VkDevice device, const VkDeviceQueueInfo2* pQueueInfo, VkQueue* pQueue) const
 +{
 +      m_vk.getDeviceQueue2(device, pQueueInfo, pQueue);
 +}
 +
 +VkResult DeviceDriver::createSamplerYcbcrConversion (VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion) const
 +{
 +      return m_vk.createSamplerYcbcrConversion(device, pCreateInfo, pAllocator, pYcbcrConversion);
 +}
 +
 +void DeviceDriver::destroySamplerYcbcrConversion (VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator) const
 +{
 +      m_vk.destroySamplerYcbcrConversion(device, ycbcrConversion, pAllocator);
 +}
 +
 +void DeviceDriver::getDescriptorSetLayoutSupport (VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport) const
 +{
 +      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);
 +}
 +
++void DeviceDriver::getCommandPoolMemoryConsumption (VkDevice device, VkCommandPool commandPool, VkCommandBuffer commandBuffer, VkCommandPoolMemoryConsumption* pConsumption) const
++{
++      m_vk.getCommandPoolMemoryConsumption(device, commandPool, commandBuffer, pConsumption);
++}
++
++VkResult DeviceDriver::getFaultData (VkDevice device, VkFaultQueryBehavior faultQueryBehavior, VkBool32* pUnrecordedFaults, deUint32* pFaultCount, VkFaultData* pFaults) const
++{
++      return m_vk.getFaultData(device, faultQueryBehavior, pUnrecordedFaults, pFaultCount, pFaults);
++}
++
 +VkResult DeviceDriver::createSwapchainKHR (VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain) const
 +{
 +      return m_vk.createSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain);
 +}
 +
 +VkResult DeviceDriver::getSwapchainImagesKHR (VkDevice device, VkSwapchainKHR swapchain, deUint32* pSwapchainImageCount, VkImage* pSwapchainImages) const
 +{
 +      return m_vk.getSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages);
 +}
 +
 +VkResult DeviceDriver::acquireNextImageKHR (VkDevice device, VkSwapchainKHR swapchain, deUint64 timeout, VkSemaphore semaphore, VkFence fence, deUint32* pImageIndex) const
 +{
 +      return m_vk.acquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex);
 +}
 +
 +VkResult DeviceDriver::queuePresentKHR (VkQueue queue, const VkPresentInfoKHR* pPresentInfo) const
 +{
 +      return m_vk.queuePresentKHR(queue, pPresentInfo);
 +}
 +
 +VkResult DeviceDriver::getDeviceGroupPresentCapabilitiesKHR (VkDevice device, VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities) const
 +{
 +      return m_vk.getDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities);
 +}
 +
 +VkResult DeviceDriver::getDeviceGroupSurfacePresentModesKHR (VkDevice device, VkSurfaceKHR surface, VkDeviceGroupPresentModeFlagsKHR* pModes) const
 +{
 +      return m_vk.getDeviceGroupSurfacePresentModesKHR(device, surface, pModes);
 +}
 +
 +VkResult DeviceDriver::acquireNextImage2KHR (VkDevice device, const VkAcquireNextImageInfoKHR* pAcquireInfo, deUint32* pImageIndex) const
 +{
 +      return m_vk.acquireNextImage2KHR(device, pAcquireInfo, pImageIndex);
 +}
 +
 +VkResult DeviceDriver::createSharedSwapchainsKHR (VkDevice device, deUint32 swapchainCount, const VkSwapchainCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchains) const
 +{
 +      return m_vk.createSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains);
 +}
 +
 +VkResult DeviceDriver::getMemoryFdKHR (VkDevice device, const VkMemoryGetFdInfoKHR* pGetFdInfo, int* pFd) const
 +{
 +      return m_vk.getMemoryFdKHR(device, pGetFdInfo, pFd);
 +}
 +
 +VkResult DeviceDriver::getMemoryFdPropertiesKHR (VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, int fd, VkMemoryFdPropertiesKHR* pMemoryFdProperties) const
 +{
 +      return m_vk.getMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties);
 +}
 +
 +VkResult DeviceDriver::importSemaphoreFdKHR (VkDevice device, const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo) const
 +{
 +      return m_vk.importSemaphoreFdKHR(device, pImportSemaphoreFdInfo);
 +}
 +
 +VkResult DeviceDriver::getSemaphoreFdKHR (VkDevice device, const VkSemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd) const
 +{
 +      return m_vk.getSemaphoreFdKHR(device, pGetFdInfo, pFd);
 +}
 +
 +VkResult DeviceDriver::getSwapchainStatusKHR (VkDevice device, VkSwapchainKHR swapchain) const
 +{
 +      return m_vk.getSwapchainStatusKHR(device, swapchain);
 +}
 +
 +VkResult DeviceDriver::importFenceFdKHR (VkDevice device, const VkImportFenceFdInfoKHR* pImportFenceFdInfo) const
 +{
 +      return m_vk.importFenceFdKHR(device, pImportFenceFdInfo);
 +}
 +
 +VkResult DeviceDriver::getFenceFdKHR (VkDevice device, const VkFenceGetFdInfoKHR* pGetFdInfo, int* pFd) const
 +{
 +      return m_vk.getFenceFdKHR(device, pGetFdInfo, pFd);
 +}
 +
-       m_vk.cmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps);
++VkResult DeviceDriver::acquireProfilingLockKHR (VkDevice device, const VkAcquireProfilingLockInfoKHR* pInfo) const
 +{
- VkResult DeviceDriver::getFaultDataKHR (VkDevice device, VkFaultQueryBehavior faultQueryBehavior, VkBool32* pUnrecordedFaults, deUint32* pFaultCount, VkFaultData* pFaults) const
++      return m_vk.acquireProfilingLockKHR(device, pInfo);
 +}
 +
-       return m_vk.getFaultDataKHR(device, faultQueryBehavior, pUnrecordedFaults, pFaultCount, pFaults);
++void DeviceDriver::releaseProfilingLockKHR (VkDevice device) const
 +{
++      m_vk.releaseProfilingLockKHR(device);
++}
++
++void DeviceDriver::cmdSetFragmentShadingRateKHR (VkCommandBuffer commandBuffer, const VkExtent2D* pFragmentSize, const VkFragmentShadingRateCombinerOpKHR combinerOps[2]) const
++{
++      m_vk.cmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps);
 +}
 +
 +void DeviceDriver::cmdRefreshObjectsKHR (VkCommandBuffer commandBuffer, const VkRefreshObjectListKHR* pRefreshObjects) const
 +{
 +      m_vk.cmdRefreshObjectsKHR(commandBuffer, pRefreshObjects);
 +}
 +
++void DeviceDriver::cmdSetEvent2KHR (VkCommandBuffer commandBuffer, VkEvent event, const VkDependencyInfoKHR* pDependencyInfo) const
++{
++      m_vk.cmdSetEvent2KHR(commandBuffer, event, pDependencyInfo);
++}
++
++void DeviceDriver::cmdResetEvent2KHR (VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags2KHR stageMask) const
++{
++      m_vk.cmdResetEvent2KHR(commandBuffer, event, stageMask);
++}
++
++void DeviceDriver::cmdWaitEvents2KHR (VkCommandBuffer commandBuffer, deUint32 eventCount, const VkEvent* pEvents, const VkDependencyInfoKHR* pDependencyInfos) const
++{
++      m_vk.cmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos);
++}
++
++void DeviceDriver::cmdPipelineBarrier2KHR (VkCommandBuffer commandBuffer, const VkDependencyInfoKHR* pDependencyInfo) const
++{
++      m_vk.cmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo);
++}
++
++void DeviceDriver::cmdWriteTimestamp2KHR (VkCommandBuffer commandBuffer, VkPipelineStageFlags2KHR stage, VkQueryPool queryPool, deUint32 query) const
++{
++      m_vk.cmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query);
++}
++
++VkResult DeviceDriver::queueSubmit2KHR (VkQueue queue, deUint32 submitCount, const VkSubmitInfo2KHR* pSubmits, VkFence fence) const
++{
++      return m_vk.queueSubmit2KHR(queue, submitCount, pSubmits, fence);
++}
++
++void DeviceDriver::cmdWriteBufferMarker2AMD (VkCommandBuffer commandBuffer, VkPipelineStageFlags2KHR stage, VkBuffer dstBuffer, VkDeviceSize dstOffset, deUint32 marker) const
++{
++      m_vk.cmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker);
++}
++
++void DeviceDriver::getQueueCheckpointData2NV (VkQueue queue, deUint32* pCheckpointDataCount, VkCheckpointData2NV* pCheckpointData) const
++{
++      m_vk.getQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData);
++}
++
 +void DeviceDriver::cmdCopyBuffer2KHR (VkCommandBuffer commandBuffer, const VkCopyBufferInfo2KHR* pCopyBufferInfo) const
 +{
 +      m_vk.cmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo);
 +}
 +
 +void DeviceDriver::cmdCopyImage2KHR (VkCommandBuffer commandBuffer, const VkCopyImageInfo2KHR* pCopyImageInfo) const
 +{
 +      m_vk.cmdCopyImage2KHR(commandBuffer, pCopyImageInfo);
 +}
 +
 +void DeviceDriver::cmdCopyBufferToImage2KHR (VkCommandBuffer commandBuffer, const VkCopyBufferToImageInfo2KHR* pCopyBufferToImageInfo) const
 +{
 +      m_vk.cmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo);
 +}
 +
 +void DeviceDriver::cmdCopyImageToBuffer2KHR (VkCommandBuffer commandBuffer, const VkCopyImageToBufferInfo2KHR* pCopyImageToBufferInfo) const
 +{
 +      m_vk.cmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo);
 +}
 +
 +void DeviceDriver::cmdBlitImage2KHR (VkCommandBuffer commandBuffer, const VkBlitImageInfo2KHR* pBlitImageInfo) const
 +{
 +      m_vk.cmdBlitImage2KHR(commandBuffer, pBlitImageInfo);
 +}
 +
 +void DeviceDriver::cmdResolveImage2KHR (VkCommandBuffer commandBuffer, const VkResolveImageInfo2KHR* pResolveImageInfo) const
 +{
 +      m_vk.cmdResolveImage2KHR(commandBuffer, pResolveImageInfo);
 +}
 +
 +VkResult DeviceDriver::displayPowerControlEXT (VkDevice device, VkDisplayKHR display, const VkDisplayPowerInfoEXT* pDisplayPowerInfo) const
 +{
 +      return m_vk.displayPowerControlEXT(device, display, pDisplayPowerInfo);
 +}
 +
 +VkResult DeviceDriver::registerDeviceEventEXT (VkDevice device, const VkDeviceEventInfoEXT* pDeviceEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence) const
 +{
 +      return m_vk.registerDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence);
 +}
 +
 +VkResult DeviceDriver::registerDisplayEventEXT (VkDevice device, VkDisplayKHR display, const VkDisplayEventInfoEXT* pDisplayEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence) const
 +{
 +      return m_vk.registerDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence);
 +}
 +
 +VkResult DeviceDriver::getSwapchainCounterEXT (VkDevice device, VkSwapchainKHR swapchain, VkSurfaceCounterFlagBitsEXT counter, deUint64* pCounterValue) const
 +{
 +      return m_vk.getSwapchainCounterEXT(device, swapchain, counter, pCounterValue);
 +}
 +
 +void DeviceDriver::cmdSetDiscardRectangleEXT (VkCommandBuffer commandBuffer, deUint32 firstDiscardRectangle, deUint32 discardRectangleCount, const VkRect2D* pDiscardRectangles) const
 +{
 +      m_vk.cmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles);
 +}
 +
 +void DeviceDriver::setHdrMetadataEXT (VkDevice device, deUint32 swapchainCount, const VkSwapchainKHR* pSwapchains, const VkHdrMetadataEXT* pMetadata) const
 +{
 +      m_vk.setHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata);
 +}
 +
++VkResult DeviceDriver::setDebugUtilsObjectNameEXT (VkDevice device, const VkDebugUtilsObjectNameInfoEXT* pNameInfo) const
++{
++      return m_vk.setDebugUtilsObjectNameEXT(device, pNameInfo);
++}
++
++VkResult DeviceDriver::setDebugUtilsObjectTagEXT (VkDevice device, const VkDebugUtilsObjectTagInfoEXT* pTagInfo) const
++{
++      return m_vk.setDebugUtilsObjectTagEXT(device, pTagInfo);
++}
++
++void DeviceDriver::queueBeginDebugUtilsLabelEXT (VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo) const
++{
++      m_vk.queueBeginDebugUtilsLabelEXT(queue, pLabelInfo);
++}
++
++void DeviceDriver::queueEndDebugUtilsLabelEXT (VkQueue queue) const
++{
++      m_vk.queueEndDebugUtilsLabelEXT(queue);
++}
++
++void DeviceDriver::queueInsertDebugUtilsLabelEXT (VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo) const
++{
++      m_vk.queueInsertDebugUtilsLabelEXT(queue, pLabelInfo);
++}
++
++void DeviceDriver::cmdBeginDebugUtilsLabelEXT (VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo) const
++{
++      m_vk.cmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo);
++}
++
++void DeviceDriver::cmdEndDebugUtilsLabelEXT (VkCommandBuffer commandBuffer) const
++{
++      m_vk.cmdEndDebugUtilsLabelEXT(commandBuffer);
++}
++
++void DeviceDriver::cmdInsertDebugUtilsLabelEXT (VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo) const
++{
++      m_vk.cmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo);
++}
++
 +void DeviceDriver::cmdSetSampleLocationsEXT (VkCommandBuffer commandBuffer, const VkSampleLocationsInfoEXT* pSampleLocationsInfo) const
 +{
 +      m_vk.cmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo);
 +}
 +
 +VkResult DeviceDriver::getImageDrmFormatModifierPropertiesEXT (VkDevice device, VkImage image, VkImageDrmFormatModifierPropertiesEXT* pProperties) const
 +{
 +      return m_vk.getImageDrmFormatModifierPropertiesEXT(device, image, pProperties);
 +}
 +
 +VkResult DeviceDriver::getMemoryHostPointerPropertiesEXT (VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, const void* pHostPointer, VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties) const
 +{
 +      return m_vk.getMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties);
 +}
 +
 +VkResult DeviceDriver::getCalibratedTimestampsEXT (VkDevice device, deUint32 timestampCount, const VkCalibratedTimestampInfoEXT* pTimestampInfos, deUint64* pTimestamps, deUint64* pMaxDeviation) const
 +{
 +      return m_vk.getCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation);
 +}
 +
 +void DeviceDriver::cmdSetLineStippleEXT (VkCommandBuffer commandBuffer, deUint32 lineStippleFactor, deUint16 lineStipplePattern) const
 +{
 +      m_vk.cmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern);
 +}
 +
 +void DeviceDriver::cmdSetCullModeEXT (VkCommandBuffer commandBuffer, VkCullModeFlags cullMode) const
 +{
 +      m_vk.cmdSetCullModeEXT(commandBuffer, cullMode);
 +}
 +
 +void DeviceDriver::cmdSetFrontFaceEXT (VkCommandBuffer commandBuffer, VkFrontFace frontFace) const
 +{
 +      m_vk.cmdSetFrontFaceEXT(commandBuffer, frontFace);
 +}
 +
 +void DeviceDriver::cmdSetPrimitiveTopologyEXT (VkCommandBuffer commandBuffer, VkPrimitiveTopology primitiveTopology) const
 +{
 +      m_vk.cmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology);
 +}
 +
 +void DeviceDriver::cmdSetViewportWithCountEXT (VkCommandBuffer commandBuffer, deUint32 viewportCount, const VkViewport* pViewports) const
 +{
 +      m_vk.cmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports);
 +}
 +
 +void DeviceDriver::cmdSetScissorWithCountEXT (VkCommandBuffer commandBuffer, deUint32 scissorCount, const VkRect2D* pScissors) const
 +{
 +      m_vk.cmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors);
 +}
 +
 +void DeviceDriver::cmdBindVertexBuffers2EXT (VkCommandBuffer commandBuffer, deUint32 firstBinding, deUint32 bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes, const VkDeviceSize* pStrides) const
 +{
 +      m_vk.cmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides);
 +}
 +
 +void DeviceDriver::cmdSetDepthTestEnableEXT (VkCommandBuffer commandBuffer, VkBool32 depthTestEnable) const
 +{
 +      m_vk.cmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable);
 +}
 +
 +void DeviceDriver::cmdSetDepthWriteEnableEXT (VkCommandBuffer commandBuffer, VkBool32 depthWriteEnable) const
 +{
 +      m_vk.cmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable);
 +}
 +
 +void DeviceDriver::cmdSetDepthCompareOpEXT (VkCommandBuffer commandBuffer, VkCompareOp depthCompareOp) const
 +{
 +      m_vk.cmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp);
 +}
 +
 +void DeviceDriver::cmdSetDepthBoundsTestEnableEXT (VkCommandBuffer commandBuffer, VkBool32 depthBoundsTestEnable) const
 +{
 +      m_vk.cmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable);
 +}
 +
 +void DeviceDriver::cmdSetStencilTestEnableEXT (VkCommandBuffer commandBuffer, VkBool32 stencilTestEnable) const
 +{
 +      m_vk.cmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable);
 +}
 +
 +void DeviceDriver::cmdSetStencilOpEXT (VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, VkStencilOp failOp, VkStencilOp passOp, VkStencilOp depthFailOp, VkCompareOp compareOp) const
 +{
 +      m_vk.cmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp);
 +}
++
++void DeviceDriver::cmdSetVertexInputEXT (VkCommandBuffer commandBuffer, deUint32 vertexBindingDescriptionCount, const VkVertexInputBindingDescription2EXT* pVertexBindingDescriptions, deUint32 vertexAttributeDescriptionCount, const VkVertexInputAttributeDescription2EXT* pVertexAttributeDescriptions) const
++{
++      m_vk.cmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions);
++}
++
++void DeviceDriver::cmdSetPatchControlPointsEXT (VkCommandBuffer commandBuffer, deUint32 patchControlPoints) const
++{
++      m_vk.cmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints);
++}
++
++void DeviceDriver::cmdSetRasterizerDiscardEnableEXT (VkCommandBuffer commandBuffer, VkBool32 rasterizerDiscardEnable) const
++{
++      m_vk.cmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable);
++}
++
++void DeviceDriver::cmdSetDepthBiasEnableEXT (VkCommandBuffer commandBuffer, VkBool32 depthBiasEnable) const
++{
++      m_vk.cmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable);
++}
++
++void DeviceDriver::cmdSetLogicOpEXT (VkCommandBuffer commandBuffer, VkLogicOp logicOp) const
++{
++      m_vk.cmdSetLogicOpEXT(commandBuffer, logicOp);
++}
++
++void DeviceDriver::cmdSetPrimitiveRestartEnableEXT (VkCommandBuffer commandBuffer, VkBool32 primitiveRestartEnable) const
++{
++      m_vk.cmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable);
++}
++
++void DeviceDriver::cmdSetColorWriteEnableEXT (VkCommandBuffer commandBuffer, deUint32 attachmentCount, const VkBool32* pColorWriteEnables) const
++{
++      m_vk.cmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables);
++}
index 0f0b099,0000000..7b29a81
mode 100644,000000..100644
--- /dev/null
@@@ -1,74 -1,0 +1,78 @@@
 +/* WARNING: This is auto-generated file. Do not modify, since changes will
 + * be lost! Modify the generating script instead.
 + */
 +static const char* s_allowedDeviceKhrExtensions[] =
 +{
 +      "VK_KHR_swapchain",
 +      "VK_KHR_swapchain_mutable_format",
 +      "VK_KHR_display_swapchain",
 +      "VK_KHR_sampler_mirror_clamp_to_edge",
 +      "VK_KHR_multiview",
 +      "VK_KHR_device_group",
 +      "VK_KHR_shader_draw_parameters",
 +      "VK_KHR_maintenance1",
 +      "VK_KHR_external_memory",
 +      "VK_KHR_external_memory_win32",
 +      "VK_KHR_external_memory_fd",
 +      "VK_KHR_win32_keyed_mutex",
 +      "VK_KHR_external_semaphore",
 +      "VK_KHR_external_semaphore_win32",
 +      "VK_KHR_external_semaphore_fd",
 +      "VK_KHR_push_descriptor",
 +      "VK_KHR_shader_float16_int8",
 +      "VK_KHR_16bit_storage",
 +      "VK_KHR_incremental_present",
 +      "VK_KHR_8bit_storage",
 +      "VK_KHR_descriptor_update_template",
 +      "VK_KHR_create_renderpass2",
 +      "VK_KHR_shared_presentable_image",
 +      "VK_KHR_external_fence",
 +      "VK_KHR_external_fence_win32",
 +      "VK_KHR_external_fence_fd",
 +      "VK_KHR_maintenance2",
 +      "VK_KHR_variable_pointers",
 +      "VK_KHR_dedicated_allocation",
 +      "VK_KHR_storage_buffer_storage_class",
 +      "VK_KHR_relaxed_block_layout",
 +      "VK_KHR_get_memory_requirements2",
 +      "VK_KHR_image_format_list",
 +      "VK_KHR_sampler_ycbcr_conversion",
 +      "VK_KHR_bind_memory2",
 +      "VK_KHR_maintenance3",
 +      "VK_KHR_driver_properties",
 +      "VK_KHR_shader_float_controls",
 +      "VK_KHR_depth_stencil_resolve",
 +      "VK_KHR_draw_indirect_count",
 +      "VK_KHR_shader_atomic_int64",
 +      "VK_KHR_vulkan_memory_model",
 +      "VK_KHR_uniform_buffer_standard_layout",
 +      "VK_KHR_imageless_framebuffer",
 +      "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",
 +      "VK_KHR_shader_non_semantic_info",
 +      "VK_KHR_copy_commands2",
 +      "VK_KHR_shader_terminate_invocation",
 +      "VK_KHR_ray_tracing_pipeline",
 +      "VK_KHR_ray_query",
 +      "VK_KHR_acceleration_structure",
 +      "VK_KHR_pipeline_library",
 +      "VK_KHR_deferred_host_operations",
 +      "VK_KHR_fragment_shading_rate",
++      "VK_KHR_zero_initialize_workgroup_memory",
++      "VK_KHR_workgroup_memory_explicit_layout",
++      "VK_KHR_synchronization2",
++      "VK_EXT_color_write_enable",
 +};
 +
index eba9fe0,0000000..922bf37
mode 100644,000000..100644
--- /dev/null
@@@ -1,311 -1,0 +1,331 @@@
- #define VK_KHR_PIPELINE_IDENTIFIER_EXTENSION_NAME "VK_KHR_pipeline_identifier"
 +/* WARNING: This is auto-generated file. Do not modify, since changes will
 + * be lost! Modify the generating script instead.
 + */
 +#include "vkDeviceFeatures.hpp"
 +
 +namespace vk
 +{
 +#define DECL_16BIT_STORAGE_EXTENSION_NAME "not_existent_feature"
 +#define VK_EXT_4444_FORMATS_EXTENSION_NAME "VK_EXT_4444_formats"
 +#define DECL_8BIT_STORAGE_EXTENSION_NAME "not_existent_feature"
 +#define VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME "VK_EXT_astc_decode_mode"
 +#define VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME "VK_EXT_blend_operation_advanced"
 +#define DECL_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME "not_existent_feature"
++#define VK_EXT_COLOR_WRITE_ENABLE_EXTENSION_NAME "VK_EXT_color_write_enable"
 +#define VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME "VK_EXT_custom_border_color"
 +#define VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME "VK_EXT_depth_clip_enable"
 +#define DECL_DESCRIPTOR_INDEXING_EXTENSION_NAME "not_existent_feature"
 +#define VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME "VK_EXT_extended_dynamic_state"
++#define VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME "VK_EXT_extended_dynamic_state2"
 +#define VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME "VK_EXT_fragment_shader_interlock"
 +#define VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME "VK_KHR_fragment_shading_rate"
 +#define DECL_HOST_QUERY_RESET_EXTENSION_NAME "not_existent_feature"
 +#define DECL_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME "not_existent_feature"
 +#define VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME "VK_EXT_image_robustness"
 +#define VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME "VK_EXT_index_type_uint8"
 +#define VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME "VK_EXT_line_rasterization"
 +#define DECL_MULTIVIEW_EXTENSION_NAME "not_existent_feature"
- template<> void initFeatureFromBlob<VkPhysicalDevicePipelineIdentifierFeatures>(VkPhysicalDevicePipelineIdentifierFeatures&, const AllFeaturesBlobs&) {}
++#define VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME "VK_KHR_performance_query"
 +#define DECL_PROTECTED_MEMORY_EXTENSION_NAME "not_existent_feature"
 +#define VK_EXT_ROBUSTNESS_2_EXTENSION_NAME "VK_EXT_robustness2"
 +#define DECL_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME "not_existent_feature"
 +#define DECL_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME "not_existent_feature"
 +#define DECL_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME "not_existent_feature"
 +#define VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME "VK_EXT_shader_atomic_float"
 +#define DECL_SHADER_ATOMIC_INT64_EXTENSION_NAME "not_existent_feature"
 +#define VK_KHR_SHADER_CLOCK_EXTENSION_NAME "VK_KHR_shader_clock"
 +#define VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME "VK_EXT_shader_demote_to_helper_invocation"
 +#define DECL_SHADER_DRAW_PARAMETERS_EXTENSION_NAME "not_existent_feature"
 +#define DECL_SHADER_FLOAT16_INT8_EXTENSION_NAME "not_existent_feature"
 +#define VK_EXT_SHADER_IMAGE_ATOMIC_INT64_EXTENSION_NAME "VK_EXT_shader_image_atomic_int64"
 +#define DECL_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME "not_existent_feature"
 +#define VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME "VK_KHR_shader_terminate_invocation"
 +#define VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME "VK_EXT_subgroup_size_control"
++#define VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME "VK_KHR_synchronization2"
 +#define VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME "VK_EXT_texel_buffer_alignment"
 +#define VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME "VK_EXT_texture_compression_astc_hdr"
 +#define DECL_TIMELINE_SEMAPHORE_EXTENSION_NAME "not_existent_feature"
 +#define DECL_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME "not_existent_feature"
 +#define DECL_VARIABLE_POINTERS_EXTENSION_NAME "not_existent_feature"
 +#define VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME "VK_EXT_vertex_attribute_divisor"
++#define VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME "VK_EXT_vertex_input_dynamic_state"
 +#define DECL_VULKAN_MEMORY_MODEL_EXTENSION_NAME "not_existent_feature"
 +#define DECL_VULKAN_SC_1_0_EXTENSION_NAME "not_existent_feature"
++#define DECL_EXT_YCBCR_2_PLANE_444_FORMATS_EXTENSION_NAME "not_existent_feature"
 +#define VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME "VK_EXT_ycbcr_image_arrays"
 +
 +
 +template<> void initFeatureFromBlob<VkPhysicalDevice16BitStorageFeatures>(VkPhysicalDevice16BitStorageFeatures& featureType, const AllFeaturesBlobs& allFeaturesBlobs)
 +{
 +      featureType.storageBuffer16BitAccess = allFeaturesBlobs.vk11.storageBuffer16BitAccess;
 +      featureType.uniformAndStorageBuffer16BitAccess = allFeaturesBlobs.vk11.uniformAndStorageBuffer16BitAccess;
 +      featureType.storagePushConstant16 = allFeaturesBlobs.vk11.storagePushConstant16;
 +      featureType.storageInputOutput16 = allFeaturesBlobs.vk11.storageInputOutput16;
 +}
 +template<> void initFeatureFromBlob<VkPhysicalDeviceMultiviewFeatures>(VkPhysicalDeviceMultiviewFeatures& featureType, const AllFeaturesBlobs& allFeaturesBlobs)
 +{
 +      featureType.multiview = allFeaturesBlobs.vk11.multiview;
 +      featureType.multiviewGeometryShader = allFeaturesBlobs.vk11.multiviewGeometryShader;
 +      featureType.multiviewTessellationShader = allFeaturesBlobs.vk11.multiviewTessellationShader;
 +}
 +template<> void initFeatureFromBlob<VkPhysicalDeviceVariablePointersFeatures>(VkPhysicalDeviceVariablePointersFeatures& featureType, const AllFeaturesBlobs& allFeaturesBlobs)
 +{
 +      featureType.variablePointersStorageBuffer = allFeaturesBlobs.vk11.variablePointersStorageBuffer;
 +      featureType.variablePointers = allFeaturesBlobs.vk11.variablePointers;
 +}
 +template<> void initFeatureFromBlob<VkPhysicalDeviceProtectedMemoryFeatures>(VkPhysicalDeviceProtectedMemoryFeatures& featureType, const AllFeaturesBlobs& allFeaturesBlobs)
 +{
 +      featureType.protectedMemory = allFeaturesBlobs.vk11.protectedMemory;
 +}
 +template<> void initFeatureFromBlob<VkPhysicalDeviceSamplerYcbcrConversionFeatures>(VkPhysicalDeviceSamplerYcbcrConversionFeatures& featureType, const AllFeaturesBlobs& allFeaturesBlobs)
 +{
 +      featureType.samplerYcbcrConversion = allFeaturesBlobs.vk11.samplerYcbcrConversion;
 +}
 +template<> void initFeatureFromBlob<VkPhysicalDeviceShaderDrawParametersFeatures>(VkPhysicalDeviceShaderDrawParametersFeatures& featureType, const AllFeaturesBlobs& allFeaturesBlobs)
 +{
 +      featureType.shaderDrawParameters = allFeaturesBlobs.vk11.shaderDrawParameters;
 +}
 +template<> void initFeatureFromBlob<VkPhysicalDevice8BitStorageFeatures>(VkPhysicalDevice8BitStorageFeatures& featureType, const AllFeaturesBlobs& allFeaturesBlobs)
 +{
 +      featureType.storageBuffer8BitAccess = allFeaturesBlobs.vk12.storageBuffer8BitAccess;
 +      featureType.uniformAndStorageBuffer8BitAccess = allFeaturesBlobs.vk12.uniformAndStorageBuffer8BitAccess;
 +      featureType.storagePushConstant8 = allFeaturesBlobs.vk12.storagePushConstant8;
 +}
 +template<> void initFeatureFromBlob<VkPhysicalDeviceShaderAtomicInt64Features>(VkPhysicalDeviceShaderAtomicInt64Features& featureType, const AllFeaturesBlobs& allFeaturesBlobs)
 +{
 +      featureType.shaderBufferInt64Atomics = allFeaturesBlobs.vk12.shaderBufferInt64Atomics;
 +      featureType.shaderSharedInt64Atomics = allFeaturesBlobs.vk12.shaderSharedInt64Atomics;
 +}
 +template<> void initFeatureFromBlob<VkPhysicalDeviceShaderFloat16Int8Features>(VkPhysicalDeviceShaderFloat16Int8Features& featureType, const AllFeaturesBlobs& allFeaturesBlobs)
 +{
 +      featureType.shaderFloat16 = allFeaturesBlobs.vk12.shaderFloat16;
 +      featureType.shaderInt8 = allFeaturesBlobs.vk12.shaderInt8;
 +}
 +template<> void initFeatureFromBlob<VkPhysicalDeviceDescriptorIndexingFeatures>(VkPhysicalDeviceDescriptorIndexingFeatures& featureType, const AllFeaturesBlobs& allFeaturesBlobs)
 +{
 +      featureType.shaderInputAttachmentArrayDynamicIndexing = allFeaturesBlobs.vk12.shaderInputAttachmentArrayDynamicIndexing;
 +      featureType.shaderUniformTexelBufferArrayDynamicIndexing = allFeaturesBlobs.vk12.shaderUniformTexelBufferArrayDynamicIndexing;
 +      featureType.shaderStorageTexelBufferArrayDynamicIndexing = allFeaturesBlobs.vk12.shaderStorageTexelBufferArrayDynamicIndexing;
 +      featureType.shaderUniformBufferArrayNonUniformIndexing = allFeaturesBlobs.vk12.shaderUniformBufferArrayNonUniformIndexing;
 +      featureType.shaderSampledImageArrayNonUniformIndexing = allFeaturesBlobs.vk12.shaderSampledImageArrayNonUniformIndexing;
 +      featureType.shaderStorageBufferArrayNonUniformIndexing = allFeaturesBlobs.vk12.shaderStorageBufferArrayNonUniformIndexing;
 +      featureType.shaderStorageImageArrayNonUniformIndexing = allFeaturesBlobs.vk12.shaderStorageImageArrayNonUniformIndexing;
 +      featureType.shaderInputAttachmentArrayNonUniformIndexing = allFeaturesBlobs.vk12.shaderInputAttachmentArrayNonUniformIndexing;
 +      featureType.shaderUniformTexelBufferArrayNonUniformIndexing = allFeaturesBlobs.vk12.shaderUniformTexelBufferArrayNonUniformIndexing;
 +      featureType.shaderStorageTexelBufferArrayNonUniformIndexing = allFeaturesBlobs.vk12.shaderStorageTexelBufferArrayNonUniformIndexing;
 +      featureType.descriptorBindingUniformBufferUpdateAfterBind = allFeaturesBlobs.vk12.descriptorBindingUniformBufferUpdateAfterBind;
 +      featureType.descriptorBindingSampledImageUpdateAfterBind = allFeaturesBlobs.vk12.descriptorBindingSampledImageUpdateAfterBind;
 +      featureType.descriptorBindingStorageImageUpdateAfterBind = allFeaturesBlobs.vk12.descriptorBindingStorageImageUpdateAfterBind;
 +      featureType.descriptorBindingStorageBufferUpdateAfterBind = allFeaturesBlobs.vk12.descriptorBindingStorageBufferUpdateAfterBind;
 +      featureType.descriptorBindingUniformTexelBufferUpdateAfterBind = allFeaturesBlobs.vk12.descriptorBindingUniformTexelBufferUpdateAfterBind;
 +      featureType.descriptorBindingStorageTexelBufferUpdateAfterBind = allFeaturesBlobs.vk12.descriptorBindingStorageTexelBufferUpdateAfterBind;
 +      featureType.descriptorBindingUpdateUnusedWhilePending = allFeaturesBlobs.vk12.descriptorBindingUpdateUnusedWhilePending;
 +      featureType.descriptorBindingPartiallyBound = allFeaturesBlobs.vk12.descriptorBindingPartiallyBound;
 +      featureType.descriptorBindingVariableDescriptorCount = allFeaturesBlobs.vk12.descriptorBindingVariableDescriptorCount;
 +      featureType.runtimeDescriptorArray = allFeaturesBlobs.vk12.runtimeDescriptorArray;
 +}
 +template<> void initFeatureFromBlob<VkPhysicalDeviceScalarBlockLayoutFeatures>(VkPhysicalDeviceScalarBlockLayoutFeatures& featureType, const AllFeaturesBlobs& allFeaturesBlobs)
 +{
 +      featureType.scalarBlockLayout = allFeaturesBlobs.vk12.scalarBlockLayout;
 +}
 +template<> void initFeatureFromBlob<VkPhysicalDeviceVulkanMemoryModelFeatures>(VkPhysicalDeviceVulkanMemoryModelFeatures& featureType, const AllFeaturesBlobs& allFeaturesBlobs)
 +{
 +      featureType.vulkanMemoryModel = allFeaturesBlobs.vk12.vulkanMemoryModel;
 +      featureType.vulkanMemoryModelDeviceScope = allFeaturesBlobs.vk12.vulkanMemoryModelDeviceScope;
 +      featureType.vulkanMemoryModelAvailabilityVisibilityChains = allFeaturesBlobs.vk12.vulkanMemoryModelAvailabilityVisibilityChains;
 +}
 +template<> void initFeatureFromBlob<VkPhysicalDeviceImagelessFramebufferFeatures>(VkPhysicalDeviceImagelessFramebufferFeatures& featureType, const AllFeaturesBlobs& allFeaturesBlobs)
 +{
 +      featureType.imagelessFramebuffer = allFeaturesBlobs.vk12.imagelessFramebuffer;
 +}
 +template<> void initFeatureFromBlob<VkPhysicalDeviceUniformBufferStandardLayoutFeatures>(VkPhysicalDeviceUniformBufferStandardLayoutFeatures& featureType, const AllFeaturesBlobs& allFeaturesBlobs)
 +{
 +      featureType.uniformBufferStandardLayout = allFeaturesBlobs.vk12.uniformBufferStandardLayout;
 +}
 +template<> void initFeatureFromBlob<VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures>(VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures& featureType, const AllFeaturesBlobs& allFeaturesBlobs)
 +{
 +      featureType.shaderSubgroupExtendedTypes = allFeaturesBlobs.vk12.shaderSubgroupExtendedTypes;
 +}
 +template<> void initFeatureFromBlob<VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures>(VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures& featureType, const AllFeaturesBlobs& allFeaturesBlobs)
 +{
 +      featureType.separateDepthStencilLayouts = allFeaturesBlobs.vk12.separateDepthStencilLayouts;
 +}
 +template<> void initFeatureFromBlob<VkPhysicalDeviceHostQueryResetFeatures>(VkPhysicalDeviceHostQueryResetFeatures& featureType, const AllFeaturesBlobs& allFeaturesBlobs)
 +{
 +      featureType.hostQueryReset = allFeaturesBlobs.vk12.hostQueryReset;
 +}
 +template<> void initFeatureFromBlob<VkPhysicalDeviceTimelineSemaphoreFeatures>(VkPhysicalDeviceTimelineSemaphoreFeatures& featureType, const AllFeaturesBlobs& allFeaturesBlobs)
 +{
 +      featureType.timelineSemaphore = allFeaturesBlobs.vk12.timelineSemaphore;
 +}
 +template<> void initFeatureFromBlob<VkPhysicalDeviceBufferDeviceAddressFeatures>(VkPhysicalDeviceBufferDeviceAddressFeatures& featureType, const AllFeaturesBlobs& allFeaturesBlobs)
 +{
 +      featureType.bufferDeviceAddress = allFeaturesBlobs.vk12.bufferDeviceAddress;
 +      featureType.bufferDeviceAddressCaptureReplay = allFeaturesBlobs.vk12.bufferDeviceAddressCaptureReplay;
 +      featureType.bufferDeviceAddressMultiDevice = allFeaturesBlobs.vk12.bufferDeviceAddressMultiDevice;
 +}
 +
 +// generic template is not enough for some compilers
 +template<> void initFeatureFromBlob<VkPhysicalDeviceVulkanSC10Features>(VkPhysicalDeviceVulkanSC10Features&, const AllFeaturesBlobs&) {}
- template<> FeatureDesc makeFeatureDesc<VkPhysicalDevice16BitStorageFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES, DECL_16BIT_STORAGE_EXTENSION_NAME, 0, 43}; }
- template<> FeatureDesc makeFeatureDesc<VkPhysicalDevice4444FormatsFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT, VK_EXT_4444_FORMATS_EXTENSION_NAME, VK_EXT_4444_FORMATS_SPEC_VERSION, 42}; }
- template<> FeatureDesc makeFeatureDesc<VkPhysicalDevice8BitStorageFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES, DECL_8BIT_STORAGE_EXTENSION_NAME, 0, 41}; }
- template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceASTCDecodeFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT, VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME, VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION, 40}; }
- 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, 39}; }
- template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceBufferDeviceAddressFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES, DECL_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME, 0, 38}; }
- template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceCustomBorderColorFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT, VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME, VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION, 37}; }
- 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, 36}; }
- template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceDescriptorIndexingFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES, DECL_DESCRIPTOR_INDEXING_EXTENSION_NAME, 0, 35}; }
- template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceExtendedDynamicStateFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT, VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME, VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION, 34}; }
- 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, 33}; }
- template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceFragmentShadingRateFeaturesKHR>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR, VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME, VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION, 32}; }
- template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceHostQueryResetFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES, DECL_HOST_QUERY_RESET_EXTENSION_NAME, 0, 31}; }
- template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceImagelessFramebufferFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES, DECL_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME, 0, 30}; }
- template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceImageRobustnessFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT, VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME, VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION, 29}; }
- 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, 28}; }
- 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, 27}; }
- template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceMultiviewFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES, DECL_MULTIVIEW_EXTENSION_NAME, 0, 26}; }
- template<> FeatureDesc makeFeatureDesc<VkPhysicalDevicePipelineIdentifierFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_IDENTIFIER_FEATURES, VK_KHR_PIPELINE_IDENTIFIER_EXTENSION_NAME, VK_KHR_PIPELINE_IDENTIFIER_SPEC_VERSION, 25}; }
- template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceProtectedMemoryFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES, DECL_PROTECTED_MEMORY_EXTENSION_NAME, 0, 24}; }
- template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceRobustness2FeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT, VK_EXT_ROBUSTNESS_2_EXTENSION_NAME, VK_EXT_ROBUSTNESS_2_SPEC_VERSION, 23}; }
- template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceSamplerYcbcrConversionFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES, DECL_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME, 0, 22}; }
- template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceScalarBlockLayoutFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES, DECL_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME, 0, 21}; }
- template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES, DECL_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME, 0, 20}; }
- template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderAtomicFloatFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT, VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME, VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION, 19}; }
- template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderAtomicInt64Features>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES, DECL_SHADER_ATOMIC_INT64_EXTENSION_NAME, 0, 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, DECL_SHADER_DRAW_PARAMETERS_EXTENSION_NAME, 0, 15}; }
- template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderFloat16Int8Features>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES, DECL_SHADER_FLOAT16_INT8_EXTENSION_NAME, 0, 14}; }
- template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT, VK_EXT_SHADER_IMAGE_ATOMIC_INT64_EXTENSION_NAME, VK_EXT_SHADER_IMAGE_ATOMIC_INT64_SPEC_VERSION, 13}; }
- template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES, DECL_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME, 0, 12}; }
- template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR, VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME, VK_KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION, 11}; }
- 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, 10}; }
- 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, 9}; }
- template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT, VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME, VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION, 8}; }
- template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceTimelineSemaphoreFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES, DECL_TIMELINE_SEMAPHORE_EXTENSION_NAME, 0, 7}; }
- template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceUniformBufferStandardLayoutFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES, DECL_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME, 0, 6}; }
- template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceVariablePointersFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES, DECL_VARIABLE_POINTERS_EXTENSION_NAME, 0, 5}; }
- 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, 4}; }
- template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceVulkanMemoryModelFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES, DECL_VULKAN_MEMORY_MODEL_EXTENSION_NAME, 0, 3}; }
- template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceVulkanSC10Features>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_FEATURES, DECL_VULKAN_SC_1_0_EXTENSION_NAME, 0, 2}; }
++template<> void initFeatureFromBlob<VkPhysicalDevicePerformanceQueryFeaturesKHR>(VkPhysicalDevicePerformanceQueryFeaturesKHR&, const AllFeaturesBlobs&) {}
 +template<> void initFeatureFromBlob<VkPhysicalDeviceShaderClockFeaturesKHR>(VkPhysicalDeviceShaderClockFeaturesKHR&, const AllFeaturesBlobs&) {}
 +template<> void initFeatureFromBlob<VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR>(VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR&, const AllFeaturesBlobs&) {}
 +template<> void initFeatureFromBlob<VkPhysicalDeviceFragmentShadingRateFeaturesKHR>(VkPhysicalDeviceFragmentShadingRateFeaturesKHR&, const AllFeaturesBlobs&) {}
++template<> void initFeatureFromBlob<VkPhysicalDeviceSynchronization2FeaturesKHR>(VkPhysicalDeviceSynchronization2FeaturesKHR&, const AllFeaturesBlobs&) {}
 +template<> void initFeatureFromBlob<VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT>(VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT&, const AllFeaturesBlobs&) {}
 +template<> void initFeatureFromBlob<VkPhysicalDeviceASTCDecodeFeaturesEXT>(VkPhysicalDeviceASTCDecodeFeaturesEXT&, const AllFeaturesBlobs&) {}
 +template<> void initFeatureFromBlob<VkPhysicalDeviceDepthClipEnableFeaturesEXT>(VkPhysicalDeviceDepthClipEnableFeaturesEXT&, const AllFeaturesBlobs&) {}
 +template<> void initFeatureFromBlob<VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT>(VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT&, const AllFeaturesBlobs&) {}
 +template<> void initFeatureFromBlob<VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT>(VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT&, const AllFeaturesBlobs&) {}
 +template<> void initFeatureFromBlob<VkPhysicalDeviceSubgroupSizeControlFeaturesEXT>(VkPhysicalDeviceSubgroupSizeControlFeaturesEXT&, const AllFeaturesBlobs&) {}
 +template<> void initFeatureFromBlob<VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT>(VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT&, const AllFeaturesBlobs&) {}
 +template<> void initFeatureFromBlob<VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT>(VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT&, const AllFeaturesBlobs&) {}
 +template<> void initFeatureFromBlob<VkPhysicalDeviceYcbcrImageArraysFeaturesEXT>(VkPhysicalDeviceYcbcrImageArraysFeaturesEXT&, const AllFeaturesBlobs&) {}
 +template<> void initFeatureFromBlob<VkPhysicalDeviceLineRasterizationFeaturesEXT>(VkPhysicalDeviceLineRasterizationFeaturesEXT&, const AllFeaturesBlobs&) {}
 +template<> void initFeatureFromBlob<VkPhysicalDeviceShaderAtomicFloatFeaturesEXT>(VkPhysicalDeviceShaderAtomicFloatFeaturesEXT&, const AllFeaturesBlobs&) {}
 +template<> void initFeatureFromBlob<VkPhysicalDeviceIndexTypeUint8FeaturesEXT>(VkPhysicalDeviceIndexTypeUint8FeaturesEXT&, const AllFeaturesBlobs&) {}
 +template<> void initFeatureFromBlob<VkPhysicalDeviceExtendedDynamicStateFeaturesEXT>(VkPhysicalDeviceExtendedDynamicStateFeaturesEXT&, const AllFeaturesBlobs&) {}
 +template<> void initFeatureFromBlob<VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT>(VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT&, const AllFeaturesBlobs&) {}
 +template<> void initFeatureFromBlob<VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT>(VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT&, const AllFeaturesBlobs&) {}
 +template<> void initFeatureFromBlob<VkPhysicalDeviceRobustness2FeaturesEXT>(VkPhysicalDeviceRobustness2FeaturesEXT&, const AllFeaturesBlobs&) {}
 +template<> void initFeatureFromBlob<VkPhysicalDeviceCustomBorderColorFeaturesEXT>(VkPhysicalDeviceCustomBorderColorFeaturesEXT&, const AllFeaturesBlobs&) {}
++template<> void initFeatureFromBlob<VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT>(VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT&, const AllFeaturesBlobs&) {}
 +template<> void initFeatureFromBlob<VkPhysicalDeviceImageRobustnessFeaturesEXT>(VkPhysicalDeviceImageRobustnessFeaturesEXT&, const AllFeaturesBlobs&) {}
 +template<> void initFeatureFromBlob<VkPhysicalDevice4444FormatsFeaturesEXT>(VkPhysicalDevice4444FormatsFeaturesEXT&, const AllFeaturesBlobs&) {}
++template<> void initFeatureFromBlob<VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT>(VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT&, const AllFeaturesBlobs&) {}
++template<> void initFeatureFromBlob<VkPhysicalDeviceExtendedDynamicState2FeaturesEXT>(VkPhysicalDeviceExtendedDynamicState2FeaturesEXT&, const AllFeaturesBlobs&) {}
++template<> void initFeatureFromBlob<VkPhysicalDeviceColorWriteEnableFeaturesEXT>(VkPhysicalDeviceColorWriteEnableFeaturesEXT&, const AllFeaturesBlobs&) {}
 +
 +
-       { createFeatureStructWrapper<VkPhysicalDevicePipelineIdentifierFeatures>, VK_KHR_PIPELINE_IDENTIFIER_EXTENSION_NAME, VK_KHR_PIPELINE_IDENTIFIER_SPEC_VERSION },
++template<> FeatureDesc makeFeatureDesc<VkPhysicalDevice16BitStorageFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES, DECL_16BIT_STORAGE_EXTENSION_NAME, 0, 48}; }
++template<> FeatureDesc makeFeatureDesc<VkPhysicalDevice4444FormatsFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT, VK_EXT_4444_FORMATS_EXTENSION_NAME, VK_EXT_4444_FORMATS_SPEC_VERSION, 47}; }
++template<> FeatureDesc makeFeatureDesc<VkPhysicalDevice8BitStorageFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES, DECL_8BIT_STORAGE_EXTENSION_NAME, 0, 46}; }
++template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceASTCDecodeFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT, VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME, VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION, 45}; }
++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, 44}; }
++template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceBufferDeviceAddressFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES, DECL_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME, 0, 43}; }
++template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceColorWriteEnableFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT, VK_EXT_COLOR_WRITE_ENABLE_EXTENSION_NAME, VK_EXT_COLOR_WRITE_ENABLE_SPEC_VERSION, 42}; }
++template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceCustomBorderColorFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT, VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME, VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION, 41}; }
++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, 40}; }
++template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceDescriptorIndexingFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES, DECL_DESCRIPTOR_INDEXING_EXTENSION_NAME, 0, 39}; }
++template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceExtendedDynamicStateFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT, VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME, VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION, 38}; }
++template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceExtendedDynamicState2FeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT, VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME, VK_EXT_EXTENDED_DYNAMIC_STATE_2_SPEC_VERSION, 37}; }
++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, 36}; }
++template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceFragmentShadingRateFeaturesKHR>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR, VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME, VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION, 35}; }
++template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceHostQueryResetFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES, DECL_HOST_QUERY_RESET_EXTENSION_NAME, 0, 34}; }
++template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceImagelessFramebufferFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES, DECL_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME, 0, 33}; }
++template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceImageRobustnessFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT, VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME, VK_EXT_IMAGE_ROBUSTNESS_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<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, 30}; }
++template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceMultiviewFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES, DECL_MULTIVIEW_EXTENSION_NAME, 0, 29}; }
++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, 28}; }
++template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceProtectedMemoryFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES, DECL_PROTECTED_MEMORY_EXTENSION_NAME, 0, 27}; }
++template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceRobustness2FeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT, VK_EXT_ROBUSTNESS_2_EXTENSION_NAME, VK_EXT_ROBUSTNESS_2_SPEC_VERSION, 26}; }
++template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceSamplerYcbcrConversionFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES, DECL_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME, 0, 25}; }
++template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceScalarBlockLayoutFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES, DECL_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME, 0, 24}; }
++template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES, DECL_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME, 0, 23}; }
++template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderAtomicFloatFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT, VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME, VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION, 22}; }
++template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderAtomicInt64Features>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES, DECL_SHADER_ATOMIC_INT64_EXTENSION_NAME, 0, 21}; }
++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, 20}; }
++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, 19}; }
++template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderDrawParametersFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES, DECL_SHADER_DRAW_PARAMETERS_EXTENSION_NAME, 0, 18}; }
++template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderFloat16Int8Features>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES, DECL_SHADER_FLOAT16_INT8_EXTENSION_NAME, 0, 17}; }
++template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT, VK_EXT_SHADER_IMAGE_ATOMIC_INT64_EXTENSION_NAME, VK_EXT_SHADER_IMAGE_ATOMIC_INT64_SPEC_VERSION, 16}; }
++template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES, DECL_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME, 0, 15}; }
++template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR, VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME, VK_KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION, 14}; }
++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, 13}; }
++template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceSynchronization2FeaturesKHR>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR, VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME, VK_KHR_SYNCHRONIZATION_2_SPEC_VERSION, 12}; }
++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, 11}; }
++template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT, VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME, VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION, 10}; }
++template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceTimelineSemaphoreFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES, DECL_TIMELINE_SEMAPHORE_EXTENSION_NAME, 0, 9}; }
++template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceUniformBufferStandardLayoutFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES, DECL_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME, 0, 8}; }
++template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceVariablePointersFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES, DECL_VARIABLE_POINTERS_EXTENSION_NAME, 0, 7}; }
++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, 6}; }
++template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT, VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME, VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_SPEC_VERSION, 5}; }
++template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceVulkanMemoryModelFeatures>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES, DECL_VULKAN_MEMORY_MODEL_EXTENSION_NAME, 0, 4}; }
++template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceVulkanSC10Features>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_FEATURES, DECL_VULKAN_SC_1_0_EXTENSION_NAME, 0, 3}; }
++template<> FeatureDesc makeFeatureDesc<VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT>(void) { return FeatureDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT, DECL_EXT_YCBCR_2_PLANE_444_FORMATS_EXTENSION_NAME, 0, 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>, DECL_16BIT_STORAGE_EXTENSION_NAME, 0 },
 +      { createFeatureStructWrapper<VkPhysicalDevice4444FormatsFeaturesEXT>, VK_EXT_4444_FORMATS_EXTENSION_NAME, VK_EXT_4444_FORMATS_SPEC_VERSION },
 +      { createFeatureStructWrapper<VkPhysicalDevice8BitStorageFeatures>, DECL_8BIT_STORAGE_EXTENSION_NAME, 0 },
 +      { createFeatureStructWrapper<VkPhysicalDeviceASTCDecodeFeaturesEXT>, VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME, VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION },
 +      { createFeatureStructWrapper<VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT>, VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME, VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION },
 +      { createFeatureStructWrapper<VkPhysicalDeviceBufferDeviceAddressFeatures>, DECL_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME, 0 },
++      { createFeatureStructWrapper<VkPhysicalDeviceColorWriteEnableFeaturesEXT>, VK_EXT_COLOR_WRITE_ENABLE_EXTENSION_NAME, VK_EXT_COLOR_WRITE_ENABLE_SPEC_VERSION },
 +      { createFeatureStructWrapper<VkPhysicalDeviceCustomBorderColorFeaturesEXT>, VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME, VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION },
 +      { createFeatureStructWrapper<VkPhysicalDeviceDepthClipEnableFeaturesEXT>, VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME, VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION },
 +      { createFeatureStructWrapper<VkPhysicalDeviceDescriptorIndexingFeatures>, DECL_DESCRIPTOR_INDEXING_EXTENSION_NAME, 0 },
 +      { createFeatureStructWrapper<VkPhysicalDeviceExtendedDynamicStateFeaturesEXT>, VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME, VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION },
++      { createFeatureStructWrapper<VkPhysicalDeviceExtendedDynamicState2FeaturesEXT>, VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME, VK_EXT_EXTENDED_DYNAMIC_STATE_2_SPEC_VERSION },
 +      { createFeatureStructWrapper<VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT>, VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME, VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION },
 +      { createFeatureStructWrapper<VkPhysicalDeviceFragmentShadingRateFeaturesKHR>, VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME, VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION },
 +      { createFeatureStructWrapper<VkPhysicalDeviceHostQueryResetFeatures>, DECL_HOST_QUERY_RESET_EXTENSION_NAME, 0 },
 +      { createFeatureStructWrapper<VkPhysicalDeviceImagelessFramebufferFeatures>, DECL_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME, 0 },
 +      { createFeatureStructWrapper<VkPhysicalDeviceImageRobustnessFeaturesEXT>, VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME, VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION },
 +      { createFeatureStructWrapper<VkPhysicalDeviceIndexTypeUint8FeaturesEXT>, VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME, VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION },
 +      { createFeatureStructWrapper<VkPhysicalDeviceLineRasterizationFeaturesEXT>, VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME, VK_EXT_LINE_RASTERIZATION_SPEC_VERSION },
 +      { createFeatureStructWrapper<VkPhysicalDeviceMultiviewFeatures>, DECL_MULTIVIEW_EXTENSION_NAME, 0 },
++      { createFeatureStructWrapper<VkPhysicalDevicePerformanceQueryFeaturesKHR>, VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME, VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION },
 +      { createFeatureStructWrapper<VkPhysicalDeviceProtectedMemoryFeatures>, DECL_PROTECTED_MEMORY_EXTENSION_NAME, 0 },
 +      { createFeatureStructWrapper<VkPhysicalDeviceRobustness2FeaturesEXT>, VK_EXT_ROBUSTNESS_2_EXTENSION_NAME, VK_EXT_ROBUSTNESS_2_SPEC_VERSION },
 +      { createFeatureStructWrapper<VkPhysicalDeviceSamplerYcbcrConversionFeatures>, DECL_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME, 0 },
 +      { createFeatureStructWrapper<VkPhysicalDeviceScalarBlockLayoutFeatures>, DECL_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME, 0 },
 +      { createFeatureStructWrapper<VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures>, DECL_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME, 0 },
 +      { createFeatureStructWrapper<VkPhysicalDeviceShaderAtomicFloatFeaturesEXT>, VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME, VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION },
 +      { createFeatureStructWrapper<VkPhysicalDeviceShaderAtomicInt64Features>, DECL_SHADER_ATOMIC_INT64_EXTENSION_NAME, 0 },
 +      { 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>, DECL_SHADER_DRAW_PARAMETERS_EXTENSION_NAME, 0 },
 +      { createFeatureStructWrapper<VkPhysicalDeviceShaderFloat16Int8Features>, DECL_SHADER_FLOAT16_INT8_EXTENSION_NAME, 0 },
 +      { createFeatureStructWrapper<VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT>, VK_EXT_SHADER_IMAGE_ATOMIC_INT64_EXTENSION_NAME, VK_EXT_SHADER_IMAGE_ATOMIC_INT64_SPEC_VERSION },
 +      { createFeatureStructWrapper<VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures>, DECL_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME, 0 },
 +      { createFeatureStructWrapper<VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR>, VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME, VK_KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION },
 +      { createFeatureStructWrapper<VkPhysicalDeviceSubgroupSizeControlFeaturesEXT>, VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME, VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION },
++      { createFeatureStructWrapper<VkPhysicalDeviceSynchronization2FeaturesKHR>, VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME, VK_KHR_SYNCHRONIZATION_2_SPEC_VERSION },
 +      { createFeatureStructWrapper<VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT>, VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME, VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION },
 +      { createFeatureStructWrapper<VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT>, VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME, VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION },
 +      { createFeatureStructWrapper<VkPhysicalDeviceTimelineSemaphoreFeatures>, DECL_TIMELINE_SEMAPHORE_EXTENSION_NAME, 0 },
 +      { createFeatureStructWrapper<VkPhysicalDeviceUniformBufferStandardLayoutFeatures>, DECL_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME, 0 },
 +      { createFeatureStructWrapper<VkPhysicalDeviceVariablePointersFeatures>, DECL_VARIABLE_POINTERS_EXTENSION_NAME, 0 },
 +      { createFeatureStructWrapper<VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT>, VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME, VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION },
++      { createFeatureStructWrapper<VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT>, VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME, VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_SPEC_VERSION },
 +      { createFeatureStructWrapper<VkPhysicalDeviceVulkanMemoryModelFeatures>, DECL_VULKAN_MEMORY_MODEL_EXTENSION_NAME, 0 },
 +      { createFeatureStructWrapper<VkPhysicalDeviceVulkanSC10Features>, DECL_VULKAN_SC_1_0_EXTENSION_NAME, 0 },
++      { createFeatureStructWrapper<VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT>, DECL_EXT_YCBCR_2_PLANE_444_FORMATS_EXTENSION_NAME, 0 },
 +      { 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 18f6d8f,0000000..5ba8455
mode 100644,000000..100644
--- /dev/null
@@@ -1,202 -1,0 +1,216 @@@
-       deviceScalarBlockLayoutFeatures[ndx].pNext = &device16BitStorageFeatures[ndx];
 +/* WARNING: This is auto-generated file. Do not modify, since changes will
 + * be lost! Modify the generating script instead.
 + */
 +VkPhysicalDeviceScalarBlockLayoutFeatures                     deviceScalarBlockLayoutFeatures[count];
++VkPhysicalDevicePerformanceQueryFeaturesKHR                   devicePerformanceQueryFeaturesKHR[count];
 +VkPhysicalDevice16BitStorageFeatures                          device16BitStorageFeatures[count];
 +VkPhysicalDeviceMultiviewFeatures                                     deviceMultiviewFeatures[count];
 +VkPhysicalDeviceProtectedMemoryFeatures                               deviceProtectedMemoryFeatures[count];
 +VkPhysicalDeviceSamplerYcbcrConversionFeatures                deviceSamplerYcbcrConversionFeatures[count];
 +VkPhysicalDeviceVariablePointersFeatures                      deviceVariablePointersFeatures[count];
 +VkPhysicalDevice8BitStorageFeatures                                   device8BitStorageFeatures[count];
 +VkPhysicalDeviceShaderAtomicInt64Features                     deviceShaderAtomicInt64Features[count];
 +VkPhysicalDeviceShaderFloat16Int8Features                     deviceShaderFloat16Int8Features[count];
 +VkPhysicalDeviceBufferDeviceAddressFeatures                   deviceBufferDeviceAddressFeatures[count];
 +VkPhysicalDeviceDescriptorIndexingFeatures                    deviceDescriptorIndexingFeatures[count];
 +VkPhysicalDeviceTimelineSemaphoreFeatures                     deviceTimelineSemaphoreFeatures[count];
 +
 +const bool isScalarBlockLayoutFeatures                        =                                                                                                                                          context.contextSupports(vk::ApiVersion(1, 2, 0));
++const bool isPerformanceQueryFeaturesKHR              = checkExtension(properties, "VK_KHR_performance_query");
 +const bool is16BitStorageFeatures                             =                                                                                                                                          context.contextSupports(vk::ApiVersion(1, 1, 0));
 +const bool isMultiviewFeatures                                        =                                                                                                                                          context.contextSupports(vk::ApiVersion(1, 1, 0));
 +const bool isProtectedMemoryFeatures                  =                                                                                                                                          context.contextSupports(vk::ApiVersion(1, 1, 0));
 +const bool isSamplerYcbcrConversionFeatures           =                                                                                                                                          context.contextSupports(vk::ApiVersion(1, 1, 0));
 +const bool isVariablePointersFeatures                 =                                                                                                                                          context.contextSupports(vk::ApiVersion(1, 1, 0));
 +const bool is8BitStorageFeatures                              =                                                                                                                                          context.contextSupports(vk::ApiVersion(1, 2, 0));
 +const bool isShaderAtomicInt64Features                        =                                                                                                                                          context.contextSupports(vk::ApiVersion(1, 2, 0));
 +const bool isShaderFloat16Int8Features                        =                                                                                                                                          context.contextSupports(vk::ApiVersion(1, 2, 0));
 +const bool isBufferDeviceAddressFeatures              =                                                                                                                                          context.contextSupports(vk::ApiVersion(1, 2, 0));
 +const bool isDescriptorIndexingFeatures                       =                                                                                                                                          context.contextSupports(vk::ApiVersion(1, 2, 0));
 +const bool isTimelineSemaphoreFeatures                        =                                                                                                                                          context.contextSupports(vk::ApiVersion(1, 2, 0));
 +
 +for (int ndx = 0; ndx < count; ++ndx)
 +{
 +      deMemset(&deviceScalarBlockLayoutFeatures[ndx],                 0xFF * ndx, sizeof(VkPhysicalDeviceScalarBlockLayoutFeatures));
++      deMemset(&devicePerformanceQueryFeaturesKHR[ndx],               0xFF * ndx, sizeof(VkPhysicalDevicePerformanceQueryFeaturesKHR));
 +      deMemset(&device16BitStorageFeatures[ndx],                              0xFF * ndx, sizeof(VkPhysicalDevice16BitStorageFeatures));
 +      deMemset(&deviceMultiviewFeatures[ndx],                                 0xFF * ndx, sizeof(VkPhysicalDeviceMultiviewFeatures));
 +      deMemset(&deviceProtectedMemoryFeatures[ndx],                   0xFF * ndx, sizeof(VkPhysicalDeviceProtectedMemoryFeatures));
 +      deMemset(&deviceSamplerYcbcrConversionFeatures[ndx],    0xFF * ndx, sizeof(VkPhysicalDeviceSamplerYcbcrConversionFeatures));
 +      deMemset(&deviceVariablePointersFeatures[ndx],                  0xFF * ndx, sizeof(VkPhysicalDeviceVariablePointersFeatures));
 +      deMemset(&device8BitStorageFeatures[ndx],                               0xFF * ndx, sizeof(VkPhysicalDevice8BitStorageFeatures));
 +      deMemset(&deviceShaderAtomicInt64Features[ndx],                 0xFF * ndx, sizeof(VkPhysicalDeviceShaderAtomicInt64Features));
 +      deMemset(&deviceShaderFloat16Int8Features[ndx],                 0xFF * ndx, sizeof(VkPhysicalDeviceShaderFloat16Int8Features));
 +      deMemset(&deviceBufferDeviceAddressFeatures[ndx],               0xFF * ndx, sizeof(VkPhysicalDeviceBufferDeviceAddressFeatures));
 +      deMemset(&deviceDescriptorIndexingFeatures[ndx],                0xFF * ndx, sizeof(VkPhysicalDeviceDescriptorIndexingFeatures));
 +      deMemset(&deviceTimelineSemaphoreFeatures[ndx],                 0xFF * ndx, sizeof(VkPhysicalDeviceTimelineSemaphoreFeatures));
 +
 +      deviceScalarBlockLayoutFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES;
++      deviceScalarBlockLayoutFeatures[ndx].pNext = &devicePerformanceQueryFeaturesKHR[ndx];
++
++      devicePerformanceQueryFeaturesKHR[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR;
++      devicePerformanceQueryFeaturesKHR[ndx].pNext = &device16BitStorageFeatures[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 = &deviceProtectedMemoryFeatures[ndx];
 +
 +      deviceProtectedMemoryFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES;
 +      deviceProtectedMemoryFeatures[ndx].pNext = &deviceSamplerYcbcrConversionFeatures[ndx];
 +
 +      deviceSamplerYcbcrConversionFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES;
 +      deviceSamplerYcbcrConversionFeatures[ndx].pNext = &deviceVariablePointersFeatures[ndx];
 +
 +      deviceVariablePointersFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES;
 +      deviceVariablePointersFeatures[ndx].pNext = &device8BitStorageFeatures[ndx];
 +
 +      device8BitStorageFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES;
 +      device8BitStorageFeatures[ndx].pNext = &deviceShaderAtomicInt64Features[ndx];
 +
 +      deviceShaderAtomicInt64Features[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES;
 +      deviceShaderAtomicInt64Features[ndx].pNext = &deviceShaderFloat16Int8Features[ndx];
 +
 +      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 = &deviceDescriptorIndexingFeatures[ndx];
 +
 +      deviceDescriptorIndexingFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES;
 +      deviceDescriptorIndexingFeatures[ndx].pNext = &deviceTimelineSemaphoreFeatures[ndx];
 +
 +      deviceTimelineSemaphoreFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES;
 +      deviceTimelineSemaphoreFeatures[ndx].pNext = DE_NULL;
 +
 +      deMemset(&extFeatures.features, 0xcd, sizeof(extFeatures.features));
 +      extFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2;
 +      extFeatures.pNext = &deviceScalarBlockLayoutFeatures[ndx];
 +      vki.getPhysicalDeviceFeatures2(physicalDevice, &extFeatures);
 +}
 +
 +if (isScalarBlockLayoutFeatures)
 +      log << TestLog::Message << deviceScalarBlockLayoutFeatures[0] << TestLog::EndMessage;
++if (isPerformanceQueryFeaturesKHR)
++      log << TestLog::Message << devicePerformanceQueryFeaturesKHR[0] << TestLog::EndMessage;
 +if (is16BitStorageFeatures)
 +      log << TestLog::Message << device16BitStorageFeatures[0] << TestLog::EndMessage;
 +if (isMultiviewFeatures)
 +      log << TestLog::Message << deviceMultiviewFeatures[0] << TestLog::EndMessage;
 +if (isProtectedMemoryFeatures)
 +      log << TestLog::Message << deviceProtectedMemoryFeatures[0] << TestLog::EndMessage;
 +if (isSamplerYcbcrConversionFeatures)
 +      log << TestLog::Message << deviceSamplerYcbcrConversionFeatures[0] << TestLog::EndMessage;
 +if (isVariablePointersFeatures)
 +      log << TestLog::Message << deviceVariablePointersFeatures[0] << TestLog::EndMessage;
 +if (is8BitStorageFeatures)
 +      log << TestLog::Message << device8BitStorageFeatures[0] << TestLog::EndMessage;
 +if (isShaderAtomicInt64Features)
 +      log << TestLog::Message << deviceShaderAtomicInt64Features[0] << TestLog::EndMessage;
 +if (isShaderFloat16Int8Features)
 +      log << TestLog::Message << deviceShaderFloat16Int8Features[0] << TestLog::EndMessage;
 +if (isBufferDeviceAddressFeatures)
 +      log << TestLog::Message << deviceBufferDeviceAddressFeatures[0] << TestLog::EndMessage;
 +if (isDescriptorIndexingFeatures)
 +      log << TestLog::Message << deviceDescriptorIndexingFeatures[0] << TestLog::EndMessage;
 +if (isTimelineSemaphoreFeatures)
 +      log << TestLog::Message << deviceTimelineSemaphoreFeatures[0] << TestLog::EndMessage;
 +
 +if (isScalarBlockLayoutFeatures &&
 +      (deviceScalarBlockLayoutFeatures[0].scalarBlockLayout != deviceScalarBlockLayoutFeatures[1].scalarBlockLayout))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceScalarBlockLayoutFeatures");
 +}
++if (isPerformanceQueryFeaturesKHR &&
++      (devicePerformanceQueryFeaturesKHR[0].performanceCounterQueryPools != devicePerformanceQueryFeaturesKHR[1].performanceCounterQueryPools ||
++       devicePerformanceQueryFeaturesKHR[0].performanceCounterMultipleQueryPools != devicePerformanceQueryFeaturesKHR[1].performanceCounterMultipleQueryPools))
++{
++              TCU_FAIL("Mismatch between VkPhysicalDevicePerformanceQueryFeaturesKHR");
++}
 +if (is16BitStorageFeatures &&
 +      (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 (isMultiviewFeatures &&
 +      (deviceMultiviewFeatures[0].multiview != deviceMultiviewFeatures[1].multiview ||
 +       deviceMultiviewFeatures[0].multiviewGeometryShader != deviceMultiviewFeatures[1].multiviewGeometryShader ||
 +       deviceMultiviewFeatures[0].multiviewTessellationShader != deviceMultiviewFeatures[1].multiviewTessellationShader))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceMultiviewFeatures");
 +}
 +if (isProtectedMemoryFeatures &&
 +      (deviceProtectedMemoryFeatures[0].protectedMemory != deviceProtectedMemoryFeatures[1].protectedMemory))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceProtectedMemoryFeatures");
 +}
 +if (isSamplerYcbcrConversionFeatures &&
 +      (deviceSamplerYcbcrConversionFeatures[0].samplerYcbcrConversion != deviceSamplerYcbcrConversionFeatures[1].samplerYcbcrConversion))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceSamplerYcbcrConversionFeatures");
 +}
 +if (isVariablePointersFeatures &&
 +      (deviceVariablePointersFeatures[0].variablePointersStorageBuffer != deviceVariablePointersFeatures[1].variablePointersStorageBuffer ||
 +       deviceVariablePointersFeatures[0].variablePointers != deviceVariablePointersFeatures[1].variablePointers))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceVariablePointersFeatures");
 +}
 +if (is8BitStorageFeatures &&
 +      (device8BitStorageFeatures[0].storageBuffer8BitAccess != device8BitStorageFeatures[1].storageBuffer8BitAccess ||
 +       device8BitStorageFeatures[0].uniformAndStorageBuffer8BitAccess != device8BitStorageFeatures[1].uniformAndStorageBuffer8BitAccess ||
 +       device8BitStorageFeatures[0].storagePushConstant8 != device8BitStorageFeatures[1].storagePushConstant8))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDevice8BitStorageFeatures");
 +}
 +if (isShaderAtomicInt64Features &&
 +      (deviceShaderAtomicInt64Features[0].shaderBufferInt64Atomics != deviceShaderAtomicInt64Features[1].shaderBufferInt64Atomics ||
 +       deviceShaderAtomicInt64Features[0].shaderSharedInt64Atomics != deviceShaderAtomicInt64Features[1].shaderSharedInt64Atomics))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceShaderAtomicInt64Features");
 +}
 +if (isShaderFloat16Int8Features &&
 +      (deviceShaderFloat16Int8Features[0].shaderFloat16 != deviceShaderFloat16Int8Features[1].shaderFloat16 ||
 +       deviceShaderFloat16Int8Features[0].shaderInt8 != deviceShaderFloat16Int8Features[1].shaderInt8))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceShaderFloat16Int8Features");
 +}
 +if (isBufferDeviceAddressFeatures &&
 +      (deviceBufferDeviceAddressFeatures[0].bufferDeviceAddress != deviceBufferDeviceAddressFeatures[1].bufferDeviceAddress ||
 +       deviceBufferDeviceAddressFeatures[0].bufferDeviceAddressCaptureReplay != deviceBufferDeviceAddressFeatures[1].bufferDeviceAddressCaptureReplay ||
 +       deviceBufferDeviceAddressFeatures[0].bufferDeviceAddressMultiDevice != deviceBufferDeviceAddressFeatures[1].bufferDeviceAddressMultiDevice))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceBufferDeviceAddressFeatures");
 +}
 +if (isDescriptorIndexingFeatures &&
 +      (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");
 +}
 +if (isTimelineSemaphoreFeatures &&
 +      (deviceTimelineSemaphoreFeatures[0].timelineSemaphore != deviceTimelineSemaphoreFeatures[1].timelineSemaphore))
 +{
 +              TCU_FAIL("Mismatch between VkPhysicalDeviceTimelineSemaphoreFeatures");
 +}
index 4b19270,0000000..5121fe6
mode 100644,000000..100644
--- /dev/null
@@@ -1,46 -1,0 +1,51 @@@
- const vk::VkPhysicalDevicePipelineIdentifierFeatures&                                 getPipelineIdentifierFeatures                                   (void) const;
 +/* 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::VkPhysicalDevice4444FormatsFeaturesEXT&                                             get4444FormatsFeaturesEXT                                               (void) const;
 +const vk::VkPhysicalDevice8BitStorageFeatures&                                                        get8BitStorageFeatures                                                  (void) const;
 +const vk::VkPhysicalDeviceASTCDecodeFeaturesEXT&                                              getASTCDecodeFeaturesEXT                                                (void) const;
 +const vk::VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT&                  getBlendOperationAdvancedFeaturesEXT                    (void) const;
 +const vk::VkPhysicalDeviceBufferDeviceAddressFeatures&                                        getBufferDeviceAddressFeatures                                  (void) const;
++const vk::VkPhysicalDeviceColorWriteEnableFeaturesEXT&                                        getColorWriteEnableFeaturesEXT                                  (void) const;
 +const vk::VkPhysicalDeviceCustomBorderColorFeaturesEXT&                                       getCustomBorderColorFeaturesEXT                                 (void) const;
 +const vk::VkPhysicalDeviceDepthClipEnableFeaturesEXT&                                 getDepthClipEnableFeaturesEXT                                   (void) const;
 +const vk::VkPhysicalDeviceDescriptorIndexingFeatures&                                 getDescriptorIndexingFeatures                                   (void) const;
 +const vk::VkPhysicalDeviceExtendedDynamicStateFeaturesEXT&                            getExtendedDynamicStateFeaturesEXT                              (void) const;
++const vk::VkPhysicalDeviceExtendedDynamicState2FeaturesEXT&                           getExtendedDynamicState2FeaturesEXT                             (void) const;
 +const vk::VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT&                 getFragmentShaderInterlockFeaturesEXT                   (void) const;
 +const vk::VkPhysicalDeviceFragmentShadingRateFeaturesKHR&                             getFragmentShadingRateFeatures                                  (void) const;
 +const vk::VkPhysicalDeviceHostQueryResetFeatures&                                             getHostQueryResetFeatures                                               (void) const;
 +const vk::VkPhysicalDeviceImagelessFramebufferFeatures&                                       getImagelessFramebufferFeatures                                 (void) const;
 +const vk::VkPhysicalDeviceImageRobustnessFeaturesEXT&                                 getImageRobustnessFeaturesEXT                                   (void) const;
 +const vk::VkPhysicalDeviceIndexTypeUint8FeaturesEXT&                                  getIndexTypeUint8FeaturesEXT                                    (void) const;
 +const vk::VkPhysicalDeviceLineRasterizationFeaturesEXT&                                       getLineRasterizationFeaturesEXT                                 (void) const;
 +const vk::VkPhysicalDeviceMultiviewFeatures&                                                  getMultiviewFeatures                                                    (void) const;
++const vk::VkPhysicalDevicePerformanceQueryFeaturesKHR&                                        getPerformanceQueryFeatures                                             (void) const;
 +const vk::VkPhysicalDeviceProtectedMemoryFeatures&                                            getProtectedMemoryFeatures                                              (void) const;
 +const vk::VkPhysicalDeviceRobustness2FeaturesEXT&                                             getRobustness2FeaturesEXT                                               (void) const;
 +const vk::VkPhysicalDeviceSamplerYcbcrConversionFeatures&                             getSamplerYcbcrConversionFeatures                               (void) const;
 +const vk::VkPhysicalDeviceScalarBlockLayoutFeatures&                                  getScalarBlockLayoutFeatures                                    (void) const;
 +const vk::VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures&                        getSeparateDepthStencilLayoutsFeatures                  (void) const;
 +const vk::VkPhysicalDeviceShaderAtomicFloatFeaturesEXT&                                       getShaderAtomicFloatFeaturesEXT                                 (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::VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT&                  getShaderImageAtomicInt64FeaturesEXT                    (void) const;
 +const vk::VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures&                        getShaderSubgroupExtendedTypesFeatures                  (void) const;
 +const vk::VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR&                       getShaderTerminateInvocationFeatures                    (void) const;
 +const vk::VkPhysicalDeviceSubgroupSizeControlFeaturesEXT&                             getSubgroupSizeControlFeaturesEXT                               (void) const;
++const vk::VkPhysicalDeviceSynchronization2FeaturesKHR&                                        getSynchronization2Features                                             (void) const;
 +const vk::VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT&                            getTexelBufferAlignmentFeaturesEXT                              (void) const;
 +const vk::VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT&                       getTextureCompressionASTCHDRFeaturesEXT                 (void) const;
 +const vk::VkPhysicalDeviceTimelineSemaphoreFeatures&                                  getTimelineSemaphoreFeatures                                    (void) const;
 +const vk::VkPhysicalDeviceUniformBufferStandardLayoutFeatures&                        getUniformBufferStandardLayoutFeatures                  (void) const;
 +const vk::VkPhysicalDeviceVariablePointersFeatures&                                           getVariablePointersFeatures                                             (void) const;
 +const vk::VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT&                  getVertexAttributeDivisorFeaturesEXT                    (void) const;
++const vk::VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT&                 getVertexInputDynamicStateFeaturesEXT                   (void) const;
 +const vk::VkPhysicalDeviceVulkanMemoryModelFeatures&                                  getVulkanMemoryModelFeatures                                    (void) const;
 +const vk::VkPhysicalDeviceVulkanSC10Features&                                                 getVulkanSC10Features                                                   (void) const;
++const vk::VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT&                           getYcbcr2Plane444FormatsFeaturesEXT                             (void) const;
 +const vk::VkPhysicalDeviceYcbcrImageArraysFeaturesEXT&                                        getYcbcrImageArraysFeaturesEXT                                  (void) const;
index d5e80be,0000000..86bac58
mode 100644,000000..100644
--- /dev/null
@@@ -1,46 -1,0 +1,51 @@@
- const vk::VkPhysicalDevicePipelineIdentifierFeatures&                                 Context::getPipelineIdentifierFeatures                                  (void) const { return m_device->getPipelineIdentifierFeatures();                                }
 +/* WARNING: This is auto-generated file. Do not modify, since changes will
 + * be lost! Modify the generating script instead.
 + */
 +const vk::VkPhysicalDevice16BitStorageFeatures&                                                       Context::get16BitStorageFeatures                                                (void) const { return m_device->get16BitStorageFeatures();                                              }
 +const vk::VkPhysicalDevice4444FormatsFeaturesEXT&                                             Context::get4444FormatsFeaturesEXT                                              (void) const { return m_device->get4444FormatsFeaturesEXT();                                    }
 +const vk::VkPhysicalDevice8BitStorageFeatures&                                                        Context::get8BitStorageFeatures                                                 (void) const { return m_device->get8BitStorageFeatures();                                               }
 +const vk::VkPhysicalDeviceASTCDecodeFeaturesEXT&                                              Context::getASTCDecodeFeaturesEXT                                               (void) const { return m_device->getASTCDecodeFeaturesEXT();                                             }
 +const vk::VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT&                  Context::getBlendOperationAdvancedFeaturesEXT                   (void) const { return m_device->getBlendOperationAdvancedFeaturesEXT();                 }
 +const vk::VkPhysicalDeviceBufferDeviceAddressFeatures&                                        Context::getBufferDeviceAddressFeatures                                 (void) const { return m_device->getBufferDeviceAddressFeatures();                               }
++const vk::VkPhysicalDeviceColorWriteEnableFeaturesEXT&                                        Context::getColorWriteEnableFeaturesEXT                                 (void) const { return m_device->getColorWriteEnableFeaturesEXT();                               }
 +const vk::VkPhysicalDeviceCustomBorderColorFeaturesEXT&                                       Context::getCustomBorderColorFeaturesEXT                                (void) const { return m_device->getCustomBorderColorFeaturesEXT();                              }
 +const vk::VkPhysicalDeviceDepthClipEnableFeaturesEXT&                                 Context::getDepthClipEnableFeaturesEXT                                  (void) const { return m_device->getDepthClipEnableFeaturesEXT();                                }
 +const vk::VkPhysicalDeviceDescriptorIndexingFeatures&                                 Context::getDescriptorIndexingFeatures                                  (void) const { return m_device->getDescriptorIndexingFeatures();                                }
 +const vk::VkPhysicalDeviceExtendedDynamicStateFeaturesEXT&                            Context::getExtendedDynamicStateFeaturesEXT                             (void) const { return m_device->getExtendedDynamicStateFeaturesEXT();                   }
++const vk::VkPhysicalDeviceExtendedDynamicState2FeaturesEXT&                           Context::getExtendedDynamicState2FeaturesEXT                    (void) const { return m_device->getExtendedDynamicState2FeaturesEXT();                  }
 +const vk::VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT&                 Context::getFragmentShaderInterlockFeaturesEXT                  (void) const { return m_device->getFragmentShaderInterlockFeaturesEXT();                }
 +const vk::VkPhysicalDeviceFragmentShadingRateFeaturesKHR&                             Context::getFragmentShadingRateFeatures                                 (void) const { return m_device->getFragmentShadingRateFeatures();                               }
 +const vk::VkPhysicalDeviceHostQueryResetFeatures&                                             Context::getHostQueryResetFeatures                                              (void) const { return m_device->getHostQueryResetFeatures();                                    }
 +const vk::VkPhysicalDeviceImagelessFramebufferFeatures&                                       Context::getImagelessFramebufferFeatures                                (void) const { return m_device->getImagelessFramebufferFeatures();                              }
 +const vk::VkPhysicalDeviceImageRobustnessFeaturesEXT&                                 Context::getImageRobustnessFeaturesEXT                                  (void) const { return m_device->getImageRobustnessFeaturesEXT();                                }
 +const vk::VkPhysicalDeviceIndexTypeUint8FeaturesEXT&                                  Context::getIndexTypeUint8FeaturesEXT                                   (void) const { return m_device->getIndexTypeUint8FeaturesEXT();                                 }
 +const vk::VkPhysicalDeviceLineRasterizationFeaturesEXT&                                       Context::getLineRasterizationFeaturesEXT                                (void) const { return m_device->getLineRasterizationFeaturesEXT();                              }
 +const vk::VkPhysicalDeviceMultiviewFeatures&                                                  Context::getMultiviewFeatures                                                   (void) const { return m_device->getMultiviewFeatures();                                                 }
++const vk::VkPhysicalDevicePerformanceQueryFeaturesKHR&                                        Context::getPerformanceQueryFeatures                                    (void) const { return m_device->getPerformanceQueryFeatures();                                  }
 +const vk::VkPhysicalDeviceProtectedMemoryFeatures&                                            Context::getProtectedMemoryFeatures                                             (void) const { return m_device->getProtectedMemoryFeatures();                                   }
 +const vk::VkPhysicalDeviceRobustness2FeaturesEXT&                                             Context::getRobustness2FeaturesEXT                                              (void) const { return m_device->getRobustness2FeaturesEXT();                                    }
 +const vk::VkPhysicalDeviceSamplerYcbcrConversionFeatures&                             Context::getSamplerYcbcrConversionFeatures                              (void) const { return m_device->getSamplerYcbcrConversionFeatures();                    }
 +const vk::VkPhysicalDeviceScalarBlockLayoutFeatures&                                  Context::getScalarBlockLayoutFeatures                                   (void) const { return m_device->getScalarBlockLayoutFeatures();                                 }
 +const vk::VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures&                        Context::getSeparateDepthStencilLayoutsFeatures                 (void) const { return m_device->getSeparateDepthStencilLayoutsFeatures();               }
 +const vk::VkPhysicalDeviceShaderAtomicFloatFeaturesEXT&                                       Context::getShaderAtomicFloatFeaturesEXT                                (void) const { return m_device->getShaderAtomicFloatFeaturesEXT();                              }
 +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::getShaderDemoteToHelperInvocationFeaturesEXT   (void) const { return m_device->getShaderDemoteToHelperInvocationFeaturesEXT(); }
 +const vk::VkPhysicalDeviceShaderDrawParametersFeatures&                                       Context::getShaderDrawParametersFeatures                                (void) const { return m_device->getShaderDrawParametersFeatures();                              }
 +const vk::VkPhysicalDeviceShaderFloat16Int8Features&                                  Context::getShaderFloat16Int8Features                                   (void) const { return m_device->getShaderFloat16Int8Features();                                 }
 +const vk::VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT&                  Context::getShaderImageAtomicInt64FeaturesEXT                   (void) const { return m_device->getShaderImageAtomicInt64FeaturesEXT();                 }
 +const vk::VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures&                        Context::getShaderSubgroupExtendedTypesFeatures                 (void) const { return m_device->getShaderSubgroupExtendedTypesFeatures();               }
 +const vk::VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR&                       Context::getShaderTerminateInvocationFeatures                   (void) const { return m_device->getShaderTerminateInvocationFeatures();                 }
 +const vk::VkPhysicalDeviceSubgroupSizeControlFeaturesEXT&                             Context::getSubgroupSizeControlFeaturesEXT                              (void) const { return m_device->getSubgroupSizeControlFeaturesEXT();                    }
++const vk::VkPhysicalDeviceSynchronization2FeaturesKHR&                                        Context::getSynchronization2Features                                    (void) const { return m_device->getSynchronization2Features();                                  }
 +const vk::VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT&                            Context::getTexelBufferAlignmentFeaturesEXT                             (void) const { return m_device->getTexelBufferAlignmentFeaturesEXT();                   }
 +const vk::VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT&                       Context::getTextureCompressionASTCHDRFeaturesEXT                (void) const { return m_device->getTextureCompressionASTCHDRFeaturesEXT();              }
 +const vk::VkPhysicalDeviceTimelineSemaphoreFeatures&                                  Context::getTimelineSemaphoreFeatures                                   (void) const { return m_device->getTimelineSemaphoreFeatures();                                 }
 +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::getVertexAttributeDivisorFeaturesEXT                   (void) const { return m_device->getVertexAttributeDivisorFeaturesEXT();                 }
++const vk::VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT&                 Context::getVertexInputDynamicStateFeaturesEXT                  (void) const { return m_device->getVertexInputDynamicStateFeaturesEXT();                }
 +const vk::VkPhysicalDeviceVulkanMemoryModelFeatures&                                  Context::getVulkanMemoryModelFeatures                                   (void) const { return m_device->getVulkanMemoryModelFeatures();                                 }
 +const vk::VkPhysicalDeviceVulkanSC10Features&                                                 Context::getVulkanSC10Features                                                  (void) const { return m_device->getVulkanSC10Features();                                                }
++const vk::VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT&                           Context::getYcbcr2Plane444FormatsFeaturesEXT                    (void) const { return m_device->getYcbcr2Plane444FormatsFeaturesEXT();                  }
 +const vk::VkPhysicalDeviceYcbcrImageArraysFeaturesEXT&                                        Context::getYcbcrImageArraysFeaturesEXT                                 (void) const { return m_device->getYcbcrImageArraysFeaturesEXT();                               }
index 7381c9d,0000000..06a910c
mode 100644,000000..100644
--- /dev/null
@@@ -1,46 -1,0 +1,51 @@@
- const VkPhysicalDevicePipelineIdentifierFeatures&                                     getPipelineIdentifierFeatures                                   (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevicePipelineIdentifierFeatures>();                            }
 +/* 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 VkPhysicalDevice4444FormatsFeaturesEXT&                                         get4444FormatsFeaturesEXT                                               (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevice4444FormatsFeaturesEXT>();                                        }
 +const VkPhysicalDevice8BitStorageFeatures&                                                    get8BitStorageFeatures                                                  (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevice8BitStorageFeatures>();                                           }
 +const VkPhysicalDeviceASTCDecodeFeaturesEXT&                                          getASTCDecodeFeaturesEXT                                                (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceASTCDecodeFeaturesEXT>();                                         }
 +const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT&                      getBlendOperationAdvancedFeaturesEXT                    (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT>();                     }
 +const VkPhysicalDeviceBufferDeviceAddressFeatures&                                    getBufferDeviceAddressFeatures                                  (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceBufferDeviceAddressFeatures>();                           }
++const VkPhysicalDeviceColorWriteEnableFeaturesEXT&                                    getColorWriteEnableFeaturesEXT                                  (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceColorWriteEnableFeaturesEXT>();                           }
 +const VkPhysicalDeviceCustomBorderColorFeaturesEXT&                                   getCustomBorderColorFeaturesEXT                                 (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceCustomBorderColorFeaturesEXT>();                          }
 +const VkPhysicalDeviceDepthClipEnableFeaturesEXT&                                     getDepthClipEnableFeaturesEXT                                   (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceDepthClipEnableFeaturesEXT>();                            }
 +const VkPhysicalDeviceDescriptorIndexingFeatures&                                     getDescriptorIndexingFeatures                                   (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceDescriptorIndexingFeatures>();                            }
 +const VkPhysicalDeviceExtendedDynamicStateFeaturesEXT&                                getExtendedDynamicStateFeaturesEXT                              (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceExtendedDynamicStateFeaturesEXT>();                       }
++const VkPhysicalDeviceExtendedDynamicState2FeaturesEXT&                               getExtendedDynamicState2FeaturesEXT                             (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceExtendedDynamicState2FeaturesEXT>();                      }
 +const VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT&                     getFragmentShaderInterlockFeaturesEXT                   (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT>();            }
 +const VkPhysicalDeviceFragmentShadingRateFeaturesKHR&                         getFragmentShadingRateFeatures                                  (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceFragmentShadingRateFeaturesKHR>();                        }
 +const VkPhysicalDeviceHostQueryResetFeatures&                                         getHostQueryResetFeatures                                               (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceHostQueryResetFeatures>();                                        }
 +const VkPhysicalDeviceImagelessFramebufferFeatures&                                   getImagelessFramebufferFeatures                                 (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceImagelessFramebufferFeatures>();                          }
 +const VkPhysicalDeviceImageRobustnessFeaturesEXT&                                     getImageRobustnessFeaturesEXT                                   (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceImageRobustnessFeaturesEXT>();                            }
 +const VkPhysicalDeviceIndexTypeUint8FeaturesEXT&                                      getIndexTypeUint8FeaturesEXT                                    (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceIndexTypeUint8FeaturesEXT>();                                     }
 +const VkPhysicalDeviceLineRasterizationFeaturesEXT&                                   getLineRasterizationFeaturesEXT                                 (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceLineRasterizationFeaturesEXT>();                          }
 +const VkPhysicalDeviceMultiviewFeatures&                                                      getMultiviewFeatures                                                    (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceMultiviewFeatures>();                                                     }
++const VkPhysicalDevicePerformanceQueryFeaturesKHR&                                    getPerformanceQueryFeatures                                             (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDevicePerformanceQueryFeaturesKHR>();                           }
 +const VkPhysicalDeviceProtectedMemoryFeatures&                                                getProtectedMemoryFeatures                                              (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceProtectedMemoryFeatures>();                                       }
 +const VkPhysicalDeviceRobustness2FeaturesEXT&                                         getRobustness2FeaturesEXT                                               (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceRobustness2FeaturesEXT>();                                        }
 +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 VkPhysicalDeviceShaderAtomicFloatFeaturesEXT&                                   getShaderAtomicFloatFeaturesEXT                                 (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderAtomicFloatFeaturesEXT>();                          }
 +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 VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT&                      getShaderImageAtomicInt64FeaturesEXT                    (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT>();                     }
 +const VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures&                    getShaderSubgroupExtendedTypesFeatures                  (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures>();           }
 +const VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR&                   getShaderTerminateInvocationFeatures                    (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR>();          }
 +const VkPhysicalDeviceSubgroupSizeControlFeaturesEXT&                         getSubgroupSizeControlFeaturesEXT                               (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceSubgroupSizeControlFeaturesEXT>();                        }
++const VkPhysicalDeviceSynchronization2FeaturesKHR&                                    getSynchronization2Features                                             (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceSynchronization2FeaturesKHR>();                           }
 +const VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT&                                getTexelBufferAlignmentFeaturesEXT                              (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT>();                       }
 +const VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT&                   getTextureCompressionASTCHDRFeaturesEXT                 (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT>();          }
 +const VkPhysicalDeviceTimelineSemaphoreFeatures&                                      getTimelineSemaphoreFeatures                                    (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceTimelineSemaphoreFeatures>();                                     }
 +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 VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT&                     getVertexInputDynamicStateFeaturesEXT                   (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT>();            }
 +const VkPhysicalDeviceVulkanMemoryModelFeatures&                                      getVulkanMemoryModelFeatures                                    (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceVulkanMemoryModelFeatures>();                                     }
 +const VkPhysicalDeviceVulkanSC10Features&                                                     getVulkanSC10Features                                                   (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceVulkanSC10Features>();                                            }
++const VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT&                               getYcbcr2Plane444FormatsFeaturesEXT                             (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT>();                      }
 +const VkPhysicalDeviceYcbcrImageArraysFeaturesEXT&                                    getYcbcrImageArraysFeaturesEXT                                  (void) const { return m_deviceFeatures.getFeatureType<VkPhysicalDeviceYcbcrImageArraysFeaturesEXT>();                           }
index e8e6d99,0000000..e679d62
mode 100644,000000..100644
--- /dev/null
@@@ -1,190 -1,0 +1,211 @@@
- GetImageSparseMemoryRequirementsFunc          getImageSparseMemoryRequirements;
- QueueBindSparseFunc                                                   queueBindSparse;
 +/* WARNING: This is auto-generated file. Do not modify, since changes will
 + * be lost! Modify the generating script instead.
 + */
 +GetDeviceProcAddrFunc                                         getDeviceProcAddr;
 +DestroyDeviceFunc                                                     destroyDevice;
 +GetDeviceQueueFunc                                                    getDeviceQueue;
 +QueueSubmitFunc                                                               queueSubmit;
 +QueueWaitIdleFunc                                                     queueWaitIdle;
 +DeviceWaitIdleFunc                                                    deviceWaitIdle;
 +AllocateMemoryFunc                                                    allocateMemory;
 +MapMemoryFunc                                                         mapMemory;
 +UnmapMemoryFunc                                                               unmapMemory;
 +FlushMappedMemoryRangesFunc                                   flushMappedMemoryRanges;
 +InvalidateMappedMemoryRangesFunc                      invalidateMappedMemoryRanges;
 +GetDeviceMemoryCommitmentFunc                         getDeviceMemoryCommitment;
 +BindBufferMemoryFunc                                          bindBufferMemory;
 +BindImageMemoryFunc                                                   bindImageMemory;
 +GetBufferMemoryRequirementsFunc                               getBufferMemoryRequirements;
 +GetImageMemoryRequirementsFunc                                getImageMemoryRequirements;
- GetCommandPoolMemoryConsumptionFunc                   getCommandPoolMemoryConsumption;
- GetFaultDataFunc                                                      getFaultData;
 +CreateFenceFunc                                                               createFence;
 +DestroyFenceFunc                                                      destroyFence;
 +ResetFencesFunc                                                               resetFences;
 +GetFenceStatusFunc                                                    getFenceStatus;
 +WaitForFencesFunc                                                     waitForFences;
 +CreateSemaphoreFunc                                                   createSemaphore;
 +DestroySemaphoreFunc                                          destroySemaphore;
 +CreateEventFunc                                                               createEvent;
 +DestroyEventFunc                                                      destroyEvent;
 +GetEventStatusFunc                                                    getEventStatus;
 +SetEventFunc                                                          setEvent;
 +ResetEventFunc                                                                resetEvent;
 +CreateQueryPoolFunc                                                   createQueryPool;
 +GetQueryPoolResultsFunc                                               getQueryPoolResults;
 +CreateBufferFunc                                                      createBuffer;
 +DestroyBufferFunc                                                     destroyBuffer;
 +CreateBufferViewFunc                                          createBufferView;
 +DestroyBufferViewFunc                                         destroyBufferView;
 +CreateImageFunc                                                               createImage;
 +DestroyImageFunc                                                      destroyImage;
 +GetImageSubresourceLayoutFunc                         getImageSubresourceLayout;
 +CreateImageViewFunc                                                   createImageView;
 +DestroyImageViewFunc                                          destroyImageView;
 +CreatePipelineCacheFunc                                               createPipelineCache;
 +DestroyPipelineCacheFunc                                      destroyPipelineCache;
 +CreateGraphicsPipelinesFunc                                   createGraphicsPipelines;
 +CreateComputePipelinesFunc                                    createComputePipelines;
 +DestroyPipelineFunc                                                   destroyPipeline;
 +CreatePipelineLayoutFunc                                      createPipelineLayout;
 +DestroyPipelineLayoutFunc                                     destroyPipelineLayout;
 +CreateSamplerFunc                                                     createSampler;
 +DestroySamplerFunc                                                    destroySampler;
 +CreateDescriptorSetLayoutFunc                         createDescriptorSetLayout;
 +DestroyDescriptorSetLayoutFunc                                destroyDescriptorSetLayout;
 +CreateDescriptorPoolFunc                                      createDescriptorPool;
 +ResetDescriptorPoolFunc                                               resetDescriptorPool;
 +AllocateDescriptorSetsFunc                                    allocateDescriptorSets;
 +FreeDescriptorSetsFunc                                                freeDescriptorSets;
 +UpdateDescriptorSetsFunc                                      updateDescriptorSets;
 +CreateFramebufferFunc                                         createFramebuffer;
 +DestroyFramebufferFunc                                                destroyFramebuffer;
 +CreateRenderPassFunc                                          createRenderPass;
 +DestroyRenderPassFunc                                         destroyRenderPass;
 +GetRenderAreaGranularityFunc                          getRenderAreaGranularity;
 +CreateCommandPoolFunc                                         createCommandPool;
 +ResetCommandPoolFunc                                          resetCommandPool;
 +AllocateCommandBuffersFunc                                    allocateCommandBuffers;
 +FreeCommandBuffersFunc                                                freeCommandBuffers;
 +BeginCommandBufferFunc                                                beginCommandBuffer;
 +EndCommandBufferFunc                                          endCommandBuffer;
 +ResetCommandBufferFunc                                                resetCommandBuffer;
 +CmdBindPipelineFunc                                                   cmdBindPipeline;
 +CmdSetViewportFunc                                                    cmdSetViewport;
 +CmdSetScissorFunc                                                     cmdSetScissor;
 +CmdSetLineWidthFunc                                                   cmdSetLineWidth;
 +CmdSetDepthBiasFunc                                                   cmdSetDepthBias;
 +CmdSetBlendConstantsFunc                                      cmdSetBlendConstants;
 +CmdSetDepthBoundsFunc                                         cmdSetDepthBounds;
 +CmdSetStencilCompareMaskFunc                          cmdSetStencilCompareMask;
 +CmdSetStencilWriteMaskFunc                                    cmdSetStencilWriteMask;
 +CmdSetStencilReferenceFunc                                    cmdSetStencilReference;
 +CmdBindDescriptorSetsFunc                                     cmdBindDescriptorSets;
 +CmdBindIndexBufferFunc                                                cmdBindIndexBuffer;
 +CmdBindVertexBuffersFunc                                      cmdBindVertexBuffers;
 +CmdDrawFunc                                                                   cmdDraw;
 +CmdDrawIndexedFunc                                                    cmdDrawIndexed;
 +CmdDrawIndirectFunc                                                   cmdDrawIndirect;
 +CmdDrawIndexedIndirectFunc                                    cmdDrawIndexedIndirect;
 +CmdDispatchFunc                                                               cmdDispatch;
 +CmdDispatchIndirectFunc                                               cmdDispatchIndirect;
 +CmdCopyBufferFunc                                                     cmdCopyBuffer;
 +CmdCopyImageFunc                                                      cmdCopyImage;
 +CmdBlitImageFunc                                                      cmdBlitImage;
 +CmdCopyBufferToImageFunc                                      cmdCopyBufferToImage;
 +CmdCopyImageToBufferFunc                                      cmdCopyImageToBuffer;
 +CmdUpdateBufferFunc                                                   cmdUpdateBuffer;
 +CmdFillBufferFunc                                                     cmdFillBuffer;
 +CmdClearColorImageFunc                                                cmdClearColorImage;
 +CmdClearDepthStencilImageFunc                         cmdClearDepthStencilImage;
 +CmdClearAttachmentsFunc                                               cmdClearAttachments;
 +CmdResolveImageFunc                                                   cmdResolveImage;
 +CmdSetEventFunc                                                               cmdSetEvent;
 +CmdResetEventFunc                                                     cmdResetEvent;
 +CmdWaitEventsFunc                                                     cmdWaitEvents;
 +CmdPipelineBarrierFunc                                                cmdPipelineBarrier;
 +CmdBeginQueryFunc                                                     cmdBeginQuery;
 +CmdEndQueryFunc                                                               cmdEndQuery;
 +CmdResetQueryPoolFunc                                         cmdResetQueryPool;
 +CmdWriteTimestampFunc                                         cmdWriteTimestamp;
 +CmdCopyQueryPoolResultsFunc                                   cmdCopyQueryPoolResults;
 +CmdPushConstantsFunc                                          cmdPushConstants;
 +CmdBeginRenderPassFunc                                                cmdBeginRenderPass;
 +CmdNextSubpassFunc                                                    cmdNextSubpass;
 +CmdEndRenderPassFunc                                          cmdEndRenderPass;
 +CmdExecuteCommandsFunc                                                cmdExecuteCommands;
- GetImageSparseMemoryRequirements2Func         getImageSparseMemoryRequirements2;
 +BindBufferMemory2Func                                         bindBufferMemory2;
 +BindImageMemory2Func                                          bindImageMemory2;
 +GetDeviceGroupPeerMemoryFeaturesFunc          getDeviceGroupPeerMemoryFeatures;
 +CmdSetDeviceMaskFunc                                          cmdSetDeviceMask;
 +CmdDispatchBaseFunc                                                   cmdDispatchBase;
 +GetImageMemoryRequirements2Func                               getImageMemoryRequirements2;
 +GetBufferMemoryRequirements2Func                      getBufferMemoryRequirements2;
- GetFaultDataKHRFunc                                                   getFaultDataKHR;
 +GetDeviceQueue2Func                                                   getDeviceQueue2;
 +CreateSamplerYcbcrConversionFunc                      createSamplerYcbcrConversion;
 +DestroySamplerYcbcrConversionFunc                     destroySamplerYcbcrConversion;
 +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;
++GetCommandPoolMemoryConsumptionFunc                   getCommandPoolMemoryConsumption;
++GetFaultDataFunc                                                      getFaultData;
 +CreateSwapchainKHRFunc                                                createSwapchainKHR;
 +GetSwapchainImagesKHRFunc                                     getSwapchainImagesKHR;
 +AcquireNextImageKHRFunc                                               acquireNextImageKHR;
 +QueuePresentKHRFunc                                                   queuePresentKHR;
 +GetDeviceGroupPresentCapabilitiesKHRFunc      getDeviceGroupPresentCapabilitiesKHR;
 +GetDeviceGroupSurfacePresentModesKHRFunc      getDeviceGroupSurfacePresentModesKHR;
 +AcquireNextImage2KHRFunc                                      acquireNextImage2KHR;
 +CreateSharedSwapchainsKHRFunc                         createSharedSwapchainsKHR;
 +GetMemoryFdKHRFunc                                                    getMemoryFdKHR;
 +GetMemoryFdPropertiesKHRFunc                          getMemoryFdPropertiesKHR;
 +ImportSemaphoreFdKHRFunc                                      importSemaphoreFdKHR;
 +GetSemaphoreFdKHRFunc                                         getSemaphoreFdKHR;
 +GetSwapchainStatusKHRFunc                                     getSwapchainStatusKHR;
 +ImportFenceFdKHRFunc                                          importFenceFdKHR;
 +GetFenceFdKHRFunc                                                     getFenceFdKHR;
++AcquireProfilingLockKHRFunc                                   acquireProfilingLockKHR;
++ReleaseProfilingLockKHRFunc                                   releaseProfilingLockKHR;
 +CmdSetFragmentShadingRateKHRFunc                      cmdSetFragmentShadingRateKHR;
 +CmdRefreshObjectsKHRFunc                                      cmdRefreshObjectsKHR;
++CmdSetEvent2KHRFunc                                                   cmdSetEvent2KHR;
++CmdResetEvent2KHRFunc                                         cmdResetEvent2KHR;
++CmdWaitEvents2KHRFunc                                         cmdWaitEvents2KHR;
++CmdPipelineBarrier2KHRFunc                                    cmdPipelineBarrier2KHR;
++CmdWriteTimestamp2KHRFunc                                     cmdWriteTimestamp2KHR;
++QueueSubmit2KHRFunc                                                   queueSubmit2KHR;
++CmdWriteBufferMarker2AMDFunc                          cmdWriteBufferMarker2AMD;
++GetQueueCheckpointData2NVFunc                         getQueueCheckpointData2NV;
 +CmdCopyBuffer2KHRFunc                                         cmdCopyBuffer2KHR;
 +CmdCopyImage2KHRFunc                                          cmdCopyImage2KHR;
 +CmdCopyBufferToImage2KHRFunc                          cmdCopyBufferToImage2KHR;
 +CmdCopyImageToBuffer2KHRFunc                          cmdCopyImageToBuffer2KHR;
 +CmdBlitImage2KHRFunc                                          cmdBlitImage2KHR;
 +CmdResolveImage2KHRFunc                                               cmdResolveImage2KHR;
 +DisplayPowerControlEXTFunc                                    displayPowerControlEXT;
 +RegisterDeviceEventEXTFunc                                    registerDeviceEventEXT;
 +RegisterDisplayEventEXTFunc                                   registerDisplayEventEXT;
 +GetSwapchainCounterEXTFunc                                    getSwapchainCounterEXT;
 +CmdSetDiscardRectangleEXTFunc                         cmdSetDiscardRectangleEXT;
 +SetHdrMetadataEXTFunc                                         setHdrMetadataEXT;
++SetDebugUtilsObjectNameEXTFunc                                setDebugUtilsObjectNameEXT;
++SetDebugUtilsObjectTagEXTFunc                         setDebugUtilsObjectTagEXT;
++QueueBeginDebugUtilsLabelEXTFunc                      queueBeginDebugUtilsLabelEXT;
++QueueEndDebugUtilsLabelEXTFunc                                queueEndDebugUtilsLabelEXT;
++QueueInsertDebugUtilsLabelEXTFunc                     queueInsertDebugUtilsLabelEXT;
++CmdBeginDebugUtilsLabelEXTFunc                                cmdBeginDebugUtilsLabelEXT;
++CmdEndDebugUtilsLabelEXTFunc                          cmdEndDebugUtilsLabelEXT;
++CmdInsertDebugUtilsLabelEXTFunc                               cmdInsertDebugUtilsLabelEXT;
 +CmdSetSampleLocationsEXTFunc                          cmdSetSampleLocationsEXT;
 +GetImageDrmFormatModifierPropertiesEXTFunc    getImageDrmFormatModifierPropertiesEXT;
 +GetMemoryHostPointerPropertiesEXTFunc         getMemoryHostPointerPropertiesEXT;
 +GetCalibratedTimestampsEXTFunc                                getCalibratedTimestampsEXT;
 +CmdSetLineStippleEXTFunc                                      cmdSetLineStippleEXT;
 +CmdSetCullModeEXTFunc                                         cmdSetCullModeEXT;
 +CmdSetFrontFaceEXTFunc                                                cmdSetFrontFaceEXT;
 +CmdSetPrimitiveTopologyEXTFunc                                cmdSetPrimitiveTopologyEXT;
 +CmdSetViewportWithCountEXTFunc                                cmdSetViewportWithCountEXT;
 +CmdSetScissorWithCountEXTFunc                         cmdSetScissorWithCountEXT;
 +CmdBindVertexBuffers2EXTFunc                          cmdBindVertexBuffers2EXT;
 +CmdSetDepthTestEnableEXTFunc                          cmdSetDepthTestEnableEXT;
 +CmdSetDepthWriteEnableEXTFunc                         cmdSetDepthWriteEnableEXT;
 +CmdSetDepthCompareOpEXTFunc                                   cmdSetDepthCompareOpEXT;
 +CmdSetDepthBoundsTestEnableEXTFunc                    cmdSetDepthBoundsTestEnableEXT;
 +CmdSetStencilTestEnableEXTFunc                                cmdSetStencilTestEnableEXT;
 +CmdSetStencilOpEXTFunc                                                cmdSetStencilOpEXT;
++CmdSetVertexInputEXTFunc                                      cmdSetVertexInputEXT;
++CmdSetPatchControlPointsEXTFunc                               cmdSetPatchControlPointsEXT;
++CmdSetRasterizerDiscardEnableEXTFunc          cmdSetRasterizerDiscardEnableEXT;
++CmdSetDepthBiasEnableEXTFunc                          cmdSetDepthBiasEnableEXT;
++CmdSetLogicOpEXTFunc                                          cmdSetLogicOpEXT;
++CmdSetPrimitiveRestartEnableEXTFunc                   cmdSetPrimitiveRestartEnableEXT;
++CmdSetColorWriteEnableEXTFunc                         cmdSetColorWriteEnableEXT;
index e0494d7,0000000..0f37db4
mode 100644,000000..100644
--- /dev/null
@@@ -1,239 -1,0 +1,239 @@@
- #define VK_KHR_FAULT_HANDLING_EXTENSION_NAME "VK_KHR_fault_handling"
 +/* 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_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME "VK_EXT_custom_border_color"
 +#define DECL_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME "core_property"
 +#define DECL_DESCRIPTOR_INDEXING_EXTENSION_NAME "core_property"
 +#define VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME "VK_EXT_discard_rectangles"
 +#define DECL_DRIVER_EXTENSION_NAME "core_property"
 +#define VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME "VK_EXT_external_memory_host"
- template<> void initPropertyFromBlob<VkPhysicalDeviceVulkanSC10Properties>(VkPhysicalDeviceVulkanSC10Properties&, const AllPropertiesBlobs&) {}
- template<> void initPropertyFromBlob<VkPhysicalDeviceFaultHandlingProperties>(VkPhysicalDeviceFaultHandlingProperties&, const AllPropertiesBlobs&) {}
 +#define DECL_FLOAT_CONTROLS_EXTENSION_NAME "core_property"
 +#define VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME "VK_KHR_fragment_shading_rate"
 +#define DECL_ID_EXTENSION_NAME "core_property"
 +#define VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME "VK_EXT_line_rasterization"
 +#define DECL_MAINTENANCE_3_EXTENSION_NAME "core_property"
 +#define DECL_MULTIVIEW_EXTENSION_NAME "core_property"
++#define VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME "VK_KHR_performance_query"
 +#define DECL_POINT_CLIPPING_EXTENSION_NAME "core_property"
 +#define DECL_PROTECTED_MEMORY_EXTENSION_NAME "core_property"
 +#define VK_EXT_ROBUSTNESS_2_EXTENSION_NAME "VK_EXT_robustness2"
 +#define DECL_SAMPLER_FILTER_MINMAX_EXTENSION_NAME "core_property"
 +#define VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME "VK_EXT_sample_locations"
 +#define DECL_SUBGROUP_EXTENSION_NAME "core_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 DECL_TIMELINE_SEMAPHORE_EXTENSION_NAME "core_property"
 +#define VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME "VK_EXT_vertex_attribute_divisor"
 +
 +
 +template<> void initPropertyFromBlob<VkPhysicalDeviceSubgroupProperties>(VkPhysicalDeviceSubgroupProperties& propertyType, const AllPropertiesBlobs& allPropertiesBlobs)
 +{
 +      propertyType.subgroupSize = allPropertiesBlobs.vk11.subgroupSize;
 +      propertyType.supportedStages = allPropertiesBlobs.vk11.subgroupSupportedStages;
 +      propertyType.supportedOperations = allPropertiesBlobs.vk11.subgroupSupportedOperations;
 +      propertyType.quadOperationsInAllStages = allPropertiesBlobs.vk11.subgroupQuadOperationsInAllStages;
 +}
 +template<> void initPropertyFromBlob<VkPhysicalDevicePointClippingProperties>(VkPhysicalDevicePointClippingProperties& propertyType, const AllPropertiesBlobs& allPropertiesBlobs)
 +{
 +      propertyType.pointClippingBehavior = allPropertiesBlobs.vk11.pointClippingBehavior;
 +}
 +template<> void initPropertyFromBlob<VkPhysicalDeviceMultiviewProperties>(VkPhysicalDeviceMultiviewProperties& propertyType, const AllPropertiesBlobs& allPropertiesBlobs)
 +{
 +      propertyType.maxMultiviewViewCount = allPropertiesBlobs.vk11.maxMultiviewViewCount;
 +      propertyType.maxMultiviewInstanceIndex = allPropertiesBlobs.vk11.maxMultiviewInstanceIndex;
 +}
 +template<> void initPropertyFromBlob<VkPhysicalDeviceProtectedMemoryProperties>(VkPhysicalDeviceProtectedMemoryProperties& propertyType, const AllPropertiesBlobs& allPropertiesBlobs)
 +{
 +      propertyType.protectedNoFault = allPropertiesBlobs.vk11.protectedNoFault;
 +}
 +template<> void initPropertyFromBlob<VkPhysicalDeviceIDProperties>(VkPhysicalDeviceIDProperties& propertyType, const AllPropertiesBlobs& allPropertiesBlobs)
 +{
 +      memcpy(propertyType.deviceUUID, allPropertiesBlobs.vk11.deviceUUID, sizeof(deUint8) * VK_UUID_SIZE);
 +      memcpy(propertyType.driverUUID, allPropertiesBlobs.vk11.driverUUID, sizeof(deUint8) * VK_UUID_SIZE);
 +      memcpy(propertyType.deviceLUID, allPropertiesBlobs.vk11.deviceLUID, sizeof(deUint8) * VK_LUID_SIZE);
 +      propertyType.deviceNodeMask = allPropertiesBlobs.vk11.deviceNodeMask;
 +      propertyType.deviceLUIDValid = allPropertiesBlobs.vk11.deviceLUIDValid;
 +}
 +template<> void initPropertyFromBlob<VkPhysicalDeviceMaintenance3Properties>(VkPhysicalDeviceMaintenance3Properties& propertyType, const AllPropertiesBlobs& allPropertiesBlobs)
 +{
 +      propertyType.maxPerSetDescriptors = allPropertiesBlobs.vk11.maxPerSetDescriptors;
 +      propertyType.maxMemoryAllocationSize = allPropertiesBlobs.vk11.maxMemoryAllocationSize;
 +}
 +template<> void initPropertyFromBlob<VkPhysicalDeviceDriverProperties>(VkPhysicalDeviceDriverProperties& propertyType, const AllPropertiesBlobs& allPropertiesBlobs)
 +{
 +      propertyType.driverID = allPropertiesBlobs.vk12.driverID;
 +      memcpy(propertyType.driverName, allPropertiesBlobs.vk12.driverName, sizeof(char) * VK_MAX_DRIVER_NAME_SIZE);
 +      memcpy(propertyType.driverInfo, allPropertiesBlobs.vk12.driverInfo, sizeof(char) * VK_MAX_DRIVER_INFO_SIZE);
 +      propertyType.conformanceVersion = allPropertiesBlobs.vk12.conformanceVersion;
 +}
 +template<> void initPropertyFromBlob<VkPhysicalDeviceFloatControlsProperties>(VkPhysicalDeviceFloatControlsProperties& propertyType, const AllPropertiesBlobs& allPropertiesBlobs)
 +{
 +      propertyType.denormBehaviorIndependence = allPropertiesBlobs.vk12.denormBehaviorIndependence;
 +      propertyType.roundingModeIndependence = allPropertiesBlobs.vk12.roundingModeIndependence;
 +      propertyType.shaderSignedZeroInfNanPreserveFloat16 = allPropertiesBlobs.vk12.shaderSignedZeroInfNanPreserveFloat16;
 +      propertyType.shaderSignedZeroInfNanPreserveFloat32 = allPropertiesBlobs.vk12.shaderSignedZeroInfNanPreserveFloat32;
 +      propertyType.shaderSignedZeroInfNanPreserveFloat64 = allPropertiesBlobs.vk12.shaderSignedZeroInfNanPreserveFloat64;
 +      propertyType.shaderDenormPreserveFloat16 = allPropertiesBlobs.vk12.shaderDenormPreserveFloat16;
 +      propertyType.shaderDenormPreserveFloat32 = allPropertiesBlobs.vk12.shaderDenormPreserveFloat32;
 +      propertyType.shaderDenormPreserveFloat64 = allPropertiesBlobs.vk12.shaderDenormPreserveFloat64;
 +      propertyType.shaderDenormFlushToZeroFloat16 = allPropertiesBlobs.vk12.shaderDenormFlushToZeroFloat16;
 +      propertyType.shaderDenormFlushToZeroFloat32 = allPropertiesBlobs.vk12.shaderDenormFlushToZeroFloat32;
 +      propertyType.shaderDenormFlushToZeroFloat64 = allPropertiesBlobs.vk12.shaderDenormFlushToZeroFloat64;
 +      propertyType.shaderRoundingModeRTEFloat16 = allPropertiesBlobs.vk12.shaderRoundingModeRTEFloat16;
 +      propertyType.shaderRoundingModeRTEFloat32 = allPropertiesBlobs.vk12.shaderRoundingModeRTEFloat32;
 +      propertyType.shaderRoundingModeRTEFloat64 = allPropertiesBlobs.vk12.shaderRoundingModeRTEFloat64;
 +      propertyType.shaderRoundingModeRTZFloat16 = allPropertiesBlobs.vk12.shaderRoundingModeRTZFloat16;
 +      propertyType.shaderRoundingModeRTZFloat32 = allPropertiesBlobs.vk12.shaderRoundingModeRTZFloat32;
 +      propertyType.shaderRoundingModeRTZFloat64 = allPropertiesBlobs.vk12.shaderRoundingModeRTZFloat64;
 +}
 +template<> void initPropertyFromBlob<VkPhysicalDeviceDescriptorIndexingProperties>(VkPhysicalDeviceDescriptorIndexingProperties& propertyType, const AllPropertiesBlobs& allPropertiesBlobs)
 +{
 +      propertyType.maxUpdateAfterBindDescriptorsInAllPools = allPropertiesBlobs.vk12.maxUpdateAfterBindDescriptorsInAllPools;
 +      propertyType.shaderUniformBufferArrayNonUniformIndexingNative = allPropertiesBlobs.vk12.shaderUniformBufferArrayNonUniformIndexingNative;
 +      propertyType.shaderSampledImageArrayNonUniformIndexingNative = allPropertiesBlobs.vk12.shaderSampledImageArrayNonUniformIndexingNative;
 +      propertyType.shaderStorageBufferArrayNonUniformIndexingNative = allPropertiesBlobs.vk12.shaderStorageBufferArrayNonUniformIndexingNative;
 +      propertyType.shaderStorageImageArrayNonUniformIndexingNative = allPropertiesBlobs.vk12.shaderStorageImageArrayNonUniformIndexingNative;
 +      propertyType.shaderInputAttachmentArrayNonUniformIndexingNative = allPropertiesBlobs.vk12.shaderInputAttachmentArrayNonUniformIndexingNative;
 +      propertyType.robustBufferAccessUpdateAfterBind = allPropertiesBlobs.vk12.robustBufferAccessUpdateAfterBind;
 +      propertyType.quadDivergentImplicitLod = allPropertiesBlobs.vk12.quadDivergentImplicitLod;
 +      propertyType.maxPerStageDescriptorUpdateAfterBindSamplers = allPropertiesBlobs.vk12.maxPerStageDescriptorUpdateAfterBindSamplers;
 +      propertyType.maxPerStageDescriptorUpdateAfterBindUniformBuffers = allPropertiesBlobs.vk12.maxPerStageDescriptorUpdateAfterBindUniformBuffers;
 +      propertyType.maxPerStageDescriptorUpdateAfterBindStorageBuffers = allPropertiesBlobs.vk12.maxPerStageDescriptorUpdateAfterBindStorageBuffers;
 +      propertyType.maxPerStageDescriptorUpdateAfterBindSampledImages = allPropertiesBlobs.vk12.maxPerStageDescriptorUpdateAfterBindSampledImages;
 +      propertyType.maxPerStageDescriptorUpdateAfterBindStorageImages = allPropertiesBlobs.vk12.maxPerStageDescriptorUpdateAfterBindStorageImages;
 +      propertyType.maxPerStageDescriptorUpdateAfterBindInputAttachments = allPropertiesBlobs.vk12.maxPerStageDescriptorUpdateAfterBindInputAttachments;
 +      propertyType.maxPerStageUpdateAfterBindResources = allPropertiesBlobs.vk12.maxPerStageUpdateAfterBindResources;
 +      propertyType.maxDescriptorSetUpdateAfterBindSamplers = allPropertiesBlobs.vk12.maxDescriptorSetUpdateAfterBindSamplers;
 +      propertyType.maxDescriptorSetUpdateAfterBindUniformBuffers = allPropertiesBlobs.vk12.maxDescriptorSetUpdateAfterBindUniformBuffers;
 +      propertyType.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic = allPropertiesBlobs.vk12.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic;
 +      propertyType.maxDescriptorSetUpdateAfterBindStorageBuffers = allPropertiesBlobs.vk12.maxDescriptorSetUpdateAfterBindStorageBuffers;
 +      propertyType.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic = allPropertiesBlobs.vk12.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic;
 +      propertyType.maxDescriptorSetUpdateAfterBindSampledImages = allPropertiesBlobs.vk12.maxDescriptorSetUpdateAfterBindSampledImages;
 +      propertyType.maxDescriptorSetUpdateAfterBindStorageImages = allPropertiesBlobs.vk12.maxDescriptorSetUpdateAfterBindStorageImages;
 +      propertyType.maxDescriptorSetUpdateAfterBindInputAttachments = allPropertiesBlobs.vk12.maxDescriptorSetUpdateAfterBindInputAttachments;
 +}
 +template<> void initPropertyFromBlob<VkPhysicalDeviceDepthStencilResolveProperties>(VkPhysicalDeviceDepthStencilResolveProperties& propertyType, const AllPropertiesBlobs& allPropertiesBlobs)
 +{
 +      propertyType.supportedDepthResolveModes = allPropertiesBlobs.vk12.supportedDepthResolveModes;
 +      propertyType.supportedStencilResolveModes = allPropertiesBlobs.vk12.supportedStencilResolveModes;
 +      propertyType.independentResolveNone = allPropertiesBlobs.vk12.independentResolveNone;
 +      propertyType.independentResolve = allPropertiesBlobs.vk12.independentResolve;
 +}
 +template<> void initPropertyFromBlob<VkPhysicalDeviceSamplerFilterMinmaxProperties>(VkPhysicalDeviceSamplerFilterMinmaxProperties& propertyType, const AllPropertiesBlobs& allPropertiesBlobs)
 +{
 +      propertyType.filterMinmaxSingleComponentFormats = allPropertiesBlobs.vk12.filterMinmaxSingleComponentFormats;
 +      propertyType.filterMinmaxImageComponentMapping = allPropertiesBlobs.vk12.filterMinmaxImageComponentMapping;
 +}
 +template<> void initPropertyFromBlob<VkPhysicalDeviceTimelineSemaphoreProperties>(VkPhysicalDeviceTimelineSemaphoreProperties& propertyType, const AllPropertiesBlobs& allPropertiesBlobs)
 +{
 +      propertyType.maxTimelineSemaphoreValueDifference = allPropertiesBlobs.vk12.maxTimelineSemaphoreValueDifference;
 +}
 +
 +// generic template is not enough for some compilers
 +template<> void initPropertyFromBlob<VkPhysicalDeviceMemoryProperties>(VkPhysicalDeviceMemoryProperties&, const AllPropertiesBlobs&) {}
 +template<> void initPropertyFromBlob<VkPhysicalDeviceSparseProperties>(VkPhysicalDeviceSparseProperties&, const AllPropertiesBlobs&) {}
- template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceFaultHandlingProperties>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_HANDLING_PROPERTIES, VK_KHR_FAULT_HANDLING_EXTENSION_NAME, VK_KHR_FAULT_HANDLING_SPEC_VERSION, 17}; }
- template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceFloatControlsProperties>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES, DECL_FLOAT_CONTROLS_EXTENSION_NAME, 0, 16}; }
- template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceFragmentShadingRatePropertiesKHR>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR, VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME, VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION, 15}; }
- template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceIDProperties>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES, DECL_ID_EXTENSION_NAME, 0, 14}; }
- 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, 13}; }
- template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceMaintenance3Properties>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES, DECL_MAINTENANCE_3_EXTENSION_NAME, 0, 12}; }
- template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceMultiviewProperties>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES, DECL_MULTIVIEW_EXTENSION_NAME, 0, 11}; }
 +template<> void initPropertyFromBlob<VkPhysicalDeviceGroupProperties>(VkPhysicalDeviceGroupProperties&, const AllPropertiesBlobs&) {}
 +template<> void initPropertyFromBlob<VkPhysicalDeviceMemoryProperties2>(VkPhysicalDeviceMemoryProperties2&, const AllPropertiesBlobs&) {}
++template<> void initPropertyFromBlob<VkPhysicalDeviceVulkanSC10Properties>(VkPhysicalDeviceVulkanSC10Properties&, const AllPropertiesBlobs&) {}
++template<> void initPropertyFromBlob<VkPhysicalDevicePerformanceQueryPropertiesKHR>(VkPhysicalDevicePerformanceQueryPropertiesKHR&, const AllPropertiesBlobs&) {}
 +template<> void initPropertyFromBlob<VkPhysicalDeviceFragmentShadingRatePropertiesKHR>(VkPhysicalDeviceFragmentShadingRatePropertiesKHR&, const AllPropertiesBlobs&) {}
 +template<> void initPropertyFromBlob<VkPhysicalDeviceDiscardRectanglePropertiesEXT>(VkPhysicalDeviceDiscardRectanglePropertiesEXT&, const AllPropertiesBlobs&) {}
 +template<> void initPropertyFromBlob<VkPhysicalDeviceConservativeRasterizationPropertiesEXT>(VkPhysicalDeviceConservativeRasterizationPropertiesEXT&, const AllPropertiesBlobs&) {}
 +template<> void initPropertyFromBlob<VkPhysicalDeviceSampleLocationsPropertiesEXT>(VkPhysicalDeviceSampleLocationsPropertiesEXT&, const AllPropertiesBlobs&) {}
 +template<> void initPropertyFromBlob<VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT>(VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT&, const AllPropertiesBlobs&) {}
 +template<> void initPropertyFromBlob<VkPhysicalDeviceExternalMemoryHostPropertiesEXT>(VkPhysicalDeviceExternalMemoryHostPropertiesEXT&, const AllPropertiesBlobs&) {}
 +template<> void initPropertyFromBlob<VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT>(VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT&, const AllPropertiesBlobs&) {}
 +template<> void initPropertyFromBlob<VkPhysicalDevicePCIBusInfoPropertiesEXT>(VkPhysicalDevicePCIBusInfoPropertiesEXT&, const AllPropertiesBlobs&) {}
 +template<> void initPropertyFromBlob<VkPhysicalDeviceSubgroupSizeControlPropertiesEXT>(VkPhysicalDeviceSubgroupSizeControlPropertiesEXT&, const AllPropertiesBlobs&) {}
 +template<> void initPropertyFromBlob<VkPhysicalDeviceMemoryBudgetPropertiesEXT>(VkPhysicalDeviceMemoryBudgetPropertiesEXT&, const AllPropertiesBlobs&) {}
 +template<> void initPropertyFromBlob<VkPhysicalDeviceLineRasterizationPropertiesEXT>(VkPhysicalDeviceLineRasterizationPropertiesEXT&, const AllPropertiesBlobs&) {}
 +template<> void initPropertyFromBlob<VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT>(VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT&, const AllPropertiesBlobs&) {}
 +template<> void initPropertyFromBlob<VkPhysicalDeviceRobustness2PropertiesEXT>(VkPhysicalDeviceRobustness2PropertiesEXT&, const AllPropertiesBlobs&) {}
 +template<> void initPropertyFromBlob<VkPhysicalDeviceCustomBorderColorPropertiesEXT>(VkPhysicalDeviceCustomBorderColorPropertiesEXT&, const AllPropertiesBlobs&) {}
 +
 +
 +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, 25}; }
 +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, 24}; }
 +template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceCustomBorderColorPropertiesEXT>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT, VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME, VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION, 23}; }
 +template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceDepthStencilResolveProperties>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES, DECL_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME, 0, 22}; }
 +template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceDescriptorIndexingProperties>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES, DECL_DESCRIPTOR_INDEXING_EXTENSION_NAME, 0, 21}; }
 +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, 20}; }
 +template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceDriverProperties>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES, DECL_DRIVER_EXTENSION_NAME, 0, 19}; }
 +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, 18}; }
-       { createPropertyStructWrapper<VkPhysicalDeviceFaultHandlingProperties>, VK_KHR_FAULT_HANDLING_EXTENSION_NAME, VK_KHR_FAULT_HANDLING_SPEC_VERSION },
++template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceFloatControlsProperties>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES, DECL_FLOAT_CONTROLS_EXTENSION_NAME, 0, 17}; }
++template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceFragmentShadingRatePropertiesKHR>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR, VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME, VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION, 16}; }
++template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceIDProperties>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES, DECL_ID_EXTENSION_NAME, 0, 15}; }
++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, 14}; }
++template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceMaintenance3Properties>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES, DECL_MAINTENANCE_3_EXTENSION_NAME, 0, 13}; }
++template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceMultiviewProperties>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES, DECL_MULTIVIEW_EXTENSION_NAME, 0, 12}; }
++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, 11}; }
 +template<> PropertyDesc makePropertyDesc<VkPhysicalDevicePointClippingProperties>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES, DECL_POINT_CLIPPING_EXTENSION_NAME, 0, 10}; }
 +template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceProtectedMemoryProperties>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES, DECL_PROTECTED_MEMORY_EXTENSION_NAME, 0, 9}; }
 +template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceRobustness2PropertiesEXT>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT, VK_EXT_ROBUSTNESS_2_EXTENSION_NAME, VK_EXT_ROBUSTNESS_2_SPEC_VERSION, 8}; }
 +template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceSamplerFilterMinmaxProperties>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES, DECL_SAMPLER_FILTER_MINMAX_EXTENSION_NAME, 0, 7}; }
 +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, 6}; }
 +template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceSubgroupProperties>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES, DECL_SUBGROUP_EXTENSION_NAME, 0, 5}; }
 +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, 4}; }
 +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, 3}; }
 +template<> PropertyDesc makePropertyDesc<VkPhysicalDeviceTimelineSemaphoreProperties>(void) { return PropertyDesc{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES, DECL_TIMELINE_SEMAPHORE_EXTENSION_NAME, 0, 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 PropertyStructCreationData propertyStructCreationArray[] =
 +{
 +      { 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<VkPhysicalDeviceCustomBorderColorPropertiesEXT>, VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME, VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION },
 +      { createPropertyStructWrapper<VkPhysicalDeviceDepthStencilResolveProperties>, DECL_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME, 0 },
 +      { createPropertyStructWrapper<VkPhysicalDeviceDescriptorIndexingProperties>, DECL_DESCRIPTOR_INDEXING_EXTENSION_NAME, 0 },
 +      { 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>, DECL_FLOAT_CONTROLS_EXTENSION_NAME, 0 },
 +      { createPropertyStructWrapper<VkPhysicalDeviceFragmentShadingRatePropertiesKHR>, VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME, VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION },
 +      { createPropertyStructWrapper<VkPhysicalDeviceIDProperties>, DECL_ID_EXTENSION_NAME, 0 },
 +      { createPropertyStructWrapper<VkPhysicalDeviceLineRasterizationPropertiesEXT>, VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME, VK_EXT_LINE_RASTERIZATION_SPEC_VERSION },
 +      { createPropertyStructWrapper<VkPhysicalDeviceMaintenance3Properties>, DECL_MAINTENANCE_3_EXTENSION_NAME, 0 },
 +      { createPropertyStructWrapper<VkPhysicalDeviceMultiviewProperties>, DECL_MULTIVIEW_EXTENSION_NAME, 0 },
++      { 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<VkPhysicalDeviceRobustness2PropertiesEXT>, VK_EXT_ROBUSTNESS_2_EXTENSION_NAME, VK_EXT_ROBUSTNESS_2_SPEC_VERSION },
 +      { createPropertyStructWrapper<VkPhysicalDeviceSamplerFilterMinmaxProperties>, DECL_SAMPLER_FILTER_MINMAX_EXTENSION_NAME, 0 },
 +      { createPropertyStructWrapper<VkPhysicalDeviceSampleLocationsPropertiesEXT>, VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME, VK_EXT_SAMPLE_LOCATIONS_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>, DECL_TIMELINE_SEMAPHORE_EXTENSION_NAME, 0 },
 +      { createPropertyStructWrapper<VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT>, VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME, VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION },
 +};
 +
 +bool isPartOfBlobProperties (VkStructureType sType)
 +{
 +      const std::vector<VkStructureType> sTypeVect =  {
 +              // Vulkan11
 +              VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES,
 +              VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES,
 +              VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES,
 +              VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES,
 +              VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES,
 +              VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES,
 +              // Vulkan12
 +              VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES,
 +              VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES,
 +              VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES,
 +              VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES,
 +              VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES,
 +              VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES,
 +      };
 +      return de::contains(sTypeVect.begin(), sTypeVect.end(), sType);
 +}
 +
 +} // vk
 +
index dad5822,0000000..a6b1ef5
mode 100644,000000..100644
--- /dev/null
@@@ -1,28 -1,0 +1,28 @@@
- const vk::VkPhysicalDeviceFaultHandlingProperties&                                    getFaultHandlingProperties                                      (void) const;
 +/* 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::VkPhysicalDeviceCustomBorderColorPropertiesEXT&                     getCustomBorderColorPropertiesEXT                       (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::VkPhysicalDeviceFragmentShadingRatePropertiesKHR&                   getFragmentShadingRateProperties                        (void) const;
 +const vk::VkPhysicalDeviceIDProperties&                                                               getIDProperties                                                         (void) const;
 +const vk::VkPhysicalDeviceLineRasterizationPropertiesEXT&                     getLineRasterizationPropertiesEXT                       (void) const;
 +const vk::VkPhysicalDeviceMaintenance3Properties&                                     getMaintenance3Properties                                       (void) const;
 +const vk::VkPhysicalDeviceMultiviewProperties&                                                getMultiviewProperties                                          (void) const;
++const vk::VkPhysicalDevicePerformanceQueryPropertiesKHR&                      getPerformanceQueryProperties                           (void) const;
 +const vk::VkPhysicalDevicePointClippingProperties&                                    getPointClippingProperties                                      (void) const;
 +const vk::VkPhysicalDeviceProtectedMemoryProperties&                          getProtectedMemoryProperties                            (void) const;
 +const vk::VkPhysicalDeviceRobustness2PropertiesEXT&                                   getRobustness2PropertiesEXT                                     (void) const;
 +const vk::VkPhysicalDeviceSamplerFilterMinmaxProperties&                      getSamplerFilterMinmaxProperties                        (void) const;
 +const vk::VkPhysicalDeviceSampleLocationsPropertiesEXT&                               getSampleLocationsPropertiesEXT                         (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::VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT&                getVertexAttributeDivisorPropertiesEXT          (void) const;
index 311ff43,0000000..43e988f
mode 100644,000000..100644
--- /dev/null
@@@ -1,28 -1,0 +1,28 @@@
- const vk::VkPhysicalDeviceFaultHandlingProperties&                                    Context::getFaultHandlingProperties                                     (void) const { return m_device->getFaultHandlingProperties();                                   }
 +/* 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::VkPhysicalDeviceCustomBorderColorPropertiesEXT&                     Context::getCustomBorderColorPropertiesEXT                      (void) const { return m_device->getCustomBorderColorPropertiesEXT();                    }
 +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::VkPhysicalDeviceFragmentShadingRatePropertiesKHR&                   Context::getFragmentShadingRateProperties                       (void) const { return m_device->getFragmentShadingRateProperties();                             }
 +const vk::VkPhysicalDeviceIDProperties&                                                               Context::getIDProperties                                                        (void) const { return m_device->getIDProperties();                                                              }
 +const vk::VkPhysicalDeviceLineRasterizationPropertiesEXT&                     Context::getLineRasterizationPropertiesEXT                      (void) const { return m_device->getLineRasterizationPropertiesEXT();                    }
 +const vk::VkPhysicalDeviceMaintenance3Properties&                                     Context::getMaintenance3Properties                                      (void) const { return m_device->getMaintenance3Properties();                                    }
 +const vk::VkPhysicalDeviceMultiviewProperties&                                                Context::getMultiviewProperties                                         (void) const { return m_device->getMultiviewProperties();                                               }
++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::VkPhysicalDeviceRobustness2PropertiesEXT&                                   Context::getRobustness2PropertiesEXT                            (void) const { return m_device->getRobustness2PropertiesEXT();                                  }
 +const vk::VkPhysicalDeviceSamplerFilterMinmaxProperties&                      Context::getSamplerFilterMinmaxProperties                       (void) const { return m_device->getSamplerFilterMinmaxProperties();                             }
 +const vk::VkPhysicalDeviceSampleLocationsPropertiesEXT&                               Context::getSampleLocationsPropertiesEXT                        (void) const { return m_device->getSampleLocationsPropertiesEXT();                              }
 +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::VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT&                Context::getVertexAttributeDivisorPropertiesEXT         (void) const { return m_device->getVertexAttributeDivisorPropertiesEXT();               }
index 6506f02,0000000..7801102
mode 100644,000000..100644
--- /dev/null
@@@ -1,28 -1,0 +1,28 @@@
- const VkPhysicalDeviceFaultHandlingProperties&                                        getFaultHandlingProperties                                      (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceFaultHandlingProperties>();                            }
 +/* 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_deviceProperties.getPropertyType<VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT>();        }
 +const VkPhysicalDeviceConservativeRasterizationPropertiesEXT& getConservativeRasterizationPropertiesEXT       (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceConservativeRasterizationPropertiesEXT>();     }
 +const VkPhysicalDeviceCustomBorderColorPropertiesEXT&                 getCustomBorderColorPropertiesEXT                       (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceCustomBorderColorPropertiesEXT>();                     }
 +const VkPhysicalDeviceDepthStencilResolveProperties&                  getDepthStencilResolveProperties                        (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceDepthStencilResolveProperties>();                      }
 +const VkPhysicalDeviceDescriptorIndexingProperties&                           getDescriptorIndexingProperties                         (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceDescriptorIndexingProperties>();                       }
 +const VkPhysicalDeviceDiscardRectanglePropertiesEXT&                  getDiscardRectanglePropertiesEXT                        (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceDiscardRectanglePropertiesEXT>();                      }
 +const VkPhysicalDeviceDriverProperties&                                                       getDriverProperties                                                     (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceDriverProperties>();                                           }
 +const VkPhysicalDeviceExternalMemoryHostPropertiesEXT&                        getExternalMemoryHostPropertiesEXT                      (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceExternalMemoryHostPropertiesEXT>();            }
 +const VkPhysicalDeviceFloatControlsProperties&                                        getFloatControlsProperties                                      (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceFloatControlsProperties>();                            }
 +const VkPhysicalDeviceFragmentShadingRatePropertiesKHR&                       getFragmentShadingRateProperties                        (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceFragmentShadingRatePropertiesKHR>();           }
 +const VkPhysicalDeviceIDProperties&                                                           getIDProperties                                                         (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceIDProperties>();                                                       }
 +const VkPhysicalDeviceLineRasterizationPropertiesEXT&                 getLineRasterizationPropertiesEXT                       (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceLineRasterizationPropertiesEXT>();                     }
 +const VkPhysicalDeviceMaintenance3Properties&                                 getMaintenance3Properties                                       (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceMaintenance3Properties>();                                     }
 +const VkPhysicalDeviceMultiviewProperties&                                            getMultiviewProperties                                          (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceMultiviewProperties>();                                        }
++const VkPhysicalDevicePerformanceQueryPropertiesKHR&                  getPerformanceQueryProperties                           (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDevicePerformanceQueryPropertiesKHR>();                      }
 +const VkPhysicalDevicePointClippingProperties&                                        getPointClippingProperties                                      (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDevicePointClippingProperties>();                            }
 +const VkPhysicalDeviceProtectedMemoryProperties&                              getProtectedMemoryProperties                            (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceProtectedMemoryProperties>();                          }
 +const VkPhysicalDeviceRobustness2PropertiesEXT&                                       getRobustness2PropertiesEXT                                     (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceRobustness2PropertiesEXT>();                           }
 +const VkPhysicalDeviceSamplerFilterMinmaxProperties&                  getSamplerFilterMinmaxProperties                        (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceSamplerFilterMinmaxProperties>();                      }
 +const VkPhysicalDeviceSampleLocationsPropertiesEXT&                           getSampleLocationsPropertiesEXT                         (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceSampleLocationsPropertiesEXT>();                       }
 +const VkPhysicalDeviceSubgroupProperties&                                             getSubgroupProperties                                           (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceSubgroupProperties>();                                         }
 +const VkPhysicalDeviceSubgroupSizeControlPropertiesEXT&                       getSubgroupSizeControlPropertiesEXT                     (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceSubgroupSizeControlPropertiesEXT>();           }
 +const VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT&              getTexelBufferAlignmentPropertiesEXT            (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT>();          }
 +const VkPhysicalDeviceTimelineSemaphoreProperties&                            getTimelineSemaphoreProperties                          (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceTimelineSemaphoreProperties>();                        }
 +const VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT&            getVertexAttributeDivisorPropertiesEXT          (void) const { return m_deviceProperties.getPropertyType<VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT>();        }
index 4359e85,0000000..8df3252
mode 100644,000000..100644
--- /dev/null
@@@ -1,608 -1,0 +1,672 @@@
-       if (extName == "VK_KHR_fault_handling")
-       {
-               return;
-       }
 +/* WARNING: This is auto-generated file. Do not modify, since changes will
 + * be lost! Modify the generating script instead.
 + */
 +
 +void getInstanceExtensionFunctions (deUint32 apiVersion, ::std::string extName, ::std::vector<const char*>& functions)
 +{
 +      if (extName == "VK_KHR_surface")
 +      {
 +              functions.push_back("vkDestroySurfaceKHR");
 +              functions.push_back("vkGetPhysicalDeviceSurfaceSupportKHR");
 +              functions.push_back("vkGetPhysicalDeviceSurfaceCapabilitiesKHR");
 +              functions.push_back("vkGetPhysicalDeviceSurfaceFormatsKHR");
 +              functions.push_back("vkGetPhysicalDeviceSurfacePresentModesKHR");
 +              return;
 +      }
 +      if (extName == "VK_KHR_swapchain")
 +      {
 +              if(apiVersion >= VK_API_VERSION_1_1) functions.push_back("vkGetPhysicalDevicePresentRectanglesKHR");
 +              return;
 +      }
 +      if (extName == "VK_KHR_display")
 +      {
 +              functions.push_back("vkGetPhysicalDeviceDisplayPropertiesKHR");
 +              functions.push_back("vkGetPhysicalDeviceDisplayPlanePropertiesKHR");
 +              functions.push_back("vkGetDisplayPlaneSupportedDisplaysKHR");
 +              functions.push_back("vkGetDisplayModePropertiesKHR");
 +              functions.push_back("vkCreateDisplayModeKHR");
 +              functions.push_back("vkGetDisplayPlaneCapabilitiesKHR");
 +              functions.push_back("vkCreateDisplayPlaneSurfaceKHR");
 +              return;
 +      }
 +      if (extName == "VK_KHR_display_swapchain")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_KHR_external_memory_fd")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_KHR_external_semaphore_fd")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_KHR_incremental_present")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_KHR_shared_presentable_image")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_KHR_external_fence_fd")
 +      {
 +              return;
 +      }
++      if (extName == "VK_KHR_performance_query")
++      {
++              functions.push_back("vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR");
++              functions.push_back("vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR");
++              return;
++      }
 +      if (extName == "VK_KHR_get_surface_capabilities2")
 +      {
 +              functions.push_back("vkGetPhysicalDeviceSurfaceCapabilities2KHR");
 +              functions.push_back("vkGetPhysicalDeviceSurfaceFormats2KHR");
 +              return;
 +      }
 +      if (extName == "VK_KHR_get_display_properties2")
 +      {
 +              functions.push_back("vkGetPhysicalDeviceDisplayProperties2KHR");
 +              functions.push_back("vkGetPhysicalDeviceDisplayPlaneProperties2KHR");
 +              functions.push_back("vkGetDisplayModeProperties2KHR");
 +              functions.push_back("vkGetDisplayPlaneCapabilities2KHR");
 +              return;
 +      }
 +      if (extName == "VK_KHR_shader_clock")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_KHR_swapchain_mutable_format")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_KHR_shader_terminate_invocation")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_KHR_fragment_shading_rate")
 +      {
 +              functions.push_back("vkGetPhysicalDeviceFragmentShadingRatesKHR");
 +              return;
 +      }
-       if (extName == "VK_KHR_seu_safe_memory")
-       {
-               return;
-       }
-       if (extName == "VK_KHR_pipeline_identifier")
 +      if (extName == "VK_KHR_object_refresh")
 +      {
 +              functions.push_back("vkGetPhysicalDeviceRefreshableObjectTypesKHR");
 +              return;
 +      }
-       if (extName == "VK_KHR_sc_pipeline_cache_functionality")
-       {
-               return;
-       }
++      if (extName == "VK_KHR_synchronization2")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_KHR_copy_commands2")
 +      {
 +              return;
 +      }
-       if (extName == "VK_KHR_fault_handling")
-       {
-               functions.push_back("vkGetFaultDataKHR");
-               return;
-       }
 +      if (extName == "VK_EXT_depth_range_unrestricted")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_texture_compression_astc_hdr")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_astc_decode_mode")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_direct_mode_display")
 +      {
 +              functions.push_back("vkReleaseDisplayEXT");
 +              return;
 +      }
 +      if (extName == "VK_EXT_display_surface_counter")
 +      {
 +              functions.push_back("vkGetPhysicalDeviceSurfaceCapabilities2EXT");
 +              return;
 +      }
 +      if (extName == "VK_EXT_display_control")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_discard_rectangles")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_conservative_rasterization")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_depth_clip_enable")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_swapchain_colorspace")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_hdr_metadata")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_external_memory_dma_buf")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_queue_family_foreign")
 +      {
 +              return;
 +      }
++      if (extName == "VK_EXT_debug_utils")
++      {
++              functions.push_back("vkCreateDebugUtilsMessengerEXT");
++              functions.push_back("vkDestroyDebugUtilsMessengerEXT");
++              functions.push_back("vkSubmitDebugUtilsMessageEXT");
++              return;
++      }
 +      if (extName == "VK_EXT_shader_stencil_export")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_sample_locations")
 +      {
 +              functions.push_back("vkGetPhysicalDeviceMultisamplePropertiesEXT");
 +              return;
 +      }
 +      if (extName == "VK_EXT_blend_operation_advanced")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_post_depth_coverage")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_image_drm_format_modifier")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_filter_cubic")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_global_priority")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_external_memory_host")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_calibrated_timestamps")
 +      {
 +              functions.push_back("vkGetPhysicalDeviceCalibrateableTimeDomainsEXT");
 +              return;
 +      }
 +      if (extName == "VK_EXT_vertex_attribute_divisor")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_pci_bus_info")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_subgroup_size_control")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_shader_image_atomic_int64")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_memory_budget")
 +      {
 +              return;
 +      }
++      if (extName == "VK_EXT_validation_features")
++      {
++              return;
++      }
 +      if (extName == "VK_EXT_fragment_shader_interlock")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_ycbcr_image_arrays")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_headless_surface")
 +      {
 +              functions.push_back("vkCreateHeadlessSurfaceEXT");
 +              return;
 +      }
 +      if (extName == "VK_EXT_line_rasterization")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_shader_atomic_float")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_index_type_uint8")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_extended_dynamic_state")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_shader_demote_to_helper_invocation")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_texel_buffer_alignment")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_robustness2")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_custom_border_color")
 +      {
 +              return;
 +      }
++      if (extName == "VK_EXT_ycbcr_2plane_444_formats")
++      {
++              return;
++      }
 +      if (extName == "VK_EXT_image_robustness")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_4444_formats")
 +      {
 +              return;
 +      }
++      if (extName == "VK_EXT_vertex_input_dynamic_state")
++      {
++              return;
++      }
++      if (extName == "VK_EXT_extended_dynamic_state2")
++      {
++              return;
++      }
++      if (extName == "VK_EXT_color_write_enable")
++      {
++              return;
++      }
 +      DE_FATAL("Extension name not found");
 +}
 +
 +void getDeviceExtensionFunctions (deUint32 apiVersion, ::std::string extName, ::std::vector<const char*>& functions)
 +{
 +      if (extName == "VK_KHR_surface")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_KHR_swapchain")
 +      {
 +              functions.push_back("vkCreateSwapchainKHR");
 +              functions.push_back("vkGetSwapchainImagesKHR");
 +              functions.push_back("vkAcquireNextImageKHR");
 +              functions.push_back("vkQueuePresentKHR");
 +              if(apiVersion >= VK_API_VERSION_1_1) functions.push_back("vkGetDeviceGroupPresentCapabilitiesKHR");
 +              if(apiVersion >= VK_API_VERSION_1_1) functions.push_back("vkGetDeviceGroupSurfacePresentModesKHR");
 +              if(apiVersion >= VK_API_VERSION_1_1) functions.push_back("vkAcquireNextImage2KHR");
 +              return;
 +      }
 +      if (extName == "VK_KHR_display")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_KHR_display_swapchain")
 +      {
 +              functions.push_back("vkCreateSharedSwapchainsKHR");
 +              return;
 +      }
 +      if (extName == "VK_KHR_external_memory_fd")
 +      {
 +              functions.push_back("vkGetMemoryFdKHR");
 +              functions.push_back("vkGetMemoryFdPropertiesKHR");
 +              return;
 +      }
 +      if (extName == "VK_KHR_external_semaphore_fd")
 +      {
 +              functions.push_back("vkImportSemaphoreFdKHR");
 +              functions.push_back("vkGetSemaphoreFdKHR");
 +              return;
 +      }
 +      if (extName == "VK_KHR_incremental_present")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_KHR_shared_presentable_image")
 +      {
 +              functions.push_back("vkGetSwapchainStatusKHR");
 +              return;
 +      }
 +      if (extName == "VK_KHR_external_fence_fd")
 +      {
 +              functions.push_back("vkImportFenceFdKHR");
 +              functions.push_back("vkGetFenceFdKHR");
 +              return;
 +      }
++      if (extName == "VK_KHR_performance_query")
++      {
++              functions.push_back("vkAcquireProfilingLockKHR");
++              functions.push_back("vkReleaseProfilingLockKHR");
++              return;
++      }
 +      if (extName == "VK_KHR_get_surface_capabilities2")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_KHR_get_display_properties2")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_KHR_shader_clock")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_KHR_swapchain_mutable_format")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_KHR_shader_terminate_invocation")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_KHR_fragment_shading_rate")
 +      {
 +              functions.push_back("vkCmdSetFragmentShadingRateKHR");
 +              return;
 +      }
-       if (extName == "VK_KHR_seu_safe_memory")
-       {
-               return;
-       }
-       if (extName == "VK_KHR_pipeline_identifier")
 +      if (extName == "VK_KHR_object_refresh")
 +      {
 +              functions.push_back("vkCmdRefreshObjectsKHR");
 +              return;
 +      }
-       if (extName == "VK_KHR_sc_pipeline_cache_functionality")
-       {
-               return;
-       }
++      if (extName == "VK_KHR_synchronization2")
 +      {
++              functions.push_back("vkCmdSetEvent2KHR");
++              functions.push_back("vkCmdResetEvent2KHR");
++              functions.push_back("vkCmdWaitEvents2KHR");
++              functions.push_back("vkCmdPipelineBarrier2KHR");
++              functions.push_back("vkCmdWriteTimestamp2KHR");
++              functions.push_back("vkQueueSubmit2KHR");
 +              return;
 +      }
 +      if (extName == "VK_KHR_copy_commands2")
 +      {
 +              functions.push_back("vkCmdCopyBuffer2KHR");
 +              functions.push_back("vkCmdCopyImage2KHR");
 +              functions.push_back("vkCmdCopyBufferToImage2KHR");
 +              functions.push_back("vkCmdCopyImageToBuffer2KHR");
 +              functions.push_back("vkCmdBlitImage2KHR");
 +              functions.push_back("vkCmdResolveImage2KHR");
 +              return;
 +      }
-       "VK_KHR_fault_handling",
 +      if (extName == "VK_EXT_depth_range_unrestricted")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_texture_compression_astc_hdr")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_astc_decode_mode")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_direct_mode_display")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_display_surface_counter")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_display_control")
 +      {
 +              functions.push_back("vkDisplayPowerControlEXT");
 +              functions.push_back("vkRegisterDeviceEventEXT");
 +              functions.push_back("vkRegisterDisplayEventEXT");
 +              functions.push_back("vkGetSwapchainCounterEXT");
 +              return;
 +      }
 +      if (extName == "VK_EXT_discard_rectangles")
 +      {
 +              functions.push_back("vkCmdSetDiscardRectangleEXT");
 +              return;
 +      }
 +      if (extName == "VK_EXT_conservative_rasterization")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_depth_clip_enable")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_swapchain_colorspace")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_hdr_metadata")
 +      {
 +              functions.push_back("vkSetHdrMetadataEXT");
 +              return;
 +      }
 +      if (extName == "VK_EXT_external_memory_dma_buf")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_queue_family_foreign")
 +      {
 +              return;
 +      }
++      if (extName == "VK_EXT_debug_utils")
++      {
++              functions.push_back("vkSetDebugUtilsObjectNameEXT");
++              functions.push_back("vkSetDebugUtilsObjectTagEXT");
++              functions.push_back("vkQueueBeginDebugUtilsLabelEXT");
++              functions.push_back("vkQueueEndDebugUtilsLabelEXT");
++              functions.push_back("vkQueueInsertDebugUtilsLabelEXT");
++              functions.push_back("vkCmdBeginDebugUtilsLabelEXT");
++              functions.push_back("vkCmdEndDebugUtilsLabelEXT");
++              functions.push_back("vkCmdInsertDebugUtilsLabelEXT");
++              return;
++      }
 +      if (extName == "VK_EXT_shader_stencil_export")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_sample_locations")
 +      {
 +              functions.push_back("vkCmdSetSampleLocationsEXT");
 +              return;
 +      }
 +      if (extName == "VK_EXT_blend_operation_advanced")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_post_depth_coverage")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_image_drm_format_modifier")
 +      {
 +              functions.push_back("vkGetImageDrmFormatModifierPropertiesEXT");
 +              return;
 +      }
 +      if (extName == "VK_EXT_filter_cubic")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_global_priority")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_external_memory_host")
 +      {
 +              functions.push_back("vkGetMemoryHostPointerPropertiesEXT");
 +              return;
 +      }
 +      if (extName == "VK_EXT_calibrated_timestamps")
 +      {
 +              functions.push_back("vkGetCalibratedTimestampsEXT");
 +              return;
 +      }
 +      if (extName == "VK_EXT_vertex_attribute_divisor")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_pci_bus_info")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_subgroup_size_control")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_shader_image_atomic_int64")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_memory_budget")
 +      {
 +              return;
 +      }
++      if (extName == "VK_EXT_validation_features")
++      {
++              return;
++      }
 +      if (extName == "VK_EXT_fragment_shader_interlock")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_ycbcr_image_arrays")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_headless_surface")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_line_rasterization")
 +      {
 +              functions.push_back("vkCmdSetLineStippleEXT");
 +              return;
 +      }
 +      if (extName == "VK_EXT_shader_atomic_float")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_index_type_uint8")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_extended_dynamic_state")
 +      {
 +              functions.push_back("vkCmdSetCullModeEXT");
 +              functions.push_back("vkCmdSetFrontFaceEXT");
 +              functions.push_back("vkCmdSetPrimitiveTopologyEXT");
 +              functions.push_back("vkCmdSetViewportWithCountEXT");
 +              functions.push_back("vkCmdSetScissorWithCountEXT");
 +              functions.push_back("vkCmdBindVertexBuffers2EXT");
 +              functions.push_back("vkCmdSetDepthTestEnableEXT");
 +              functions.push_back("vkCmdSetDepthWriteEnableEXT");
 +              functions.push_back("vkCmdSetDepthCompareOpEXT");
 +              functions.push_back("vkCmdSetDepthBoundsTestEnableEXT");
 +              functions.push_back("vkCmdSetStencilTestEnableEXT");
 +              functions.push_back("vkCmdSetStencilOpEXT");
 +              return;
 +      }
 +      if (extName == "VK_EXT_shader_demote_to_helper_invocation")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_texel_buffer_alignment")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_robustness2")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_custom_border_color")
 +      {
 +              return;
 +      }
++      if (extName == "VK_EXT_ycbcr_2plane_444_formats")
++      {
++              return;
++      }
 +      if (extName == "VK_EXT_image_robustness")
 +      {
 +              return;
 +      }
 +      if (extName == "VK_EXT_4444_formats")
 +      {
 +              return;
 +      }
++      if (extName == "VK_EXT_vertex_input_dynamic_state")
++      {
++              functions.push_back("vkCmdSetVertexInputEXT");
++              return;
++      }
++      if (extName == "VK_EXT_extended_dynamic_state2")
++      {
++              functions.push_back("vkCmdSetPatchControlPointsEXT");
++              functions.push_back("vkCmdSetRasterizerDiscardEnableEXT");
++              functions.push_back("vkCmdSetDepthBiasEnableEXT");
++              functions.push_back("vkCmdSetLogicOpEXT");
++              functions.push_back("vkCmdSetPrimitiveRestartEnableEXT");
++              return;
++      }
++      if (extName == "VK_EXT_color_write_enable")
++      {
++              functions.push_back("vkCmdSetColorWriteEnableEXT");
++              return;
++      }
 +      DE_FATAL("Extension name not found");
 +}
 +
 +::std::string instanceExtensionNames[] =
 +{
 +      "VK_KHR_surface",
 +      "VK_KHR_display",
++      "VK_KHR_performance_query",
 +      "VK_KHR_get_surface_capabilities2",
 +      "VK_KHR_get_display_properties2",
 +      "VK_KHR_fragment_shading_rate",
 +      "VK_EXT_direct_mode_display",
 +      "VK_EXT_display_surface_counter",
 +      "VK_EXT_calibrated_timestamps",
 +      "VK_EXT_headless_surface"
 +};
 +
 +::std::string deviceExtensionNames[] =
 +{
 +      "VK_KHR_swapchain",
 +      "VK_KHR_display_swapchain",
 +      "VK_KHR_external_memory_fd",
 +      "VK_KHR_external_semaphore_fd",
 +      "VK_KHR_shared_presentable_image",
 +      "VK_KHR_external_fence_fd",
-       "VK_EXT_extended_dynamic_state"
 +      "VK_KHR_object_refresh",
++      "VK_KHR_synchronization2",
 +      "VK_KHR_copy_commands2",
 +      "VK_EXT_display_control",
 +      "VK_EXT_discard_rectangles",
 +      "VK_EXT_hdr_metadata",
++      "VK_EXT_debug_utils",
 +      "VK_EXT_sample_locations",
 +      "VK_EXT_image_drm_format_modifier",
 +      "VK_EXT_external_memory_host",
 +      "VK_EXT_line_rasterization",
++      "VK_EXT_extended_dynamic_state",
++      "VK_EXT_vertex_input_dynamic_state",
++      "VK_EXT_extended_dynamic_state2",
++      "VK_EXT_color_write_enable"
 +};
index f833adf,0000000..eb45154
mode 100644,000000..100644
--- /dev/null
@@@ -1,244 -1,0 +1,268 @@@
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CreateInstanceFunc)                                                                (const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkInstance* pInstance);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* DestroyInstanceFunc)                                                               (VkInstance instance, const VkAllocationCallbacks* pAllocator);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* EnumeratePhysicalDevicesFunc)                                              (VkInstance instance, deUint32* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* GetPhysicalDeviceFeaturesFunc)                                             (VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* GetPhysicalDeviceFormatPropertiesFunc)                             (VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetPhysicalDeviceImageFormatPropertiesFunc)                (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* GetPhysicalDevicePropertiesFunc)                                   (VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* GetPhysicalDeviceQueueFamilyPropertiesFunc)                (VkPhysicalDevice physicalDevice, deUint32* pQueueFamilyPropertyCount, VkQueueFamilyProperties* pQueueFamilyProperties);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* GetPhysicalDeviceMemoryPropertiesFunc)                             (VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties);
- typedef VKAPI_ATTR PFN_vkVoidFunction (VKAPI_CALL* GetInstanceProcAddrFunc)                                                   (VkInstance instance, const char* pName);
- typedef VKAPI_ATTR PFN_vkVoidFunction (VKAPI_CALL* GetDeviceProcAddrFunc)                                                             (VkDevice device, const char* pName);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CreateDeviceFunc)                                                                  (VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* DestroyDeviceFunc)                                                                 (VkDevice device, const VkAllocationCallbacks* pAllocator);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* EnumerateInstanceExtensionPropertiesFunc)                  (const char* pLayerName, deUint32* pPropertyCount, VkExtensionProperties* pProperties);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* EnumerateDeviceExtensionPropertiesFunc)                    (VkPhysicalDevice physicalDevice, const char* pLayerName, deUint32* pPropertyCount, VkExtensionProperties* pProperties);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* EnumerateInstanceLayerPropertiesFunc)                              (deUint32* pPropertyCount, VkLayerProperties* pProperties);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* EnumerateDeviceLayerPropertiesFunc)                                (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkLayerProperties* pProperties);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* GetDeviceQueueFunc)                                                                (VkDevice device, deUint32 queueFamilyIndex, deUint32 queueIndex, VkQueue* pQueue);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* QueueSubmitFunc)                                                                   (VkQueue queue, deUint32 submitCount, const VkSubmitInfo* pSubmits, VkFence fence);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* QueueWaitIdleFunc)                                                                 (VkQueue queue);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* DeviceWaitIdleFunc)                                                                (VkDevice device);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* AllocateMemoryFunc)                                                                (VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* MapMemoryFunc)                                                                             (VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* UnmapMemoryFunc)                                                                   (VkDevice device, VkDeviceMemory memory);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* FlushMappedMemoryRangesFunc)                                               (VkDevice device, deUint32 memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* InvalidateMappedMemoryRangesFunc)                                  (VkDevice device, deUint32 memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* GetDeviceMemoryCommitmentFunc)                                             (VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* BindBufferMemoryFunc)                                                              (VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* BindImageMemoryFunc)                                                               (VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* GetBufferMemoryRequirementsFunc)                                   (VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* GetImageMemoryRequirementsFunc)                                    (VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* GetImageSparseMemoryRequirementsFunc)                              (VkDevice device, VkImage image, deUint32* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements* pSparseMemoryRequirements);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* GetPhysicalDeviceSparseImageFormatPropertiesFunc)  (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, deUint32* pPropertyCount, VkSparseImageFormatProperties* pProperties);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* QueueBindSparseFunc)                                                               (VkQueue queue, deUint32 bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CreateFenceFunc)                                                                   (VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* DestroyFenceFunc)                                                                  (VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* ResetFencesFunc)                                                                   (VkDevice device, deUint32 fenceCount, const VkFence* pFences);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetFenceStatusFunc)                                                                (VkDevice device, VkFence fence);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* WaitForFencesFunc)                                                                 (VkDevice device, deUint32 fenceCount, const VkFence* pFences, VkBool32 waitAll, deUint64 timeout);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CreateSemaphoreFunc)                                                               (VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* DestroySemaphoreFunc)                                                              (VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CreateEventFunc)                                                                   (VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkEvent* pEvent);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* DestroyEventFunc)                                                                  (VkDevice device, VkEvent event, const VkAllocationCallbacks* pAllocator);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetEventStatusFunc)                                                                (VkDevice device, VkEvent event);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* SetEventFunc)                                                                              (VkDevice device, VkEvent event);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* ResetEventFunc)                                                                    (VkDevice device, VkEvent event);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CreateQueryPoolFunc)                                                               (VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkQueryPool* pQueryPool);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetQueryPoolResultsFunc)                                                   (VkDevice device, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount, deUintptr dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CreateBufferFunc)                                                                  (VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* DestroyBufferFunc)                                                                 (VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CreateBufferViewFunc)                                                              (VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* DestroyBufferViewFunc)                                                             (VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* pAllocator);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CreateImageFunc)                                                                   (VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImage* pImage);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* DestroyImageFunc)                                                                  (VkDevice device, VkImage image, const VkAllocationCallbacks* pAllocator);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* GetImageSubresourceLayoutFunc)                                             (VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CreateImageViewFunc)                                                               (VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImageView* pView);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* DestroyImageViewFunc)                                                              (VkDevice device, VkImageView imageView, const VkAllocationCallbacks* pAllocator);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CreatePipelineCacheFunc)                                                   (VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* DestroyPipelineCacheFunc)                                                  (VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CreateGraphicsPipelinesFunc)                                               (VkDevice device, VkPipelineCache pipelineCache, deUint32 createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CreateComputePipelinesFunc)                                                (VkDevice device, VkPipelineCache pipelineCache, deUint32 createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* DestroyPipelineFunc)                                                               (VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CreatePipelineLayoutFunc)                                                  (VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* DestroyPipelineLayoutFunc)                                                 (VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* pAllocator);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CreateSamplerFunc)                                                                 (VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* DestroySamplerFunc)                                                                (VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CreateDescriptorSetLayoutFunc)                                             (VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* DestroyDescriptorSetLayoutFunc)                                    (VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* pAllocator);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CreateDescriptorPoolFunc)                                                  (VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* ResetDescriptorPoolFunc)                                                   (VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* AllocateDescriptorSetsFunc)                                                (VkDevice device, const VkDescriptorSetAllocateInfo* pAllocateInfo, VkDescriptorSet* pDescriptorSets);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* FreeDescriptorSetsFunc)                                                    (VkDevice device, VkDescriptorPool descriptorPool, deUint32 descriptorSetCount, const VkDescriptorSet* pDescriptorSets);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* UpdateDescriptorSetsFunc)                                                  (VkDevice device, deUint32 descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites, deUint32 descriptorCopyCount, const VkCopyDescriptorSet* pDescriptorCopies);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CreateFramebufferFunc)                                                             (VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFramebuffer* pFramebuffer);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* DestroyFramebufferFunc)                                                    (VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CreateRenderPassFunc)                                                              (VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* DestroyRenderPassFunc)                                                             (VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* GetRenderAreaGranularityFunc)                                              (VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CreateCommandPoolFunc)                                                             (VkDevice device, const VkCommandPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCommandPool* pCommandPool);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* ResetCommandPoolFunc)                                                              (VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* AllocateCommandBuffersFunc)                                                (VkDevice device, const VkCommandBufferAllocateInfo* pAllocateInfo, VkCommandBuffer* pCommandBuffers);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* FreeCommandBuffersFunc)                                                    (VkDevice device, VkCommandPool commandPool, deUint32 commandBufferCount, const VkCommandBuffer* pCommandBuffers);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* BeginCommandBufferFunc)                                                    (VkCommandBuffer commandBuffer, const VkCommandBufferBeginInfo* pBeginInfo);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* EndCommandBufferFunc)                                                              (VkCommandBuffer commandBuffer);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* ResetCommandBufferFunc)                                                    (VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdBindPipelineFunc)                                                               (VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetViewportFunc)                                                                (VkCommandBuffer commandBuffer, deUint32 firstViewport, deUint32 viewportCount, const VkViewport* pViewports);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetScissorFunc)                                                                 (VkCommandBuffer commandBuffer, deUint32 firstScissor, deUint32 scissorCount, const VkRect2D* pScissors);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetLineWidthFunc)                                                               (VkCommandBuffer commandBuffer, float lineWidth);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetDepthBiasFunc)                                                               (VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetBlendConstantsFunc)                                                  (VkCommandBuffer commandBuffer, const float blendConstants[4]);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetDepthBoundsFunc)                                                             (VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetStencilCompareMaskFunc)                                              (VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, deUint32 compareMask);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetStencilWriteMaskFunc)                                                (VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, deUint32 writeMask);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetStencilReferenceFunc)                                                (VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, deUint32 reference);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdBindDescriptorSetsFunc)                                                 (VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, deUint32 firstSet, deUint32 descriptorSetCount, const VkDescriptorSet* pDescriptorSets, deUint32 dynamicOffsetCount, const deUint32* pDynamicOffsets);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdBindIndexBufferFunc)                                                    (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdBindVertexBuffersFunc)                                                  (VkCommandBuffer commandBuffer, deUint32 firstBinding, deUint32 bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdDrawFunc)                                                                               (VkCommandBuffer commandBuffer, deUint32 vertexCount, deUint32 instanceCount, deUint32 firstVertex, deUint32 firstInstance);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdDrawIndexedFunc)                                                                (VkCommandBuffer commandBuffer, deUint32 indexCount, deUint32 instanceCount, deUint32 firstIndex, deInt32 vertexOffset, deUint32 firstInstance);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdDrawIndirectFunc)                                                               (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, deUint32 drawCount, deUint32 stride);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdDrawIndexedIndirectFunc)                                                (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, deUint32 drawCount, deUint32 stride);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdDispatchFunc)                                                                   (VkCommandBuffer commandBuffer, deUint32 groupCountX, deUint32 groupCountY, deUint32 groupCountZ);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdDispatchIndirectFunc)                                                   (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdCopyBufferFunc)                                                                 (VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, deUint32 regionCount, const VkBufferCopy* pRegions);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdCopyImageFunc)                                                                  (VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkImageCopy* pRegions);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdBlitImageFunc)                                                                  (VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkImageBlit* pRegions, VkFilter filter);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdCopyBufferToImageFunc)                                                  (VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkBufferImageCopy* pRegions);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdCopyImageToBufferFunc)                                                  (VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, deUint32 regionCount, const VkBufferImageCopy* pRegions);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdUpdateBufferFunc)                                                               (VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const void* pData);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdFillBufferFunc)                                                                 (VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, deUint32 data);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdClearColorImageFunc)                                                    (VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, deUint32 rangeCount, const VkImageSubresourceRange* pRanges);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdClearDepthStencilImageFunc)                                             (VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, deUint32 rangeCount, const VkImageSubresourceRange* pRanges);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdClearAttachmentsFunc)                                                   (VkCommandBuffer commandBuffer, deUint32 attachmentCount, const VkClearAttachment* pAttachments, deUint32 rectCount, const VkClearRect* pRects);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdResolveImageFunc)                                                               (VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkImageResolve* pRegions);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetEventFunc)                                                                   (VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdResetEventFunc)                                                                 (VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdWaitEventsFunc)                                                                 (VkCommandBuffer commandBuffer, deUint32 eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, deUint32 memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, deUint32 bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, deUint32 imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdPipelineBarrierFunc)                                                    (VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, deUint32 memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, deUint32 bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, deUint32 imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdBeginQueryFunc)                                                                 (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query, VkQueryControlFlags flags);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdEndQueryFunc)                                                                   (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdResetQueryPoolFunc)                                                             (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdWriteTimestampFunc)                                                             (VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, deUint32 query);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdCopyQueryPoolResultsFunc)                                               (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdPushConstantsFunc)                                                              (VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, deUint32 offset, deUint32 size, const void* pValues);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdBeginRenderPassFunc)                                                    (VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdNextSubpassFunc)                                                                (VkCommandBuffer commandBuffer, VkSubpassContents contents);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdEndRenderPassFunc)                                                              (VkCommandBuffer commandBuffer);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdExecuteCommandsFunc)                                                    (VkCommandBuffer commandBuffer, deUint32 commandBufferCount, const VkCommandBuffer* pCommandBuffers);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* GetCommandPoolMemoryConsumptionFunc)                               (VkDevice device, VkCommandPool commandPool, VkCommandBuffer commandBuffer, VkCommandPoolMemoryConsumption* pConsumption);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetFaultDataFunc)                                                                  (VkDevice device, VkFaultQueryBehavior faultQueryBehavior, VkBool32* pUnrecordedFaults, deUint32* pFaultCount, VkFaultData* pFaults);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* EnumerateInstanceVersionFunc)                                              (deUint32* pApiVersion);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* BindBufferMemory2Func)                                                             (VkDevice device, deUint32 bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* BindImageMemory2Func)                                                              (VkDevice device, deUint32 bindInfoCount, const VkBindImageMemoryInfo* pBindInfos);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* GetDeviceGroupPeerMemoryFeaturesFunc)                              (VkDevice device, deUint32 heapIndex, deUint32 localDeviceIndex, deUint32 remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetDeviceMaskFunc)                                                              (VkCommandBuffer commandBuffer, deUint32 deviceMask);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdDispatchBaseFunc)                                                               (VkCommandBuffer commandBuffer, deUint32 baseGroupX, deUint32 baseGroupY, deUint32 baseGroupZ, deUint32 groupCountX, deUint32 groupCountY, deUint32 groupCountZ);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* EnumeratePhysicalDeviceGroupsFunc)                                 (VkInstance instance, deUint32* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* GetImageMemoryRequirements2Func)                                   (VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* GetBufferMemoryRequirements2Func)                                  (VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* GetImageSparseMemoryRequirements2Func)                             (VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, deUint32* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* GetPhysicalDeviceFeatures2Func)                                    (VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* GetPhysicalDeviceProperties2Func)                                  (VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* GetPhysicalDeviceFormatProperties2Func)                    (VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetPhysicalDeviceImageFormatProperties2Func)               (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* GetPhysicalDeviceQueueFamilyProperties2Func)               (VkPhysicalDevice physicalDevice, deUint32* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* GetPhysicalDeviceMemoryProperties2Func)                    (VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* GetPhysicalDeviceSparseImageFormatProperties2Func) (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, deUint32* pPropertyCount, VkSparseImageFormatProperties2* pProperties);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* GetDeviceQueue2Func)                                                               (VkDevice device, const VkDeviceQueueInfo2* pQueueInfo, VkQueue* pQueue);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CreateSamplerYcbcrConversionFunc)                                  (VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* DestroySamplerYcbcrConversionFunc)                                 (VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* GetPhysicalDeviceExternalBufferPropertiesFunc)             (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties);
- 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);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetPhysicalDeviceSurfaceFormatsKHRFunc)                    (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetPhysicalDeviceSurfacePresentModesKHRFunc)               (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pPresentModeCount, VkPresentModeKHR* pPresentModes);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CreateSwapchainKHRFunc)                                                    (VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetSwapchainImagesKHRFunc)                                                 (VkDevice device, VkSwapchainKHR swapchain, deUint32* pSwapchainImageCount, VkImage* pSwapchainImages);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* AcquireNextImageKHRFunc)                                                   (VkDevice device, VkSwapchainKHR swapchain, deUint64 timeout, VkSemaphore semaphore, VkFence fence, deUint32* pImageIndex);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* QueuePresentKHRFunc)                                                               (VkQueue queue, const VkPresentInfoKHR* pPresentInfo);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetDeviceGroupPresentCapabilitiesKHRFunc)                  (VkDevice device, VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetDeviceGroupSurfacePresentModesKHRFunc)                  (VkDevice device, VkSurfaceKHR surface, VkDeviceGroupPresentModeFlagsKHR* pModes);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetPhysicalDevicePresentRectanglesKHRFunc)                 (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pRectCount, VkRect2D* pRects);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* AcquireNextImage2KHRFunc)                                                  (VkDevice device, const VkAcquireNextImageInfoKHR* pAcquireInfo, deUint32* pImageIndex);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetPhysicalDeviceDisplayPropertiesKHRFunc)                 (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPropertiesKHR* pProperties);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetPhysicalDeviceDisplayPlanePropertiesKHRFunc)    (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetDisplayPlaneSupportedDisplaysKHRFunc)                   (VkPhysicalDevice physicalDevice, deUint32 planeIndex, deUint32* pDisplayCount, VkDisplayKHR* pDisplays);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetDisplayModePropertiesKHRFunc)                                   (VkPhysicalDevice physicalDevice, VkDisplayKHR display, deUint32* pPropertyCount, VkDisplayModePropertiesKHR* pProperties);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CreateDisplayModeKHRFunc)                                                  (VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDisplayModeKHR* pMode);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetDisplayPlaneCapabilitiesKHRFunc)                                (VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, deUint32 planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CreateDisplayPlaneSurfaceKHRFunc)                                  (VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CreateSharedSwapchainsKHRFunc)                                             (VkDevice device, deUint32 swapchainCount, const VkSwapchainCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchains);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetMemoryFdKHRFunc)                                                                (VkDevice device, const VkMemoryGetFdInfoKHR* pGetFdInfo, int* pFd);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetMemoryFdPropertiesKHRFunc)                                              (VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, int fd, VkMemoryFdPropertiesKHR* pMemoryFdProperties);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* ImportSemaphoreFdKHRFunc)                                                  (VkDevice device, const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetSemaphoreFdKHRFunc)                                                             (VkDevice device, const VkSemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetSwapchainStatusKHRFunc)                                                 (VkDevice device, VkSwapchainKHR swapchain);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* ImportFenceFdKHRFunc)                                                              (VkDevice device, const VkImportFenceFdInfoKHR* pImportFenceFdInfo);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetFenceFdKHRFunc)                                                                 (VkDevice device, const VkFenceGetFdInfoKHR* pGetFdInfo, int* pFd);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetPhysicalDeviceSurfaceCapabilities2KHRFunc)              (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkSurfaceCapabilities2KHR* pSurfaceCapabilities);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetPhysicalDeviceSurfaceFormats2KHRFunc)                   (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, deUint32* pSurfaceFormatCount, VkSurfaceFormat2KHR* pSurfaceFormats);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetPhysicalDeviceDisplayProperties2KHRFunc)                (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayProperties2KHR* pProperties);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetPhysicalDeviceDisplayPlaneProperties2KHRFunc)   (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPlaneProperties2KHR* pProperties);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetDisplayModeProperties2KHRFunc)                                  (VkPhysicalDevice physicalDevice, VkDisplayKHR display, deUint32* pPropertyCount, VkDisplayModeProperties2KHR* pProperties);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetDisplayPlaneCapabilities2KHRFunc)                               (VkPhysicalDevice physicalDevice, const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo, VkDisplayPlaneCapabilities2KHR* pCapabilities);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetPhysicalDeviceFragmentShadingRatesKHRFunc)              (VkPhysicalDevice physicalDevice, deUint32* pFragmentShadingRateCount, VkPhysicalDeviceFragmentShadingRateKHR* pFragmentShadingRates);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetFragmentShadingRateKHRFunc)                                  (VkCommandBuffer commandBuffer, const VkExtent2D* pFragmentSize, const VkFragmentShadingRateCombinerOpKHR combinerOps[2]);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetFaultDataKHRFunc)                                                               (VkDevice device, VkFaultQueryBehavior faultQueryBehavior, VkBool32* pUnrecordedFaults, deUint32* pFaultCount, VkFaultData* pFaults);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdRefreshObjectsKHRFunc)                                                  (VkCommandBuffer commandBuffer, const VkRefreshObjectListKHR* pRefreshObjects);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetPhysicalDeviceRefreshableObjectTypesKHRFunc)    (VkPhysicalDevice physicalDevice, deUint32* pRefreshableObjectCount, VkObjectType* pRefreshableObjectTypes);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdCopyBuffer2KHRFunc)                                                             (VkCommandBuffer commandBuffer, const VkCopyBufferInfo2KHR* pCopyBufferInfo);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdCopyImage2KHRFunc)                                                              (VkCommandBuffer commandBuffer, const VkCopyImageInfo2KHR* pCopyImageInfo);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdCopyBufferToImage2KHRFunc)                                              (VkCommandBuffer commandBuffer, const VkCopyBufferToImageInfo2KHR* pCopyBufferToImageInfo);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdCopyImageToBuffer2KHRFunc)                                              (VkCommandBuffer commandBuffer, const VkCopyImageToBufferInfo2KHR* pCopyImageToBufferInfo);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdBlitImage2KHRFunc)                                                              (VkCommandBuffer commandBuffer, const VkBlitImageInfo2KHR* pBlitImageInfo);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdResolveImage2KHRFunc)                                                   (VkCommandBuffer commandBuffer, const VkResolveImageInfo2KHR* pResolveImageInfo);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* ReleaseDisplayEXTFunc)                                                             (VkPhysicalDevice physicalDevice, VkDisplayKHR display);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetPhysicalDeviceSurfaceCapabilities2EXTFunc)              (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilities2EXT* pSurfaceCapabilities);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* DisplayPowerControlEXTFunc)                                                (VkDevice device, VkDisplayKHR display, const VkDisplayPowerInfoEXT* pDisplayPowerInfo);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* RegisterDeviceEventEXTFunc)                                                (VkDevice device, const VkDeviceEventInfoEXT* pDeviceEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* RegisterDisplayEventEXTFunc)                                               (VkDevice device, VkDisplayKHR display, const VkDisplayEventInfoEXT* pDisplayEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetSwapchainCounterEXTFunc)                                                (VkDevice device, VkSwapchainKHR swapchain, VkSurfaceCounterFlagBitsEXT counter, deUint64* pCounterValue);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetDiscardRectangleEXTFunc)                                             (VkCommandBuffer commandBuffer, deUint32 firstDiscardRectangle, deUint32 discardRectangleCount, const VkRect2D* pDiscardRectangles);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* SetHdrMetadataEXTFunc)                                                             (VkDevice device, deUint32 swapchainCount, const VkSwapchainKHR* pSwapchains, const VkHdrMetadataEXT* pMetadata);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetSampleLocationsEXTFunc)                                              (VkCommandBuffer commandBuffer, const VkSampleLocationsInfoEXT* pSampleLocationsInfo);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* GetPhysicalDeviceMultisamplePropertiesEXTFunc)             (VkPhysicalDevice physicalDevice, VkSampleCountFlagBits samples, VkMultisamplePropertiesEXT* pMultisampleProperties);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetImageDrmFormatModifierPropertiesEXTFunc)                (VkDevice device, VkImage image, VkImageDrmFormatModifierPropertiesEXT* pProperties);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetMemoryHostPointerPropertiesEXTFunc)                             (VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, const void* pHostPointer, VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetPhysicalDeviceCalibrateableTimeDomainsEXTFunc)  (VkPhysicalDevice physicalDevice, deUint32* pTimeDomainCount, VkTimeDomainEXT* pTimeDomains);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetCalibratedTimestampsEXTFunc)                                    (VkDevice device, deUint32 timestampCount, const VkCalibratedTimestampInfoEXT* pTimestampInfos, deUint64* pTimestamps, deUint64* pMaxDeviation);
- typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CreateHeadlessSurfaceEXTFunc)                                              (VkInstance instance, const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetLineStippleEXTFunc)                                                  (VkCommandBuffer commandBuffer, deUint32 lineStippleFactor, deUint16 lineStipplePattern);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetCullModeEXTFunc)                                                             (VkCommandBuffer commandBuffer, VkCullModeFlags cullMode);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetFrontFaceEXTFunc)                                                    (VkCommandBuffer commandBuffer, VkFrontFace frontFace);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetPrimitiveTopologyEXTFunc)                                    (VkCommandBuffer commandBuffer, VkPrimitiveTopology primitiveTopology);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetViewportWithCountEXTFunc)                                    (VkCommandBuffer commandBuffer, deUint32 viewportCount, const VkViewport* pViewports);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetScissorWithCountEXTFunc)                                             (VkCommandBuffer commandBuffer, deUint32 scissorCount, const VkRect2D* pScissors);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdBindVertexBuffers2EXTFunc)                                              (VkCommandBuffer commandBuffer, deUint32 firstBinding, deUint32 bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes, const VkDeviceSize* pStrides);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetDepthTestEnableEXTFunc)                                              (VkCommandBuffer commandBuffer, VkBool32 depthTestEnable);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetDepthWriteEnableEXTFunc)                                             (VkCommandBuffer commandBuffer, VkBool32 depthWriteEnable);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetDepthCompareOpEXTFunc)                                               (VkCommandBuffer commandBuffer, VkCompareOp depthCompareOp);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetDepthBoundsTestEnableEXTFunc)                                (VkCommandBuffer commandBuffer, VkBool32 depthBoundsTestEnable);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetStencilTestEnableEXTFunc)                                    (VkCommandBuffer commandBuffer, VkBool32 stencilTestEnable);
- typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetStencilOpEXTFunc)                                                    (VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, VkStencilOp failOp, VkStencilOp passOp, VkStencilOp depthFailOp, VkCompareOp compareOp);
 +/* WARNING: This is auto-generated file. Do not modify, since changes will
 + * be lost! Modify the generating script instead.
 + */
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CreateInstanceFunc)                                                                                                (const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkInstance* pInstance);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* DestroyInstanceFunc)                                                                                               (VkInstance instance, const VkAllocationCallbacks* pAllocator);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* EnumeratePhysicalDevicesFunc)                                                                              (VkInstance instance, deUint32* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* GetPhysicalDeviceFeaturesFunc)                                                                             (VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* GetPhysicalDeviceFormatPropertiesFunc)                                                             (VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetPhysicalDeviceImageFormatPropertiesFunc)                                                (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* GetPhysicalDevicePropertiesFunc)                                                                   (VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* GetPhysicalDeviceQueueFamilyPropertiesFunc)                                                (VkPhysicalDevice physicalDevice, deUint32* pQueueFamilyPropertyCount, VkQueueFamilyProperties* pQueueFamilyProperties);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* GetPhysicalDeviceMemoryPropertiesFunc)                                                             (VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties);
++typedef VKAPI_ATTR PFN_vkVoidFunction (VKAPI_CALL* GetInstanceProcAddrFunc)                                                                                   (VkInstance instance, const char* pName);
++typedef VKAPI_ATTR PFN_vkVoidFunction (VKAPI_CALL* GetDeviceProcAddrFunc)                                                                                             (VkDevice device, const char* pName);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CreateDeviceFunc)                                                                                                  (VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* DestroyDeviceFunc)                                                                                                 (VkDevice device, const VkAllocationCallbacks* pAllocator);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* EnumerateInstanceExtensionPropertiesFunc)                                                  (const char* pLayerName, deUint32* pPropertyCount, VkExtensionProperties* pProperties);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* EnumerateDeviceExtensionPropertiesFunc)                                                    (VkPhysicalDevice physicalDevice, const char* pLayerName, deUint32* pPropertyCount, VkExtensionProperties* pProperties);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* EnumerateInstanceLayerPropertiesFunc)                                                              (deUint32* pPropertyCount, VkLayerProperties* pProperties);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* EnumerateDeviceLayerPropertiesFunc)                                                                (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkLayerProperties* pProperties);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* GetDeviceQueueFunc)                                                                                                (VkDevice device, deUint32 queueFamilyIndex, deUint32 queueIndex, VkQueue* pQueue);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* QueueSubmitFunc)                                                                                                   (VkQueue queue, deUint32 submitCount, const VkSubmitInfo* pSubmits, VkFence fence);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* QueueWaitIdleFunc)                                                                                                 (VkQueue queue);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* DeviceWaitIdleFunc)                                                                                                (VkDevice device);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* AllocateMemoryFunc)                                                                                                (VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* MapMemoryFunc)                                                                                                             (VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* UnmapMemoryFunc)                                                                                                   (VkDevice device, VkDeviceMemory memory);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* FlushMappedMemoryRangesFunc)                                                                               (VkDevice device, deUint32 memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* InvalidateMappedMemoryRangesFunc)                                                                  (VkDevice device, deUint32 memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* GetDeviceMemoryCommitmentFunc)                                                                             (VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* BindBufferMemoryFunc)                                                                                              (VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* BindImageMemoryFunc)                                                                                               (VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* GetBufferMemoryRequirementsFunc)                                                                   (VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* GetImageMemoryRequirementsFunc)                                                                    (VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CreateFenceFunc)                                                                                                   (VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* DestroyFenceFunc)                                                                                                  (VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* ResetFencesFunc)                                                                                                   (VkDevice device, deUint32 fenceCount, const VkFence* pFences);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetFenceStatusFunc)                                                                                                (VkDevice device, VkFence fence);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* WaitForFencesFunc)                                                                                                 (VkDevice device, deUint32 fenceCount, const VkFence* pFences, VkBool32 waitAll, deUint64 timeout);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CreateSemaphoreFunc)                                                                                               (VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* DestroySemaphoreFunc)                                                                                              (VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CreateEventFunc)                                                                                                   (VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkEvent* pEvent);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* DestroyEventFunc)                                                                                                  (VkDevice device, VkEvent event, const VkAllocationCallbacks* pAllocator);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetEventStatusFunc)                                                                                                (VkDevice device, VkEvent event);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* SetEventFunc)                                                                                                              (VkDevice device, VkEvent event);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* ResetEventFunc)                                                                                                    (VkDevice device, VkEvent event);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CreateQueryPoolFunc)                                                                                               (VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkQueryPool* pQueryPool);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetQueryPoolResultsFunc)                                                                                   (VkDevice device, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount, deUintptr dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CreateBufferFunc)                                                                                                  (VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* DestroyBufferFunc)                                                                                                 (VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CreateBufferViewFunc)                                                                                              (VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* DestroyBufferViewFunc)                                                                                             (VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* pAllocator);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CreateImageFunc)                                                                                                   (VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImage* pImage);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* DestroyImageFunc)                                                                                                  (VkDevice device, VkImage image, const VkAllocationCallbacks* pAllocator);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* GetImageSubresourceLayoutFunc)                                                                             (VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CreateImageViewFunc)                                                                                               (VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImageView* pView);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* DestroyImageViewFunc)                                                                                              (VkDevice device, VkImageView imageView, const VkAllocationCallbacks* pAllocator);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CreatePipelineCacheFunc)                                                                                   (VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* DestroyPipelineCacheFunc)                                                                                  (VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CreateGraphicsPipelinesFunc)                                                                               (VkDevice device, VkPipelineCache pipelineCache, deUint32 createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CreateComputePipelinesFunc)                                                                                (VkDevice device, VkPipelineCache pipelineCache, deUint32 createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* DestroyPipelineFunc)                                                                                               (VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CreatePipelineLayoutFunc)                                                                                  (VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* DestroyPipelineLayoutFunc)                                                                                 (VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* pAllocator);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CreateSamplerFunc)                                                                                                 (VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* DestroySamplerFunc)                                                                                                (VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CreateDescriptorSetLayoutFunc)                                                                             (VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* DestroyDescriptorSetLayoutFunc)                                                                    (VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* pAllocator);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CreateDescriptorPoolFunc)                                                                                  (VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* ResetDescriptorPoolFunc)                                                                                   (VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* AllocateDescriptorSetsFunc)                                                                                (VkDevice device, const VkDescriptorSetAllocateInfo* pAllocateInfo, VkDescriptorSet* pDescriptorSets);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* FreeDescriptorSetsFunc)                                                                                    (VkDevice device, VkDescriptorPool descriptorPool, deUint32 descriptorSetCount, const VkDescriptorSet* pDescriptorSets);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* UpdateDescriptorSetsFunc)                                                                                  (VkDevice device, deUint32 descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites, deUint32 descriptorCopyCount, const VkCopyDescriptorSet* pDescriptorCopies);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CreateFramebufferFunc)                                                                                             (VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFramebuffer* pFramebuffer);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* DestroyFramebufferFunc)                                                                                    (VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CreateRenderPassFunc)                                                                                              (VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* DestroyRenderPassFunc)                                                                                             (VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* GetRenderAreaGranularityFunc)                                                                              (VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CreateCommandPoolFunc)                                                                                             (VkDevice device, const VkCommandPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCommandPool* pCommandPool);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* ResetCommandPoolFunc)                                                                                              (VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* AllocateCommandBuffersFunc)                                                                                (VkDevice device, const VkCommandBufferAllocateInfo* pAllocateInfo, VkCommandBuffer* pCommandBuffers);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* FreeCommandBuffersFunc)                                                                                    (VkDevice device, VkCommandPool commandPool, deUint32 commandBufferCount, const VkCommandBuffer* pCommandBuffers);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* BeginCommandBufferFunc)                                                                                    (VkCommandBuffer commandBuffer, const VkCommandBufferBeginInfo* pBeginInfo);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* EndCommandBufferFunc)                                                                                              (VkCommandBuffer commandBuffer);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* ResetCommandBufferFunc)                                                                                    (VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdBindPipelineFunc)                                                                                               (VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetViewportFunc)                                                                                                (VkCommandBuffer commandBuffer, deUint32 firstViewport, deUint32 viewportCount, const VkViewport* pViewports);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetScissorFunc)                                                                                                 (VkCommandBuffer commandBuffer, deUint32 firstScissor, deUint32 scissorCount, const VkRect2D* pScissors);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetLineWidthFunc)                                                                                               (VkCommandBuffer commandBuffer, float lineWidth);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetDepthBiasFunc)                                                                                               (VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetBlendConstantsFunc)                                                                                  (VkCommandBuffer commandBuffer, const float blendConstants[4]);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetDepthBoundsFunc)                                                                                             (VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetStencilCompareMaskFunc)                                                                              (VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, deUint32 compareMask);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetStencilWriteMaskFunc)                                                                                (VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, deUint32 writeMask);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetStencilReferenceFunc)                                                                                (VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, deUint32 reference);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdBindDescriptorSetsFunc)                                                                                 (VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, deUint32 firstSet, deUint32 descriptorSetCount, const VkDescriptorSet* pDescriptorSets, deUint32 dynamicOffsetCount, const deUint32* pDynamicOffsets);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdBindIndexBufferFunc)                                                                                    (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdBindVertexBuffersFunc)                                                                                  (VkCommandBuffer commandBuffer, deUint32 firstBinding, deUint32 bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdDrawFunc)                                                                                                               (VkCommandBuffer commandBuffer, deUint32 vertexCount, deUint32 instanceCount, deUint32 firstVertex, deUint32 firstInstance);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdDrawIndexedFunc)                                                                                                (VkCommandBuffer commandBuffer, deUint32 indexCount, deUint32 instanceCount, deUint32 firstIndex, deInt32 vertexOffset, deUint32 firstInstance);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdDrawIndirectFunc)                                                                                               (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, deUint32 drawCount, deUint32 stride);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdDrawIndexedIndirectFunc)                                                                                (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, deUint32 drawCount, deUint32 stride);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdDispatchFunc)                                                                                                   (VkCommandBuffer commandBuffer, deUint32 groupCountX, deUint32 groupCountY, deUint32 groupCountZ);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdDispatchIndirectFunc)                                                                                   (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdCopyBufferFunc)                                                                                                 (VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, deUint32 regionCount, const VkBufferCopy* pRegions);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdCopyImageFunc)                                                                                                  (VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkImageCopy* pRegions);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdBlitImageFunc)                                                                                                  (VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkImageBlit* pRegions, VkFilter filter);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdCopyBufferToImageFunc)                                                                                  (VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkBufferImageCopy* pRegions);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdCopyImageToBufferFunc)                                                                                  (VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, deUint32 regionCount, const VkBufferImageCopy* pRegions);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdUpdateBufferFunc)                                                                                               (VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const void* pData);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdFillBufferFunc)                                                                                                 (VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, deUint32 data);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdClearColorImageFunc)                                                                                    (VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, deUint32 rangeCount, const VkImageSubresourceRange* pRanges);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdClearDepthStencilImageFunc)                                                                             (VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, deUint32 rangeCount, const VkImageSubresourceRange* pRanges);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdClearAttachmentsFunc)                                                                                   (VkCommandBuffer commandBuffer, deUint32 attachmentCount, const VkClearAttachment* pAttachments, deUint32 rectCount, const VkClearRect* pRects);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdResolveImageFunc)                                                                                               (VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkImageResolve* pRegions);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetEventFunc)                                                                                                   (VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdResetEventFunc)                                                                                                 (VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdWaitEventsFunc)                                                                                                 (VkCommandBuffer commandBuffer, deUint32 eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, deUint32 memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, deUint32 bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, deUint32 imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdPipelineBarrierFunc)                                                                                    (VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, deUint32 memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, deUint32 bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, deUint32 imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdBeginQueryFunc)                                                                                                 (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query, VkQueryControlFlags flags);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdEndQueryFunc)                                                                                                   (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdResetQueryPoolFunc)                                                                                             (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdWriteTimestampFunc)                                                                                             (VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, deUint32 query);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdCopyQueryPoolResultsFunc)                                                                               (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdPushConstantsFunc)                                                                                              (VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, deUint32 offset, deUint32 size, const void* pValues);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdBeginRenderPassFunc)                                                                                    (VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdNextSubpassFunc)                                                                                                (VkCommandBuffer commandBuffer, VkSubpassContents contents);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdEndRenderPassFunc)                                                                                              (VkCommandBuffer commandBuffer);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdExecuteCommandsFunc)                                                                                    (VkCommandBuffer commandBuffer, deUint32 commandBufferCount, const VkCommandBuffer* pCommandBuffers);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* EnumerateInstanceVersionFunc)                                                                              (deUint32* pApiVersion);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* BindBufferMemory2Func)                                                                                             (VkDevice device, deUint32 bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* BindImageMemory2Func)                                                                                              (VkDevice device, deUint32 bindInfoCount, const VkBindImageMemoryInfo* pBindInfos);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* GetDeviceGroupPeerMemoryFeaturesFunc)                                                              (VkDevice device, deUint32 heapIndex, deUint32 localDeviceIndex, deUint32 remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetDeviceMaskFunc)                                                                                              (VkCommandBuffer commandBuffer, deUint32 deviceMask);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdDispatchBaseFunc)                                                                                               (VkCommandBuffer commandBuffer, deUint32 baseGroupX, deUint32 baseGroupY, deUint32 baseGroupZ, deUint32 groupCountX, deUint32 groupCountY, deUint32 groupCountZ);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* EnumeratePhysicalDeviceGroupsFunc)                                                                 (VkInstance instance, deUint32* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* GetImageMemoryRequirements2Func)                                                                   (VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* GetBufferMemoryRequirements2Func)                                                                  (VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* GetPhysicalDeviceFeatures2Func)                                                                    (VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* GetPhysicalDeviceProperties2Func)                                                                  (VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* GetPhysicalDeviceFormatProperties2Func)                                                    (VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetPhysicalDeviceImageFormatProperties2Func)                                               (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* GetPhysicalDeviceQueueFamilyProperties2Func)                                               (VkPhysicalDevice physicalDevice, deUint32* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* GetPhysicalDeviceMemoryProperties2Func)                                                    (VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* GetDeviceQueue2Func)                                                                                               (VkDevice device, const VkDeviceQueueInfo2* pQueueInfo, VkQueue* pQueue);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CreateSamplerYcbcrConversionFunc)                                                                  (VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* DestroySamplerYcbcrConversionFunc)                                                                 (VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* GetPhysicalDeviceExternalBufferPropertiesFunc)                                             (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties);
++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* GetCommandPoolMemoryConsumptionFunc)                                                               (VkDevice device, VkCommandPool commandPool, VkCommandBuffer commandBuffer, VkCommandPoolMemoryConsumption* pConsumption);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetFaultDataFunc)                                                                                                  (VkDevice device, VkFaultQueryBehavior faultQueryBehavior, VkBool32* pUnrecordedFaults, deUint32* pFaultCount, VkFaultData* pFaults);
++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);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetPhysicalDeviceSurfaceFormatsKHRFunc)                                                    (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetPhysicalDeviceSurfacePresentModesKHRFunc)                                               (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pPresentModeCount, VkPresentModeKHR* pPresentModes);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CreateSwapchainKHRFunc)                                                                                    (VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetSwapchainImagesKHRFunc)                                                                                 (VkDevice device, VkSwapchainKHR swapchain, deUint32* pSwapchainImageCount, VkImage* pSwapchainImages);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* AcquireNextImageKHRFunc)                                                                                   (VkDevice device, VkSwapchainKHR swapchain, deUint64 timeout, VkSemaphore semaphore, VkFence fence, deUint32* pImageIndex);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* QueuePresentKHRFunc)                                                                                               (VkQueue queue, const VkPresentInfoKHR* pPresentInfo);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetDeviceGroupPresentCapabilitiesKHRFunc)                                                  (VkDevice device, VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetDeviceGroupSurfacePresentModesKHRFunc)                                                  (VkDevice device, VkSurfaceKHR surface, VkDeviceGroupPresentModeFlagsKHR* pModes);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetPhysicalDevicePresentRectanglesKHRFunc)                                                 (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pRectCount, VkRect2D* pRects);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* AcquireNextImage2KHRFunc)                                                                                  (VkDevice device, const VkAcquireNextImageInfoKHR* pAcquireInfo, deUint32* pImageIndex);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetPhysicalDeviceDisplayPropertiesKHRFunc)                                                 (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPropertiesKHR* pProperties);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetPhysicalDeviceDisplayPlanePropertiesKHRFunc)                                    (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetDisplayPlaneSupportedDisplaysKHRFunc)                                                   (VkPhysicalDevice physicalDevice, deUint32 planeIndex, deUint32* pDisplayCount, VkDisplayKHR* pDisplays);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetDisplayModePropertiesKHRFunc)                                                                   (VkPhysicalDevice physicalDevice, VkDisplayKHR display, deUint32* pPropertyCount, VkDisplayModePropertiesKHR* pProperties);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CreateDisplayModeKHRFunc)                                                                                  (VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDisplayModeKHR* pMode);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetDisplayPlaneCapabilitiesKHRFunc)                                                                (VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, deUint32 planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CreateDisplayPlaneSurfaceKHRFunc)                                                                  (VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CreateSharedSwapchainsKHRFunc)                                                                             (VkDevice device, deUint32 swapchainCount, const VkSwapchainCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchains);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetMemoryFdKHRFunc)                                                                                                (VkDevice device, const VkMemoryGetFdInfoKHR* pGetFdInfo, int* pFd);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetMemoryFdPropertiesKHRFunc)                                                                              (VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, int fd, VkMemoryFdPropertiesKHR* pMemoryFdProperties);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* ImportSemaphoreFdKHRFunc)                                                                                  (VkDevice device, const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetSemaphoreFdKHRFunc)                                                                                             (VkDevice device, const VkSemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetSwapchainStatusKHRFunc)                                                                                 (VkDevice device, VkSwapchainKHR swapchain);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* ImportFenceFdKHRFunc)                                                                                              (VkDevice device, const VkImportFenceFdInfoKHR* pImportFenceFdInfo);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetFenceFdKHRFunc)                                                                                                 (VkDevice device, const VkFenceGetFdInfoKHR* pGetFdInfo, int* pFd);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHRFunc) (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, deUint32* pCounterCount, VkPerformanceCounterKHR* pCounters, VkPerformanceCounterDescriptionKHR* pCounterDescriptions);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHRFunc)                 (VkPhysicalDevice physicalDevice, const VkQueryPoolPerformanceCreateInfoKHR* pPerformanceQueryCreateInfo, deUint32* pNumPasses);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* AcquireProfilingLockKHRFunc)                                                                               (VkDevice device, const VkAcquireProfilingLockInfoKHR* pInfo);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* ReleaseProfilingLockKHRFunc)                                                                               (VkDevice device);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetPhysicalDeviceSurfaceCapabilities2KHRFunc)                                              (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkSurfaceCapabilities2KHR* pSurfaceCapabilities);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetPhysicalDeviceSurfaceFormats2KHRFunc)                                                   (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, deUint32* pSurfaceFormatCount, VkSurfaceFormat2KHR* pSurfaceFormats);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetPhysicalDeviceDisplayProperties2KHRFunc)                                                (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayProperties2KHR* pProperties);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetPhysicalDeviceDisplayPlaneProperties2KHRFunc)                                   (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPlaneProperties2KHR* pProperties);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetDisplayModeProperties2KHRFunc)                                                                  (VkPhysicalDevice physicalDevice, VkDisplayKHR display, deUint32* pPropertyCount, VkDisplayModeProperties2KHR* pProperties);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetDisplayPlaneCapabilities2KHRFunc)                                                               (VkPhysicalDevice physicalDevice, const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo, VkDisplayPlaneCapabilities2KHR* pCapabilities);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetPhysicalDeviceFragmentShadingRatesKHRFunc)                                              (VkPhysicalDevice physicalDevice, deUint32* pFragmentShadingRateCount, VkPhysicalDeviceFragmentShadingRateKHR* pFragmentShadingRates);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetFragmentShadingRateKHRFunc)                                                                  (VkCommandBuffer commandBuffer, const VkExtent2D* pFragmentSize, const VkFragmentShadingRateCombinerOpKHR combinerOps[2]);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdRefreshObjectsKHRFunc)                                                                                  (VkCommandBuffer commandBuffer, const VkRefreshObjectListKHR* pRefreshObjects);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetPhysicalDeviceRefreshableObjectTypesKHRFunc)                                    (VkPhysicalDevice physicalDevice, deUint32* pRefreshableObjectCount, VkObjectType* pRefreshableObjectTypes);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetEvent2KHRFunc)                                                                                               (VkCommandBuffer commandBuffer, VkEvent event, const VkDependencyInfoKHR* pDependencyInfo);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdResetEvent2KHRFunc)                                                                                             (VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags2KHR stageMask);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdWaitEvents2KHRFunc)                                                                                             (VkCommandBuffer commandBuffer, deUint32 eventCount, const VkEvent* pEvents, const VkDependencyInfoKHR* pDependencyInfos);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdPipelineBarrier2KHRFunc)                                                                                (VkCommandBuffer commandBuffer, const VkDependencyInfoKHR* pDependencyInfo);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdWriteTimestamp2KHRFunc)                                                                                 (VkCommandBuffer commandBuffer, VkPipelineStageFlags2KHR stage, VkQueryPool queryPool, deUint32 query);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* QueueSubmit2KHRFunc)                                                                                               (VkQueue queue, deUint32 submitCount, const VkSubmitInfo2KHR* pSubmits, VkFence fence);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdWriteBufferMarker2AMDFunc)                                                                              (VkCommandBuffer commandBuffer, VkPipelineStageFlags2KHR stage, VkBuffer dstBuffer, VkDeviceSize dstOffset, deUint32 marker);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* GetQueueCheckpointData2NVFunc)                                                                             (VkQueue queue, deUint32* pCheckpointDataCount, VkCheckpointData2NV* pCheckpointData);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdCopyBuffer2KHRFunc)                                                                                             (VkCommandBuffer commandBuffer, const VkCopyBufferInfo2KHR* pCopyBufferInfo);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdCopyImage2KHRFunc)                                                                                              (VkCommandBuffer commandBuffer, const VkCopyImageInfo2KHR* pCopyImageInfo);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdCopyBufferToImage2KHRFunc)                                                                              (VkCommandBuffer commandBuffer, const VkCopyBufferToImageInfo2KHR* pCopyBufferToImageInfo);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdCopyImageToBuffer2KHRFunc)                                                                              (VkCommandBuffer commandBuffer, const VkCopyImageToBufferInfo2KHR* pCopyImageToBufferInfo);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdBlitImage2KHRFunc)                                                                                              (VkCommandBuffer commandBuffer, const VkBlitImageInfo2KHR* pBlitImageInfo);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdResolveImage2KHRFunc)                                                                                   (VkCommandBuffer commandBuffer, const VkResolveImageInfo2KHR* pResolveImageInfo);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* ReleaseDisplayEXTFunc)                                                                                             (VkPhysicalDevice physicalDevice, VkDisplayKHR display);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetPhysicalDeviceSurfaceCapabilities2EXTFunc)                                              (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilities2EXT* pSurfaceCapabilities);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* DisplayPowerControlEXTFunc)                                                                                (VkDevice device, VkDisplayKHR display, const VkDisplayPowerInfoEXT* pDisplayPowerInfo);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* RegisterDeviceEventEXTFunc)                                                                                (VkDevice device, const VkDeviceEventInfoEXT* pDeviceEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* RegisterDisplayEventEXTFunc)                                                                               (VkDevice device, VkDisplayKHR display, const VkDisplayEventInfoEXT* pDisplayEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetSwapchainCounterEXTFunc)                                                                                (VkDevice device, VkSwapchainKHR swapchain, VkSurfaceCounterFlagBitsEXT counter, deUint64* pCounterValue);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetDiscardRectangleEXTFunc)                                                                             (VkCommandBuffer commandBuffer, deUint32 firstDiscardRectangle, deUint32 discardRectangleCount, const VkRect2D* pDiscardRectangles);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* SetHdrMetadataEXTFunc)                                                                                             (VkDevice device, deUint32 swapchainCount, const VkSwapchainKHR* pSwapchains, const VkHdrMetadataEXT* pMetadata);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* SetDebugUtilsObjectNameEXTFunc)                                                                    (VkDevice device, const VkDebugUtilsObjectNameInfoEXT* pNameInfo);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* SetDebugUtilsObjectTagEXTFunc)                                                                             (VkDevice device, const VkDebugUtilsObjectTagInfoEXT* pTagInfo);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* QueueBeginDebugUtilsLabelEXTFunc)                                                                  (VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* QueueEndDebugUtilsLabelEXTFunc)                                                                    (VkQueue queue);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* QueueInsertDebugUtilsLabelEXTFunc)                                                                 (VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdBeginDebugUtilsLabelEXTFunc)                                                                    (VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdEndDebugUtilsLabelEXTFunc)                                                                              (VkCommandBuffer commandBuffer);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdInsertDebugUtilsLabelEXTFunc)                                                                   (VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CreateDebugUtilsMessengerEXTFunc)                                                                  (VkInstance instance, const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugUtilsMessengerEXT* pMessenger);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* DestroyDebugUtilsMessengerEXTFunc)                                                                 (VkInstance instance, VkDebugUtilsMessengerEXT messenger, const VkAllocationCallbacks* pAllocator);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* SubmitDebugUtilsMessageEXTFunc)                                                                    (VkInstance instance, VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageTypes, const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetSampleLocationsEXTFunc)                                                                              (VkCommandBuffer commandBuffer, const VkSampleLocationsInfoEXT* pSampleLocationsInfo);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* GetPhysicalDeviceMultisamplePropertiesEXTFunc)                                             (VkPhysicalDevice physicalDevice, VkSampleCountFlagBits samples, VkMultisamplePropertiesEXT* pMultisampleProperties);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetImageDrmFormatModifierPropertiesEXTFunc)                                                (VkDevice device, VkImage image, VkImageDrmFormatModifierPropertiesEXT* pProperties);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetMemoryHostPointerPropertiesEXTFunc)                                                             (VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, const void* pHostPointer, VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetPhysicalDeviceCalibrateableTimeDomainsEXTFunc)                                  (VkPhysicalDevice physicalDevice, deUint32* pTimeDomainCount, VkTimeDomainEXT* pTimeDomains);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* GetCalibratedTimestampsEXTFunc)                                                                    (VkDevice device, deUint32 timestampCount, const VkCalibratedTimestampInfoEXT* pTimestampInfos, deUint64* pTimestamps, deUint64* pMaxDeviation);
++typedef VKAPI_ATTR VkResult                           (VKAPI_CALL* CreateHeadlessSurfaceEXTFunc)                                                                              (VkInstance instance, const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetLineStippleEXTFunc)                                                                                  (VkCommandBuffer commandBuffer, deUint32 lineStippleFactor, deUint16 lineStipplePattern);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetCullModeEXTFunc)                                                                                             (VkCommandBuffer commandBuffer, VkCullModeFlags cullMode);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetFrontFaceEXTFunc)                                                                                    (VkCommandBuffer commandBuffer, VkFrontFace frontFace);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetPrimitiveTopologyEXTFunc)                                                                    (VkCommandBuffer commandBuffer, VkPrimitiveTopology primitiveTopology);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetViewportWithCountEXTFunc)                                                                    (VkCommandBuffer commandBuffer, deUint32 viewportCount, const VkViewport* pViewports);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetScissorWithCountEXTFunc)                                                                             (VkCommandBuffer commandBuffer, deUint32 scissorCount, const VkRect2D* pScissors);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdBindVertexBuffers2EXTFunc)                                                                              (VkCommandBuffer commandBuffer, deUint32 firstBinding, deUint32 bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes, const VkDeviceSize* pStrides);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetDepthTestEnableEXTFunc)                                                                              (VkCommandBuffer commandBuffer, VkBool32 depthTestEnable);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetDepthWriteEnableEXTFunc)                                                                             (VkCommandBuffer commandBuffer, VkBool32 depthWriteEnable);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetDepthCompareOpEXTFunc)                                                                               (VkCommandBuffer commandBuffer, VkCompareOp depthCompareOp);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetDepthBoundsTestEnableEXTFunc)                                                                (VkCommandBuffer commandBuffer, VkBool32 depthBoundsTestEnable);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetStencilTestEnableEXTFunc)                                                                    (VkCommandBuffer commandBuffer, VkBool32 stencilTestEnable);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetStencilOpEXTFunc)                                                                                    (VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, VkStencilOp failOp, VkStencilOp passOp, VkStencilOp depthFailOp, VkCompareOp compareOp);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetVertexInputEXTFunc)                                                                                  (VkCommandBuffer commandBuffer, deUint32 vertexBindingDescriptionCount, const VkVertexInputBindingDescription2EXT* pVertexBindingDescriptions, deUint32 vertexAttributeDescriptionCount, const VkVertexInputAttributeDescription2EXT* pVertexAttributeDescriptions);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetPatchControlPointsEXTFunc)                                                                   (VkCommandBuffer commandBuffer, deUint32 patchControlPoints);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetRasterizerDiscardEnableEXTFunc)                                                              (VkCommandBuffer commandBuffer, VkBool32 rasterizerDiscardEnable);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetDepthBiasEnableEXTFunc)                                                                              (VkCommandBuffer commandBuffer, VkBool32 depthBiasEnable);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetLogicOpEXTFunc)                                                                                              (VkCommandBuffer commandBuffer, VkLogicOp logicOp);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetPrimitiveRestartEnableEXTFunc)                                                               (VkCommandBuffer commandBuffer, VkBool32 primitiveRestartEnable);
++typedef VKAPI_ATTR void                                       (VKAPI_CALL* CmdSetColorWriteEnableEXTFunc)                                                                             (VkCommandBuffer commandBuffer, deUint32 attachmentCount, const VkBool32* pColorWriteEnables);
index 0b0f57c,0000000..fe87a1c
mode 100644,000000..100644
--- /dev/null
@@@ -1,1413 -1,0 +1,1528 @@@
- template<> VkStructureType getStructureType<VkBindSparseInfo> (void)
- {
-       return VK_STRUCTURE_TYPE_BIND_SPARSE_INFO;
- }
 +/* WARNING: This is auto-generated file. Do not modify, since changes will
 + * be lost! Modify the generating script instead.
 + */
 +template<> VkStructureType getStructureType<VkBufferMemoryBarrier> (void)
 +{
 +      return VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER;
 +}
 +
 +template<> VkStructureType getStructureType<VkImageMemoryBarrier> (void)
 +{
 +      return VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER;
 +}
 +
 +template<> VkStructureType getStructureType<VkMemoryBarrier> (void)
 +{
 +      return VK_STRUCTURE_TYPE_MEMORY_BARRIER;
 +}
 +
 +template<> VkStructureType getStructureType<VkApplicationInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_APPLICATION_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkInstanceCreateInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkDeviceQueueCreateInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkDeviceCreateInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkSubmitInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_SUBMIT_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkMappedMemoryRange> (void)
 +{
 +      return VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE;
 +}
 +
 +template<> VkStructureType getStructureType<VkMemoryAllocateInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO;
 +}
 +
- template<> VkStructureType getStructureType<VkPhysicalDeviceVulkanSC10Features> (void)
- {
-       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_FEATURES;
- }
- template<> VkStructureType getStructureType<VkPhysicalDeviceVulkanSC10Properties> (void)
- {
-       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_PROPERTIES;
- }
- template<> VkStructureType getStructureType<VkPipelinePoolSize> (void)
- {
-       return VK_STRUCTURE_TYPE_PIPELINE_POOL_SIZE;
- }
- template<> VkStructureType getStructureType<VkDeviceMemoryReservationCreateInfo> (void)
- {
-       return VK_STRUCTURE_TYPE_DEVICE_MEMORY_RESERVATION_CREATE_INFO;
- }
- template<> VkStructureType getStructureType<VkCommandPoolMemoryReservationCreateInfo> (void)
- {
-       return VK_STRUCTURE_TYPE_COMMAND_POOL_MEMORY_RESERVATION_CREATE_INFO;
- }
- template<> VkStructureType getStructureType<VkCommandPoolMemoryConsumption> (void)
- {
-       return VK_STRUCTURE_TYPE_COMMAND_POOL_MEMORY_CONSUMPTION;
- }
- template<> VkStructureType getStructureType<VkPipelinePoolEntrySizeCreateInfo> (void)
- {
-       return VK_STRUCTURE_TYPE_PIPELINE_POOL_ENTRY_SIZE_CREATE_INFO;
- }
- template<> VkStructureType getStructureType<VkFaultData> (void)
- {
-       return VK_STRUCTURE_TYPE_FAULT_DATA;
- }
- template<> VkStructureType getStructureType<VkFaultCallbackInfo> (void)
- {
-       return VK_STRUCTURE_TYPE_FAULT_CALLBACK_INFO;
- }
- template<> VkStructureType getStructureType<VkPhysicalDeviceFaultHandlingProperties> (void)
- {
-       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_HANDLING_PROPERTIES;
- }
- template<> VkStructureType getStructureType<VkPhysicalDevicePipelineIdentifierFeatures> (void)
- {
-       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_IDENTIFIER_FEATURES;
- }
- template<> VkStructureType getStructureType<VkPipelineIdentifierInfo> (void)
- {
-       return VK_STRUCTURE_TYPE_PIPELINE_IDENTIFIER_INFO;
- }
 +template<> VkStructureType getStructureType<VkFenceCreateInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_FENCE_CREATE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkSemaphoreCreateInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkEventCreateInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_EVENT_CREATE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkQueryPoolCreateInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkBufferCreateInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkBufferViewCreateInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkImageCreateInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkImageViewCreateInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkPipelineCacheCreateInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkPipelineShaderStageCreateInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkComputePipelineCreateInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkPipelineVertexInputStateCreateInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkPipelineInputAssemblyStateCreateInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkPipelineTessellationStateCreateInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkPipelineViewportStateCreateInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkPipelineRasterizationStateCreateInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkPipelineMultisampleStateCreateInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkPipelineDepthStencilStateCreateInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkPipelineColorBlendStateCreateInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkPipelineDynamicStateCreateInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkGraphicsPipelineCreateInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkPipelineLayoutCreateInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkSamplerCreateInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkCopyDescriptorSet> (void)
 +{
 +      return VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET;
 +}
 +
 +template<> VkStructureType getStructureType<VkDescriptorPoolCreateInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkDescriptorSetAllocateInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkDescriptorSetLayoutCreateInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkWriteDescriptorSet> (void)
 +{
 +      return VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
 +}
 +
 +template<> VkStructureType getStructureType<VkFramebufferCreateInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkRenderPassCreateInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkCommandPoolCreateInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkCommandBufferAllocateInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkCommandBufferInheritanceInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkCommandBufferBeginInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkRenderPassBeginInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO;
 +}
 +
- template<> VkStructureType getStructureType<VkDeviceGroupBindSparseInfo> (void)
- {
-       return VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO;
- }
 +template<> VkStructureType getStructureType<VkPhysicalDeviceSubgroupProperties> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES;
 +}
 +
 +template<> VkStructureType getStructureType<VkBindBufferMemoryInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkBindImageMemoryInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDevice16BitStorageFeatures> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES;
 +}
 +
 +template<> VkStructureType getStructureType<VkMemoryDedicatedRequirements> (void)
 +{
 +      return VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS;
 +}
 +
 +template<> VkStructureType getStructureType<VkMemoryDedicatedAllocateInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkMemoryAllocateFlagsInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkDeviceGroupRenderPassBeginInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkDeviceGroupCommandBufferBeginInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkDeviceGroupSubmitInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO;
 +}
 +
- template<> VkStructureType getStructureType<VkImageSparseMemoryRequirementsInfo2> (void)
- {
-       return VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2;
- }
 +template<> VkStructureType getStructureType<VkBindBufferMemoryDeviceGroupInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkBindImageMemoryDeviceGroupInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceGroupProperties> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES;
 +}
 +
 +template<> VkStructureType getStructureType<VkDeviceGroupDeviceCreateInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkBufferMemoryRequirementsInfo2> (void)
 +{
 +      return VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2;
 +}
 +
 +template<> VkStructureType getStructureType<VkImageMemoryRequirementsInfo2> (void)
 +{
 +      return VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2;
 +}
 +
- template<> VkStructureType getStructureType<VkSparseImageMemoryRequirements2> (void)
- {
-       return VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2;
- }
 +template<> VkStructureType getStructureType<VkMemoryRequirements2> (void)
 +{
 +      return VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2;
 +}
 +
- template<> VkStructureType getStructureType<VkSparseImageFormatProperties2> (void)
- {
-       return VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2;
- }
- template<> VkStructureType getStructureType<VkPhysicalDeviceSparseImageFormatInfo2> (void)
- {
-       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2;
- }
 +template<> VkStructureType getStructureType<VkPhysicalDeviceFeatures2> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceProperties2> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2;
 +}
 +
 +template<> VkStructureType getStructureType<VkFormatProperties2> (void)
 +{
 +      return VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2;
 +}
 +
 +template<> VkStructureType getStructureType<VkImageFormatProperties2> (void)
 +{
 +      return VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceImageFormatInfo2> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2;
 +}
 +
 +template<> VkStructureType getStructureType<VkQueueFamilyProperties2> (void)
 +{
 +      return VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceMemoryProperties2> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDevicePointClippingProperties> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES;
 +}
 +
 +template<> VkStructureType getStructureType<VkRenderPassInputAttachmentAspectCreateInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkImageViewUsageCreateInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkPipelineTessellationDomainOriginStateCreateInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkRenderPassMultiviewCreateInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceMultiviewFeatures> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceMultiviewProperties> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceVariablePointersFeatures> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceProtectedMemoryFeatures> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceProtectedMemoryProperties> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES;
 +}
 +
 +template<> VkStructureType getStructureType<VkDeviceQueueInfo2> (void)
 +{
 +      return VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2;
 +}
 +
 +template<> VkStructureType getStructureType<VkProtectedSubmitInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkSamplerYcbcrConversionCreateInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkSamplerYcbcrConversionInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkBindImagePlaneMemoryInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkImagePlaneMemoryRequirementsInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceSamplerYcbcrConversionFeatures> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES;
 +}
 +
 +template<> VkStructureType getStructureType<VkSamplerYcbcrConversionImageFormatProperties> (void)
 +{
 +      return VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceExternalImageFormatInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkExternalImageFormatProperties> (void)
 +{
 +      return VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceExternalBufferInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkExternalBufferProperties> (void)
 +{
 +      return VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceIDProperties> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES;
 +}
 +
 +template<> VkStructureType getStructureType<VkExternalMemoryImageCreateInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkExternalMemoryBufferCreateInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkExportMemoryAllocateInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceExternalFenceInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkExternalFenceProperties> (void)
 +{
 +      return VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES;
 +}
 +
 +template<> VkStructureType getStructureType<VkExportFenceCreateInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkExportSemaphoreCreateInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceExternalSemaphoreInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkExternalSemaphoreProperties> (void)
 +{
 +      return VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceMaintenance3Properties> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES;
 +}
 +
 +template<> VkStructureType getStructureType<VkDescriptorSetLayoutSupport> (void)
 +{
 +      return VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceShaderDrawParametersFeatures> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceVulkan11Features> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceVulkan11Properties> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceVulkan12Features> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceVulkan12Properties> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES;
 +}
 +
 +template<> VkStructureType getStructureType<VkImageFormatListCreateInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkAttachmentDescription2> (void)
 +{
 +      return VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2;
 +}
 +
 +template<> VkStructureType getStructureType<VkAttachmentReference2> (void)
 +{
 +      return VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2;
 +}
 +
 +template<> VkStructureType getStructureType<VkSubpassDescription2> (void)
 +{
 +      return VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2;
 +}
 +
 +template<> VkStructureType getStructureType<VkSubpassDependency2> (void)
 +{
 +      return VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2;
 +}
 +
 +template<> VkStructureType getStructureType<VkRenderPassCreateInfo2> (void)
 +{
 +      return VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2;
 +}
 +
 +template<> VkStructureType getStructureType<VkSubpassBeginInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkSubpassEndInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_SUBPASS_END_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDevice8BitStorageFeatures> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceDriverProperties> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceShaderAtomicInt64Features> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceShaderFloat16Int8Features> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceFloatControlsProperties> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES;
 +}
 +
 +template<> VkStructureType getStructureType<VkDescriptorSetLayoutBindingFlagsCreateInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceDescriptorIndexingFeatures> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceDescriptorIndexingProperties> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES;
 +}
 +
 +template<> VkStructureType getStructureType<VkDescriptorSetVariableDescriptorCountAllocateInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkDescriptorSetVariableDescriptorCountLayoutSupport> (void)
 +{
 +      return VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT;
 +}
 +
 +template<> VkStructureType getStructureType<VkSubpassDescriptionDepthStencilResolve> (void)
 +{
 +      return VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceDepthStencilResolveProperties> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceScalarBlockLayoutFeatures> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES;
 +}
 +
 +template<> VkStructureType getStructureType<VkImageStencilUsageCreateInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkSamplerReductionModeCreateInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceSamplerFilterMinmaxProperties> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceVulkanMemoryModelFeatures> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceImagelessFramebufferFeatures> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES;
 +}
 +
 +template<> VkStructureType getStructureType<VkFramebufferAttachmentImageInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkFramebufferAttachmentsCreateInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkRenderPassAttachmentBeginInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceUniformBufferStandardLayoutFeatures> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES;
 +}
 +
 +template<> VkStructureType getStructureType<VkAttachmentReferenceStencilLayout> (void)
 +{
 +      return VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT;
 +}
 +
 +template<> VkStructureType getStructureType<VkAttachmentDescriptionStencilLayout> (void)
 +{
 +      return VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceHostQueryResetFeatures> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceTimelineSemaphoreFeatures> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceTimelineSemaphoreProperties> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES;
 +}
 +
 +template<> VkStructureType getStructureType<VkSemaphoreTypeCreateInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkTimelineSemaphoreSubmitInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkSemaphoreWaitInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkSemaphoreSignalInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceBufferDeviceAddressFeatures> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES;
 +}
 +
 +template<> VkStructureType getStructureType<VkBufferDeviceAddressInfo> (void)
 +{
 +      return VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO;
 +}
 +
 +template<> VkStructureType getStructureType<VkBufferOpaqueCaptureAddressCreateInfo> (void)
 +{
 +      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<VkPhysicalDeviceVulkanSC10Features> (void)
++{
++      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_FEATURES;
++}
++
++template<> VkStructureType getStructureType<VkPhysicalDeviceVulkanSC10Properties> (void)
++{
++      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_PROPERTIES;
++}
++
++template<> VkStructureType getStructureType<VkPipelinePoolSize> (void)
++{
++      return VK_STRUCTURE_TYPE_PIPELINE_POOL_SIZE;
++}
++
++template<> VkStructureType getStructureType<VkDeviceObjectReservationCreateInfo> (void)
++{
++      return VK_STRUCTURE_TYPE_DEVICE_OBJECT_RESERVATION_CREATE_INFO;
++}
++
++template<> VkStructureType getStructureType<VkCommandPoolMemoryReservationCreateInfo> (void)
++{
++      return VK_STRUCTURE_TYPE_COMMAND_POOL_MEMORY_RESERVATION_CREATE_INFO;
++}
++
++template<> VkStructureType getStructureType<VkCommandPoolMemoryConsumption> (void)
++{
++      return VK_STRUCTURE_TYPE_COMMAND_POOL_MEMORY_CONSUMPTION;
++}
++
++template<> VkStructureType getStructureType<VkPipelinePoolEntrySizeCreateInfo> (void)
++{
++      return VK_STRUCTURE_TYPE_PIPELINE_POOL_ENTRY_SIZE_CREATE_INFO;
++}
++
++template<> VkStructureType getStructureType<VkFaultData> (void)
++{
++      return VK_STRUCTURE_TYPE_FAULT_DATA;
++}
++
++template<> VkStructureType getStructureType<VkFaultCallbackInfo> (void)
++{
++      return VK_STRUCTURE_TYPE_FAULT_CALLBACK_INFO;
++}
++
++template<> VkStructureType getStructureType<VkPipelineIdentifierInfo> (void)
++{
++      return VK_STRUCTURE_TYPE_PIPELINE_IDENTIFIER_INFO;
++}
++
 +template<> VkStructureType getStructureType<VkSwapchainCreateInfoKHR> (void)
 +{
 +      return VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR;
 +}
 +
 +template<> VkStructureType getStructureType<VkPresentInfoKHR> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PRESENT_INFO_KHR;
 +}
 +
 +template<> VkStructureType getStructureType<VkImageSwapchainCreateInfoKHR> (void)
 +{
 +      return VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR;
 +}
 +
 +template<> VkStructureType getStructureType<VkBindImageMemorySwapchainInfoKHR> (void)
 +{
 +      return VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR;
 +}
 +
 +template<> VkStructureType getStructureType<VkAcquireNextImageInfoKHR> (void)
 +{
 +      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<VkDeviceGroupPresentInfoKHR> (void)
 +{
 +      return VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR;
 +}
 +
 +template<> VkStructureType getStructureType<VkDeviceGroupSwapchainCreateInfoKHR> (void)
 +{
 +      return VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR;
 +}
 +
 +template<> VkStructureType getStructureType<VkDisplayModeCreateInfoKHR> (void)
 +{
 +      return VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR;
 +}
 +
 +template<> VkStructureType getStructureType<VkDisplaySurfaceCreateInfoKHR> (void)
 +{
 +      return VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR;
 +}
 +
 +template<> VkStructureType getStructureType<VkDisplayPresentInfoKHR> (void)
 +{
 +      return VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR;
 +}
 +
 +template<> VkStructureType getStructureType<VkImportMemoryFdInfoKHR> (void)
 +{
 +      return VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR;
 +}
 +
 +template<> VkStructureType getStructureType<VkMemoryFdPropertiesKHR> (void)
 +{
 +      return VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR;
 +}
 +
 +template<> VkStructureType getStructureType<VkMemoryGetFdInfoKHR> (void)
 +{
 +      return VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR;
 +}
 +
 +template<> VkStructureType getStructureType<VkImportSemaphoreFdInfoKHR> (void)
 +{
 +      return VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR;
 +}
 +
 +template<> VkStructureType getStructureType<VkSemaphoreGetFdInfoKHR> (void)
 +{
 +      return VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR;
 +}
 +
 +template<> VkStructureType getStructureType<VkPresentRegionsKHR> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR;
 +}
 +
 +template<> VkStructureType getStructureType<VkSharedPresentSurfaceCapabilitiesKHR> (void)
 +{
 +      return VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR;
 +}
 +
 +template<> VkStructureType getStructureType<VkImportFenceFdInfoKHR> (void)
 +{
 +      return VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR;
 +}
 +
 +template<> VkStructureType getStructureType<VkFenceGetFdInfoKHR> (void)
 +{
 +      return VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR;
 +}
 +
++template<> VkStructureType getStructureType<VkPhysicalDevicePerformanceQueryFeaturesKHR> (void)
++{
++      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR;
++}
++
++template<> VkStructureType getStructureType<VkPhysicalDevicePerformanceQueryPropertiesKHR> (void)
++{
++      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<VkPerformanceQueryReservationInfoKHR> (void)
++{
++      return VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_RESERVATION_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<VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR;
 +}
 +
 +template<> VkStructureType getStructureType<VkFragmentShadingRateAttachmentInfoKHR> (void)
 +{
 +      return VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR;
 +}
 +
 +template<> VkStructureType getStructureType<VkPipelineFragmentShadingRateStateCreateInfoKHR> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceFragmentShadingRateFeaturesKHR> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceFragmentShadingRatePropertiesKHR> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceFragmentShadingRateKHR> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR;
 +}
 +
 +template<> VkStructureType getStructureType<VkRefreshObjectListKHR> (void)
 +{
 +      return VK_STRUCTURE_TYPE_REFRESH_OBJECT_LIST_KHR;
 +}
 +
++template<> VkStructureType getStructureType<VkMemoryBarrier2KHR> (void)
++{
++      return VK_STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR;
++}
++
++template<> VkStructureType getStructureType<VkBufferMemoryBarrier2KHR> (void)
++{
++      return VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2_KHR;
++}
++
++template<> VkStructureType getStructureType<VkImageMemoryBarrier2KHR> (void)
++{
++      return VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2_KHR;
++}
++
++template<> VkStructureType getStructureType<VkDependencyInfoKHR> (void)
++{
++      return VK_STRUCTURE_TYPE_DEPENDENCY_INFO_KHR;
++}
++
++template<> VkStructureType getStructureType<VkSemaphoreSubmitInfoKHR> (void)
++{
++      return VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO_KHR;
++}
++
++template<> VkStructureType getStructureType<VkCommandBufferSubmitInfoKHR> (void)
++{
++      return VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO_KHR;
++}
++
++template<> VkStructureType getStructureType<VkSubmitInfo2KHR> (void)
++{
++      return VK_STRUCTURE_TYPE_SUBMIT_INFO_2_KHR;
++}
++
++template<> VkStructureType getStructureType<VkPhysicalDeviceSynchronization2FeaturesKHR> (void)
++{
++      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR;
++}
++
++template<> VkStructureType getStructureType<VkQueueFamilyCheckpointProperties2NV> (void)
++{
++      return VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV;
++}
++
++template<> VkStructureType getStructureType<VkCheckpointData2NV> (void)
++{
++      return VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV;
++}
++
 +template<> VkStructureType getStructureType<VkBufferCopy2KHR> (void)
 +{
 +      return VK_STRUCTURE_TYPE_BUFFER_COPY_2_KHR;
 +}
 +
 +template<> VkStructureType getStructureType<VkCopyBufferInfo2KHR> (void)
 +{
 +      return VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR;
 +}
 +
 +template<> VkStructureType getStructureType<VkImageCopy2KHR> (void)
 +{
 +      return VK_STRUCTURE_TYPE_IMAGE_COPY_2_KHR;
 +}
 +
 +template<> VkStructureType getStructureType<VkCopyImageInfo2KHR> (void)
 +{
 +      return VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR;
 +}
 +
 +template<> VkStructureType getStructureType<VkBufferImageCopy2KHR> (void)
 +{
 +      return VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR;
 +}
 +
 +template<> VkStructureType getStructureType<VkCopyBufferToImageInfo2KHR> (void)
 +{
 +      return VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR;
 +}
 +
 +template<> VkStructureType getStructureType<VkCopyImageToBufferInfo2KHR> (void)
 +{
 +      return VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR;
 +}
 +
 +template<> VkStructureType getStructureType<VkImageBlit2KHR> (void)
 +{
 +      return VK_STRUCTURE_TYPE_IMAGE_BLIT_2_KHR;
 +}
 +
 +template<> VkStructureType getStructureType<VkBlitImageInfo2KHR> (void)
 +{
 +      return VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR;
 +}
 +
 +template<> VkStructureType getStructureType<VkImageResolve2KHR> (void)
 +{
 +      return VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR;
 +}
 +
 +template<> VkStructureType getStructureType<VkResolveImageInfo2KHR> (void)
 +{
 +      return VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkImageViewASTCDecodeModeEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceASTCDecodeFeaturesEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkSurfaceCapabilities2EXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkDisplayPowerInfoEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkDeviceEventInfoEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkDisplayEventInfoEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkSwapchainCounterCreateInfoEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceDiscardRectanglePropertiesEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkPipelineDiscardRectangleStateCreateInfoEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceConservativeRasterizationPropertiesEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkPipelineRasterizationConservativeStateCreateInfoEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceDepthClipEnableFeaturesEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkPipelineRasterizationDepthClipStateCreateInfoEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkHdrMetadataEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_HDR_METADATA_EXT;
 +}
 +
++template<> VkStructureType getStructureType<VkDebugUtilsLabelEXT> (void)
++{
++      return VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT;
++}
++
++template<> VkStructureType getStructureType<VkDebugUtilsObjectNameInfoEXT> (void)
++{
++      return VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT;
++}
++
++template<> VkStructureType getStructureType<VkDebugUtilsMessengerCallbackDataEXT> (void)
++{
++      return VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT;
++}
++
++template<> VkStructureType getStructureType<VkDebugUtilsMessengerCreateInfoEXT> (void)
++{
++      return VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT;
++}
++
++template<> VkStructureType getStructureType<VkDebugUtilsObjectTagInfoEXT> (void)
++{
++      return VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT;
++}
++
 +template<> VkStructureType getStructureType<VkSampleLocationsInfoEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkRenderPassSampleLocationsBeginInfoEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkPipelineSampleLocationsStateCreateInfoEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceSampleLocationsPropertiesEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkMultisamplePropertiesEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkPipelineColorBlendAdvancedStateCreateInfoEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkDrmFormatModifierPropertiesListEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceImageDrmFormatModifierInfoEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkImageDrmFormatModifierListCreateInfoEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkImageDrmFormatModifierExplicitCreateInfoEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkImageDrmFormatModifierPropertiesEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceImageViewImageFormatInfoEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkFilterCubicImageViewImageFormatPropertiesEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkDeviceQueueGlobalPriorityCreateInfoEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkImportMemoryHostPointerInfoEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkMemoryHostPointerPropertiesEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceExternalMemoryHostPropertiesEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkCalibratedTimestampInfoEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkPipelineVertexInputDivisorStateCreateInfoEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDevicePCIBusInfoPropertiesEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceSubgroupSizeControlFeaturesEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceSubgroupSizeControlPropertiesEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceMemoryBudgetPropertiesEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT;
 +}
 +
++template<> VkStructureType getStructureType<VkValidationFeaturesEXT> (void)
++{
++      return VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT;
++}
++
 +template<> VkStructureType getStructureType<VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceYcbcrImageArraysFeaturesEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkHeadlessSurfaceCreateInfoEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceLineRasterizationFeaturesEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceLineRasterizationPropertiesEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkPipelineRasterizationLineStateCreateInfoEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceShaderAtomicFloatFeaturesEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceIndexTypeUint8FeaturesEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceExtendedDynamicStateFeaturesEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceRobustness2FeaturesEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceRobustness2PropertiesEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkSamplerCustomBorderColorCreateInfoEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceCustomBorderColorPropertiesEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDeviceCustomBorderColorFeaturesEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT;
 +}
 +
++template<> VkStructureType getStructureType<VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT> (void)
++{
++      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT;
++}
++
 +template<> VkStructureType getStructureType<VkPhysicalDeviceImageRobustnessFeaturesEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT;
 +}
 +
 +template<> VkStructureType getStructureType<VkPhysicalDevice4444FormatsFeaturesEXT> (void)
 +{
 +      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT;
 +}
 +
++template<> VkStructureType getStructureType<VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT> (void)
++{
++      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT;
++}
++
++template<> VkStructureType getStructureType<VkVertexInputBindingDescription2EXT> (void)
++{
++      return VK_STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT;
++}
++
++template<> VkStructureType getStructureType<VkVertexInputAttributeDescription2EXT> (void)
++{
++      return VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT;
++}
++
++template<> VkStructureType getStructureType<VkPhysicalDeviceExtendedDynamicState2FeaturesEXT> (void)
++{
++      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT;
++}
++
++template<> VkStructureType getStructureType<VkPhysicalDeviceColorWriteEnableFeaturesEXT> (void)
++{
++      return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT;
++}
++
++template<> VkStructureType getStructureType<VkPipelineColorWriteCreateInfoEXT> (void)
++{
++      return VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT;
++}
++
index 2d112d9,0000000..90ab9ef
mode 100644,000000..100644
--- /dev/null
@@@ -1,38 -1,0 +1,39 @@@
-       HANDLE_TYPE_LAST                                                = HANDLE_TYPE_DISPLAY_MODE_KHR + 1
 +/* WARNING: This is auto-generated file. Do not modify, since changes will
 + * be lost! Modify the generating script instead.
 + */
 +enum HandleType
 +{
 +      HANDLE_TYPE_BUFFER                                              = 0,
 +      HANDLE_TYPE_IMAGE,
 +      HANDLE_TYPE_INSTANCE,
 +      HANDLE_TYPE_PHYSICAL_DEVICE,
 +      HANDLE_TYPE_DEVICE,
 +      HANDLE_TYPE_QUEUE,
 +      HANDLE_TYPE_SEMAPHORE,
 +      HANDLE_TYPE_COMMAND_BUFFER,
 +      HANDLE_TYPE_FENCE,
 +      HANDLE_TYPE_DEVICE_MEMORY,
 +      HANDLE_TYPE_EVENT,
 +      HANDLE_TYPE_QUERY_POOL,
 +      HANDLE_TYPE_BUFFER_VIEW,
 +      HANDLE_TYPE_IMAGE_VIEW,
 +      HANDLE_TYPE_SHADER_MODULE,
 +      HANDLE_TYPE_PIPELINE_CACHE,
 +      HANDLE_TYPE_PIPELINE_LAYOUT,
 +      HANDLE_TYPE_PIPELINE,
 +      HANDLE_TYPE_RENDER_PASS,
 +      HANDLE_TYPE_DESCRIPTOR_SET_LAYOUT,
 +      HANDLE_TYPE_SAMPLER,
 +      HANDLE_TYPE_DESCRIPTOR_SET,
 +      HANDLE_TYPE_DESCRIPTOR_POOL,
 +      HANDLE_TYPE_FRAMEBUFFER,
 +      HANDLE_TYPE_COMMAND_POOL,
 +      HANDLE_TYPE_SAMPLER_YCBCR_CONVERSION,
 +      HANDLE_TYPE_SURFACE_KHR,
 +      HANDLE_TYPE_SWAPCHAIN_KHR,
 +      HANDLE_TYPE_DISPLAY_KHR,
 +      HANDLE_TYPE_DISPLAY_MODE_KHR,
++      HANDLE_TYPE_DEBUG_UTILS_MESSENGER_EXT,
++      HANDLE_TYPE_LAST                                                = HANDLE_TYPE_DEBUG_UTILS_MESSENGER_EXT + 1
 +};
 +
index 1bc4dd5,0000000..d2296fe
mode 100644,000000..100644
--- /dev/null
@@@ -1,190 -1,0 +1,211 @@@
- m_vk.getImageSparseMemoryRequirements         = (GetImageSparseMemoryRequirementsFunc)                GET_PROC_ADDR("vkGetImageSparseMemoryRequirements");
- m_vk.queueBindSparse                                          = (QueueBindSparseFunc)                                                 GET_PROC_ADDR("vkQueueBindSparse");
 +/* WARNING: This is auto-generated file. Do not modify, since changes will
 + * be lost! Modify the generating script instead.
 + */
 +m_vk.getDeviceProcAddr                                                = (GetDeviceProcAddrFunc)                                               GET_PROC_ADDR("vkGetDeviceProcAddr");
 +m_vk.destroyDevice                                                    = (DestroyDeviceFunc)                                                   GET_PROC_ADDR("vkDestroyDevice");
 +m_vk.getDeviceQueue                                                   = (GetDeviceQueueFunc)                                                  GET_PROC_ADDR("vkGetDeviceQueue");
 +m_vk.queueSubmit                                                      = (QueueSubmitFunc)                                                             GET_PROC_ADDR("vkQueueSubmit");
 +m_vk.queueWaitIdle                                                    = (QueueWaitIdleFunc)                                                   GET_PROC_ADDR("vkQueueWaitIdle");
 +m_vk.deviceWaitIdle                                                   = (DeviceWaitIdleFunc)                                                  GET_PROC_ADDR("vkDeviceWaitIdle");
 +m_vk.allocateMemory                                                   = (AllocateMemoryFunc)                                                  GET_PROC_ADDR("vkAllocateMemory");
 +m_vk.mapMemory                                                                = (MapMemoryFunc)                                                               GET_PROC_ADDR("vkMapMemory");
 +m_vk.unmapMemory                                                      = (UnmapMemoryFunc)                                                             GET_PROC_ADDR("vkUnmapMemory");
 +m_vk.flushMappedMemoryRanges                          = (FlushMappedMemoryRangesFunc)                                 GET_PROC_ADDR("vkFlushMappedMemoryRanges");
 +m_vk.invalidateMappedMemoryRanges                     = (InvalidateMappedMemoryRangesFunc)                    GET_PROC_ADDR("vkInvalidateMappedMemoryRanges");
 +m_vk.getDeviceMemoryCommitment                                = (GetDeviceMemoryCommitmentFunc)                               GET_PROC_ADDR("vkGetDeviceMemoryCommitment");
 +m_vk.bindBufferMemory                                         = (BindBufferMemoryFunc)                                                GET_PROC_ADDR("vkBindBufferMemory");
 +m_vk.bindImageMemory                                          = (BindImageMemoryFunc)                                                 GET_PROC_ADDR("vkBindImageMemory");
 +m_vk.getBufferMemoryRequirements                      = (GetBufferMemoryRequirementsFunc)                             GET_PROC_ADDR("vkGetBufferMemoryRequirements");
 +m_vk.getImageMemoryRequirements                               = (GetImageMemoryRequirementsFunc)                              GET_PROC_ADDR("vkGetImageMemoryRequirements");
- m_vk.getCommandPoolMemoryConsumption          = (GetCommandPoolMemoryConsumptionFunc)                 GET_PROC_ADDR("vkGetCommandPoolMemoryConsumption");
- m_vk.getFaultData                                                     = (GetFaultDataFunc)                                                    GET_PROC_ADDR("vkGetFaultData");
 +m_vk.createFence                                                      = (CreateFenceFunc)                                                             GET_PROC_ADDR("vkCreateFence");
 +m_vk.destroyFence                                                     = (DestroyFenceFunc)                                                    GET_PROC_ADDR("vkDestroyFence");
 +m_vk.resetFences                                                      = (ResetFencesFunc)                                                             GET_PROC_ADDR("vkResetFences");
 +m_vk.getFenceStatus                                                   = (GetFenceStatusFunc)                                                  GET_PROC_ADDR("vkGetFenceStatus");
 +m_vk.waitForFences                                                    = (WaitForFencesFunc)                                                   GET_PROC_ADDR("vkWaitForFences");
 +m_vk.createSemaphore                                          = (CreateSemaphoreFunc)                                                 GET_PROC_ADDR("vkCreateSemaphore");
 +m_vk.destroySemaphore                                         = (DestroySemaphoreFunc)                                                GET_PROC_ADDR("vkDestroySemaphore");
 +m_vk.createEvent                                                      = (CreateEventFunc)                                                             GET_PROC_ADDR("vkCreateEvent");
 +m_vk.destroyEvent                                                     = (DestroyEventFunc)                                                    GET_PROC_ADDR("vkDestroyEvent");
 +m_vk.getEventStatus                                                   = (GetEventStatusFunc)                                                  GET_PROC_ADDR("vkGetEventStatus");
 +m_vk.setEvent                                                         = (SetEventFunc)                                                                GET_PROC_ADDR("vkSetEvent");
 +m_vk.resetEvent                                                               = (ResetEventFunc)                                                              GET_PROC_ADDR("vkResetEvent");
 +m_vk.createQueryPool                                          = (CreateQueryPoolFunc)                                                 GET_PROC_ADDR("vkCreateQueryPool");
 +m_vk.getQueryPoolResults                                      = (GetQueryPoolResultsFunc)                                             GET_PROC_ADDR("vkGetQueryPoolResults");
 +m_vk.createBuffer                                                     = (CreateBufferFunc)                                                    GET_PROC_ADDR("vkCreateBuffer");
 +m_vk.destroyBuffer                                                    = (DestroyBufferFunc)                                                   GET_PROC_ADDR("vkDestroyBuffer");
 +m_vk.createBufferView                                         = (CreateBufferViewFunc)                                                GET_PROC_ADDR("vkCreateBufferView");
 +m_vk.destroyBufferView                                                = (DestroyBufferViewFunc)                                               GET_PROC_ADDR("vkDestroyBufferView");
 +m_vk.createImage                                                      = (CreateImageFunc)                                                             GET_PROC_ADDR("vkCreateImage");
 +m_vk.destroyImage                                                     = (DestroyImageFunc)                                                    GET_PROC_ADDR("vkDestroyImage");
 +m_vk.getImageSubresourceLayout                                = (GetImageSubresourceLayoutFunc)                               GET_PROC_ADDR("vkGetImageSubresourceLayout");
 +m_vk.createImageView                                          = (CreateImageViewFunc)                                                 GET_PROC_ADDR("vkCreateImageView");
 +m_vk.destroyImageView                                         = (DestroyImageViewFunc)                                                GET_PROC_ADDR("vkDestroyImageView");
 +m_vk.createPipelineCache                                      = (CreatePipelineCacheFunc)                                             GET_PROC_ADDR("vkCreatePipelineCache");
 +m_vk.destroyPipelineCache                                     = (DestroyPipelineCacheFunc)                                    GET_PROC_ADDR("vkDestroyPipelineCache");
 +m_vk.createGraphicsPipelines                          = (CreateGraphicsPipelinesFunc)                                 GET_PROC_ADDR("vkCreateGraphicsPipelines");
 +m_vk.createComputePipelines                                   = (CreateComputePipelinesFunc)                                  GET_PROC_ADDR("vkCreateComputePipelines");
 +m_vk.destroyPipeline                                          = (DestroyPipelineFunc)                                                 GET_PROC_ADDR("vkDestroyPipeline");
 +m_vk.createPipelineLayout                                     = (CreatePipelineLayoutFunc)                                    GET_PROC_ADDR("vkCreatePipelineLayout");
 +m_vk.destroyPipelineLayout                                    = (DestroyPipelineLayoutFunc)                                   GET_PROC_ADDR("vkDestroyPipelineLayout");
 +m_vk.createSampler                                                    = (CreateSamplerFunc)                                                   GET_PROC_ADDR("vkCreateSampler");
 +m_vk.destroySampler                                                   = (DestroySamplerFunc)                                                  GET_PROC_ADDR("vkDestroySampler");
 +m_vk.createDescriptorSetLayout                                = (CreateDescriptorSetLayoutFunc)                               GET_PROC_ADDR("vkCreateDescriptorSetLayout");
 +m_vk.destroyDescriptorSetLayout                               = (DestroyDescriptorSetLayoutFunc)                              GET_PROC_ADDR("vkDestroyDescriptorSetLayout");
 +m_vk.createDescriptorPool                                     = (CreateDescriptorPoolFunc)                                    GET_PROC_ADDR("vkCreateDescriptorPool");
 +m_vk.resetDescriptorPool                                      = (ResetDescriptorPoolFunc)                                             GET_PROC_ADDR("vkResetDescriptorPool");
 +m_vk.allocateDescriptorSets                                   = (AllocateDescriptorSetsFunc)                                  GET_PROC_ADDR("vkAllocateDescriptorSets");
 +m_vk.freeDescriptorSets                                               = (FreeDescriptorSetsFunc)                                              GET_PROC_ADDR("vkFreeDescriptorSets");
 +m_vk.updateDescriptorSets                                     = (UpdateDescriptorSetsFunc)                                    GET_PROC_ADDR("vkUpdateDescriptorSets");
 +m_vk.createFramebuffer                                                = (CreateFramebufferFunc)                                               GET_PROC_ADDR("vkCreateFramebuffer");
 +m_vk.destroyFramebuffer                                               = (DestroyFramebufferFunc)                                              GET_PROC_ADDR("vkDestroyFramebuffer");
 +m_vk.createRenderPass                                         = (CreateRenderPassFunc)                                                GET_PROC_ADDR("vkCreateRenderPass");
 +m_vk.destroyRenderPass                                                = (DestroyRenderPassFunc)                                               GET_PROC_ADDR("vkDestroyRenderPass");
 +m_vk.getRenderAreaGranularity                         = (GetRenderAreaGranularityFunc)                                GET_PROC_ADDR("vkGetRenderAreaGranularity");
 +m_vk.createCommandPool                                                = (CreateCommandPoolFunc)                                               GET_PROC_ADDR("vkCreateCommandPool");
 +m_vk.resetCommandPool                                         = (ResetCommandPoolFunc)                                                GET_PROC_ADDR("vkResetCommandPool");
 +m_vk.allocateCommandBuffers                                   = (AllocateCommandBuffersFunc)                                  GET_PROC_ADDR("vkAllocateCommandBuffers");
 +m_vk.freeCommandBuffers                                               = (FreeCommandBuffersFunc)                                              GET_PROC_ADDR("vkFreeCommandBuffers");
 +m_vk.beginCommandBuffer                                               = (BeginCommandBufferFunc)                                              GET_PROC_ADDR("vkBeginCommandBuffer");
 +m_vk.endCommandBuffer                                         = (EndCommandBufferFunc)                                                GET_PROC_ADDR("vkEndCommandBuffer");
 +m_vk.resetCommandBuffer                                               = (ResetCommandBufferFunc)                                              GET_PROC_ADDR("vkResetCommandBuffer");
 +m_vk.cmdBindPipeline                                          = (CmdBindPipelineFunc)                                                 GET_PROC_ADDR("vkCmdBindPipeline");
 +m_vk.cmdSetViewport                                                   = (CmdSetViewportFunc)                                                  GET_PROC_ADDR("vkCmdSetViewport");
 +m_vk.cmdSetScissor                                                    = (CmdSetScissorFunc)                                                   GET_PROC_ADDR("vkCmdSetScissor");
 +m_vk.cmdSetLineWidth                                          = (CmdSetLineWidthFunc)                                                 GET_PROC_ADDR("vkCmdSetLineWidth");
 +m_vk.cmdSetDepthBias                                          = (CmdSetDepthBiasFunc)                                                 GET_PROC_ADDR("vkCmdSetDepthBias");
 +m_vk.cmdSetBlendConstants                                     = (CmdSetBlendConstantsFunc)                                    GET_PROC_ADDR("vkCmdSetBlendConstants");
 +m_vk.cmdSetDepthBounds                                                = (CmdSetDepthBoundsFunc)                                               GET_PROC_ADDR("vkCmdSetDepthBounds");
 +m_vk.cmdSetStencilCompareMask                         = (CmdSetStencilCompareMaskFunc)                                GET_PROC_ADDR("vkCmdSetStencilCompareMask");
 +m_vk.cmdSetStencilWriteMask                                   = (CmdSetStencilWriteMaskFunc)                                  GET_PROC_ADDR("vkCmdSetStencilWriteMask");
 +m_vk.cmdSetStencilReference                                   = (CmdSetStencilReferenceFunc)                                  GET_PROC_ADDR("vkCmdSetStencilReference");
 +m_vk.cmdBindDescriptorSets                                    = (CmdBindDescriptorSetsFunc)                                   GET_PROC_ADDR("vkCmdBindDescriptorSets");
 +m_vk.cmdBindIndexBuffer                                               = (CmdBindIndexBufferFunc)                                              GET_PROC_ADDR("vkCmdBindIndexBuffer");
 +m_vk.cmdBindVertexBuffers                                     = (CmdBindVertexBuffersFunc)                                    GET_PROC_ADDR("vkCmdBindVertexBuffers");
 +m_vk.cmdDraw                                                          = (CmdDrawFunc)                                                                 GET_PROC_ADDR("vkCmdDraw");
 +m_vk.cmdDrawIndexed                                                   = (CmdDrawIndexedFunc)                                                  GET_PROC_ADDR("vkCmdDrawIndexed");
 +m_vk.cmdDrawIndirect                                          = (CmdDrawIndirectFunc)                                                 GET_PROC_ADDR("vkCmdDrawIndirect");
 +m_vk.cmdDrawIndexedIndirect                                   = (CmdDrawIndexedIndirectFunc)                                  GET_PROC_ADDR("vkCmdDrawIndexedIndirect");
 +m_vk.cmdDispatch                                                      = (CmdDispatchFunc)                                                             GET_PROC_ADDR("vkCmdDispatch");
 +m_vk.cmdDispatchIndirect                                      = (CmdDispatchIndirectFunc)                                             GET_PROC_ADDR("vkCmdDispatchIndirect");
 +m_vk.cmdCopyBuffer                                                    = (CmdCopyBufferFunc)                                                   GET_PROC_ADDR("vkCmdCopyBuffer");
 +m_vk.cmdCopyImage                                                     = (CmdCopyImageFunc)                                                    GET_PROC_ADDR("vkCmdCopyImage");
 +m_vk.cmdBlitImage                                                     = (CmdBlitImageFunc)                                                    GET_PROC_ADDR("vkCmdBlitImage");
 +m_vk.cmdCopyBufferToImage                                     = (CmdCopyBufferToImageFunc)                                    GET_PROC_ADDR("vkCmdCopyBufferToImage");
 +m_vk.cmdCopyImageToBuffer                                     = (CmdCopyImageToBufferFunc)                                    GET_PROC_ADDR("vkCmdCopyImageToBuffer");
 +m_vk.cmdUpdateBuffer                                          = (CmdUpdateBufferFunc)                                                 GET_PROC_ADDR("vkCmdUpdateBuffer");
 +m_vk.cmdFillBuffer                                                    = (CmdFillBufferFunc)                                                   GET_PROC_ADDR("vkCmdFillBuffer");
 +m_vk.cmdClearColorImage                                               = (CmdClearColorImageFunc)                                              GET_PROC_ADDR("vkCmdClearColorImage");
 +m_vk.cmdClearDepthStencilImage                                = (CmdClearDepthStencilImageFunc)                               GET_PROC_ADDR("vkCmdClearDepthStencilImage");
 +m_vk.cmdClearAttachments                                      = (CmdClearAttachmentsFunc)                                             GET_PROC_ADDR("vkCmdClearAttachments");
 +m_vk.cmdResolveImage                                          = (CmdResolveImageFunc)                                                 GET_PROC_ADDR("vkCmdResolveImage");
 +m_vk.cmdSetEvent                                                      = (CmdSetEventFunc)                                                             GET_PROC_ADDR("vkCmdSetEvent");
 +m_vk.cmdResetEvent                                                    = (CmdResetEventFunc)                                                   GET_PROC_ADDR("vkCmdResetEvent");
 +m_vk.cmdWaitEvents                                                    = (CmdWaitEventsFunc)                                                   GET_PROC_ADDR("vkCmdWaitEvents");
 +m_vk.cmdPipelineBarrier                                               = (CmdPipelineBarrierFunc)                                              GET_PROC_ADDR("vkCmdPipelineBarrier");
 +m_vk.cmdBeginQuery                                                    = (CmdBeginQueryFunc)                                                   GET_PROC_ADDR("vkCmdBeginQuery");
 +m_vk.cmdEndQuery                                                      = (CmdEndQueryFunc)                                                             GET_PROC_ADDR("vkCmdEndQuery");
 +m_vk.cmdResetQueryPool                                                = (CmdResetQueryPoolFunc)                                               GET_PROC_ADDR("vkCmdResetQueryPool");
 +m_vk.cmdWriteTimestamp                                                = (CmdWriteTimestampFunc)                                               GET_PROC_ADDR("vkCmdWriteTimestamp");
 +m_vk.cmdCopyQueryPoolResults                          = (CmdCopyQueryPoolResultsFunc)                                 GET_PROC_ADDR("vkCmdCopyQueryPoolResults");
 +m_vk.cmdPushConstants                                         = (CmdPushConstantsFunc)                                                GET_PROC_ADDR("vkCmdPushConstants");
 +m_vk.cmdBeginRenderPass                                               = (CmdBeginRenderPassFunc)                                              GET_PROC_ADDR("vkCmdBeginRenderPass");
 +m_vk.cmdNextSubpass                                                   = (CmdNextSubpassFunc)                                                  GET_PROC_ADDR("vkCmdNextSubpass");
 +m_vk.cmdEndRenderPass                                         = (CmdEndRenderPassFunc)                                                GET_PROC_ADDR("vkCmdEndRenderPass");
 +m_vk.cmdExecuteCommands                                               = (CmdExecuteCommandsFunc)                                              GET_PROC_ADDR("vkCmdExecuteCommands");
- m_vk.getImageSparseMemoryRequirements2                = (GetImageSparseMemoryRequirements2Func)               GET_PROC_ADDR("vkGetImageSparseMemoryRequirements2");
 +m_vk.bindBufferMemory2                                                = (BindBufferMemory2Func)                                               GET_PROC_ADDR("vkBindBufferMemory2");
 +m_vk.bindImageMemory2                                         = (BindImageMemory2Func)                                                GET_PROC_ADDR("vkBindImageMemory2");
 +m_vk.getDeviceGroupPeerMemoryFeatures         = (GetDeviceGroupPeerMemoryFeaturesFunc)                GET_PROC_ADDR("vkGetDeviceGroupPeerMemoryFeatures");
 +m_vk.cmdSetDeviceMask                                         = (CmdSetDeviceMaskFunc)                                                GET_PROC_ADDR("vkCmdSetDeviceMask");
 +m_vk.cmdDispatchBase                                          = (CmdDispatchBaseFunc)                                                 GET_PROC_ADDR("vkCmdDispatchBase");
 +m_vk.getImageMemoryRequirements2                      = (GetImageMemoryRequirements2Func)                             GET_PROC_ADDR("vkGetImageMemoryRequirements2");
 +m_vk.getBufferMemoryRequirements2                     = (GetBufferMemoryRequirements2Func)                    GET_PROC_ADDR("vkGetBufferMemoryRequirements2");
- m_vk.getFaultDataKHR                                          = (GetFaultDataKHRFunc)                                                 GET_PROC_ADDR("vkGetFaultDataKHR");
 +m_vk.getDeviceQueue2                                          = (GetDeviceQueue2Func)                                                 GET_PROC_ADDR("vkGetDeviceQueue2");
 +m_vk.createSamplerYcbcrConversion                     = (CreateSamplerYcbcrConversionFunc)                    GET_PROC_ADDR("vkCreateSamplerYcbcrConversion");
 +m_vk.destroySamplerYcbcrConversion                    = (DestroySamplerYcbcrConversionFunc)                   GET_PROC_ADDR("vkDestroySamplerYcbcrConversion");
 +m_vk.getDescriptorSetLayoutSupport                    = (GetDescriptorSetLayoutSupportFunc)                   GET_PROC_ADDR("vkGetDescriptorSetLayoutSupport");
 +m_vk.cmdDrawIndirectCount                                     = (CmdDrawIndirectCountFunc)                                    GET_PROC_ADDR("vkCmdDrawIndirectCount");
 +m_vk.cmdDrawIndexedIndirectCount                      = (CmdDrawIndexedIndirectCountFunc)                             GET_PROC_ADDR("vkCmdDrawIndexedIndirectCount");
 +m_vk.createRenderPass2                                                = (CreateRenderPass2Func)                                               GET_PROC_ADDR("vkCreateRenderPass2");
 +m_vk.cmdBeginRenderPass2                                      = (CmdBeginRenderPass2Func)                                             GET_PROC_ADDR("vkCmdBeginRenderPass2");
 +m_vk.cmdNextSubpass2                                          = (CmdNextSubpass2Func)                                                 GET_PROC_ADDR("vkCmdNextSubpass2");
 +m_vk.cmdEndRenderPass2                                                = (CmdEndRenderPass2Func)                                               GET_PROC_ADDR("vkCmdEndRenderPass2");
 +m_vk.resetQueryPool                                                   = (ResetQueryPoolFunc)                                                  GET_PROC_ADDR("vkResetQueryPool");
 +m_vk.getSemaphoreCounterValue                         = (GetSemaphoreCounterValueFunc)                                GET_PROC_ADDR("vkGetSemaphoreCounterValue");
 +m_vk.waitSemaphores                                                   = (WaitSemaphoresFunc)                                                  GET_PROC_ADDR("vkWaitSemaphores");
 +m_vk.signalSemaphore                                          = (SignalSemaphoreFunc)                                                 GET_PROC_ADDR("vkSignalSemaphore");
 +m_vk.getBufferDeviceAddress                                   = (GetBufferDeviceAddressFunc)                                  GET_PROC_ADDR("vkGetBufferDeviceAddress");
 +m_vk.getBufferOpaqueCaptureAddress                    = (GetBufferOpaqueCaptureAddressFunc)                   GET_PROC_ADDR("vkGetBufferOpaqueCaptureAddress");
 +m_vk.getDeviceMemoryOpaqueCaptureAddress      = (GetDeviceMemoryOpaqueCaptureAddressFunc)             GET_PROC_ADDR("vkGetDeviceMemoryOpaqueCaptureAddress");
++m_vk.getCommandPoolMemoryConsumption          = (GetCommandPoolMemoryConsumptionFunc)                 GET_PROC_ADDR("vkGetCommandPoolMemoryConsumption");
++m_vk.getFaultData                                                     = (GetFaultDataFunc)                                                    GET_PROC_ADDR("vkGetFaultData");
 +m_vk.createSwapchainKHR                                               = (CreateSwapchainKHRFunc)                                              GET_PROC_ADDR("vkCreateSwapchainKHR");
 +m_vk.getSwapchainImagesKHR                                    = (GetSwapchainImagesKHRFunc)                                   GET_PROC_ADDR("vkGetSwapchainImagesKHR");
 +m_vk.acquireNextImageKHR                                      = (AcquireNextImageKHRFunc)                                             GET_PROC_ADDR("vkAcquireNextImageKHR");
 +m_vk.queuePresentKHR                                          = (QueuePresentKHRFunc)                                                 GET_PROC_ADDR("vkQueuePresentKHR");
 +m_vk.getDeviceGroupPresentCapabilitiesKHR     = (GetDeviceGroupPresentCapabilitiesKHRFunc)    GET_PROC_ADDR("vkGetDeviceGroupPresentCapabilitiesKHR");
 +m_vk.getDeviceGroupSurfacePresentModesKHR     = (GetDeviceGroupSurfacePresentModesKHRFunc)    GET_PROC_ADDR("vkGetDeviceGroupSurfacePresentModesKHR");
 +m_vk.acquireNextImage2KHR                                     = (AcquireNextImage2KHRFunc)                                    GET_PROC_ADDR("vkAcquireNextImage2KHR");
 +m_vk.createSharedSwapchainsKHR                                = (CreateSharedSwapchainsKHRFunc)                               GET_PROC_ADDR("vkCreateSharedSwapchainsKHR");
 +m_vk.getMemoryFdKHR                                                   = (GetMemoryFdKHRFunc)                                                  GET_PROC_ADDR("vkGetMemoryFdKHR");
 +m_vk.getMemoryFdPropertiesKHR                         = (GetMemoryFdPropertiesKHRFunc)                                GET_PROC_ADDR("vkGetMemoryFdPropertiesKHR");
 +m_vk.importSemaphoreFdKHR                                     = (ImportSemaphoreFdKHRFunc)                                    GET_PROC_ADDR("vkImportSemaphoreFdKHR");
 +m_vk.getSemaphoreFdKHR                                                = (GetSemaphoreFdKHRFunc)                                               GET_PROC_ADDR("vkGetSemaphoreFdKHR");
 +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.cmdSetFragmentShadingRateKHR                     = (CmdSetFragmentShadingRateKHRFunc)                    GET_PROC_ADDR("vkCmdSetFragmentShadingRateKHR");
 +m_vk.cmdRefreshObjectsKHR                                     = (CmdRefreshObjectsKHRFunc)                                    GET_PROC_ADDR("vkCmdRefreshObjectsKHR");
++m_vk.cmdSetEvent2KHR                                          = (CmdSetEvent2KHRFunc)                                                 GET_PROC_ADDR("vkCmdSetEvent2KHR");
++m_vk.cmdResetEvent2KHR                                                = (CmdResetEvent2KHRFunc)                                               GET_PROC_ADDR("vkCmdResetEvent2KHR");
++m_vk.cmdWaitEvents2KHR                                                = (CmdWaitEvents2KHRFunc)                                               GET_PROC_ADDR("vkCmdWaitEvents2KHR");
++m_vk.cmdPipelineBarrier2KHR                                   = (CmdPipelineBarrier2KHRFunc)                                  GET_PROC_ADDR("vkCmdPipelineBarrier2KHR");
++m_vk.cmdWriteTimestamp2KHR                                    = (CmdWriteTimestamp2KHRFunc)                                   GET_PROC_ADDR("vkCmdWriteTimestamp2KHR");
++m_vk.queueSubmit2KHR                                          = (QueueSubmit2KHRFunc)                                                 GET_PROC_ADDR("vkQueueSubmit2KHR");
++m_vk.cmdWriteBufferMarker2AMD                         = (CmdWriteBufferMarker2AMDFunc)                                GET_PROC_ADDR("vkCmdWriteBufferMarker2AMD");
++m_vk.getQueueCheckpointData2NV                                = (GetQueueCheckpointData2NVFunc)                               GET_PROC_ADDR("vkGetQueueCheckpointData2NV");
 +m_vk.cmdCopyBuffer2KHR                                                = (CmdCopyBuffer2KHRFunc)                                               GET_PROC_ADDR("vkCmdCopyBuffer2KHR");
 +m_vk.cmdCopyImage2KHR                                         = (CmdCopyImage2KHRFunc)                                                GET_PROC_ADDR("vkCmdCopyImage2KHR");
 +m_vk.cmdCopyBufferToImage2KHR                         = (CmdCopyBufferToImage2KHRFunc)                                GET_PROC_ADDR("vkCmdCopyBufferToImage2KHR");
 +m_vk.cmdCopyImageToBuffer2KHR                         = (CmdCopyImageToBuffer2KHRFunc)                                GET_PROC_ADDR("vkCmdCopyImageToBuffer2KHR");
 +m_vk.cmdBlitImage2KHR                                         = (CmdBlitImage2KHRFunc)                                                GET_PROC_ADDR("vkCmdBlitImage2KHR");
 +m_vk.cmdResolveImage2KHR                                      = (CmdResolveImage2KHRFunc)                                             GET_PROC_ADDR("vkCmdResolveImage2KHR");
 +m_vk.displayPowerControlEXT                                   = (DisplayPowerControlEXTFunc)                                  GET_PROC_ADDR("vkDisplayPowerControlEXT");
 +m_vk.registerDeviceEventEXT                                   = (RegisterDeviceEventEXTFunc)                                  GET_PROC_ADDR("vkRegisterDeviceEventEXT");
 +m_vk.registerDisplayEventEXT                          = (RegisterDisplayEventEXTFunc)                                 GET_PROC_ADDR("vkRegisterDisplayEventEXT");
 +m_vk.getSwapchainCounterEXT                                   = (GetSwapchainCounterEXTFunc)                                  GET_PROC_ADDR("vkGetSwapchainCounterEXT");
 +m_vk.cmdSetDiscardRectangleEXT                                = (CmdSetDiscardRectangleEXTFunc)                               GET_PROC_ADDR("vkCmdSetDiscardRectangleEXT");
 +m_vk.setHdrMetadataEXT                                                = (SetHdrMetadataEXTFunc)                                               GET_PROC_ADDR("vkSetHdrMetadataEXT");
++m_vk.setDebugUtilsObjectNameEXT                               = (SetDebugUtilsObjectNameEXTFunc)                              GET_PROC_ADDR("vkSetDebugUtilsObjectNameEXT");
++m_vk.setDebugUtilsObjectTagEXT                                = (SetDebugUtilsObjectTagEXTFunc)                               GET_PROC_ADDR("vkSetDebugUtilsObjectTagEXT");
++m_vk.queueBeginDebugUtilsLabelEXT                     = (QueueBeginDebugUtilsLabelEXTFunc)                    GET_PROC_ADDR("vkQueueBeginDebugUtilsLabelEXT");
++m_vk.queueEndDebugUtilsLabelEXT                               = (QueueEndDebugUtilsLabelEXTFunc)                              GET_PROC_ADDR("vkQueueEndDebugUtilsLabelEXT");
++m_vk.queueInsertDebugUtilsLabelEXT                    = (QueueInsertDebugUtilsLabelEXTFunc)                   GET_PROC_ADDR("vkQueueInsertDebugUtilsLabelEXT");
++m_vk.cmdBeginDebugUtilsLabelEXT                               = (CmdBeginDebugUtilsLabelEXTFunc)                              GET_PROC_ADDR("vkCmdBeginDebugUtilsLabelEXT");
++m_vk.cmdEndDebugUtilsLabelEXT                         = (CmdEndDebugUtilsLabelEXTFunc)                                GET_PROC_ADDR("vkCmdEndDebugUtilsLabelEXT");
++m_vk.cmdInsertDebugUtilsLabelEXT                      = (CmdInsertDebugUtilsLabelEXTFunc)                             GET_PROC_ADDR("vkCmdInsertDebugUtilsLabelEXT");
 +m_vk.cmdSetSampleLocationsEXT                         = (CmdSetSampleLocationsEXTFunc)                                GET_PROC_ADDR("vkCmdSetSampleLocationsEXT");
 +m_vk.getImageDrmFormatModifierPropertiesEXT   = (GetImageDrmFormatModifierPropertiesEXTFunc)  GET_PROC_ADDR("vkGetImageDrmFormatModifierPropertiesEXT");
 +m_vk.getMemoryHostPointerPropertiesEXT                = (GetMemoryHostPointerPropertiesEXTFunc)               GET_PROC_ADDR("vkGetMemoryHostPointerPropertiesEXT");
 +m_vk.getCalibratedTimestampsEXT                               = (GetCalibratedTimestampsEXTFunc)                              GET_PROC_ADDR("vkGetCalibratedTimestampsEXT");
 +m_vk.cmdSetLineStippleEXT                                     = (CmdSetLineStippleEXTFunc)                                    GET_PROC_ADDR("vkCmdSetLineStippleEXT");
 +m_vk.cmdSetCullModeEXT                                                = (CmdSetCullModeEXTFunc)                                               GET_PROC_ADDR("vkCmdSetCullModeEXT");
 +m_vk.cmdSetFrontFaceEXT                                               = (CmdSetFrontFaceEXTFunc)                                              GET_PROC_ADDR("vkCmdSetFrontFaceEXT");
 +m_vk.cmdSetPrimitiveTopologyEXT                               = (CmdSetPrimitiveTopologyEXTFunc)                              GET_PROC_ADDR("vkCmdSetPrimitiveTopologyEXT");
 +m_vk.cmdSetViewportWithCountEXT                               = (CmdSetViewportWithCountEXTFunc)                              GET_PROC_ADDR("vkCmdSetViewportWithCountEXT");
 +m_vk.cmdSetScissorWithCountEXT                                = (CmdSetScissorWithCountEXTFunc)                               GET_PROC_ADDR("vkCmdSetScissorWithCountEXT");
 +m_vk.cmdBindVertexBuffers2EXT                         = (CmdBindVertexBuffers2EXTFunc)                                GET_PROC_ADDR("vkCmdBindVertexBuffers2EXT");
 +m_vk.cmdSetDepthTestEnableEXT                         = (CmdSetDepthTestEnableEXTFunc)                                GET_PROC_ADDR("vkCmdSetDepthTestEnableEXT");
 +m_vk.cmdSetDepthWriteEnableEXT                                = (CmdSetDepthWriteEnableEXTFunc)                               GET_PROC_ADDR("vkCmdSetDepthWriteEnableEXT");
 +m_vk.cmdSetDepthCompareOpEXT                          = (CmdSetDepthCompareOpEXTFunc)                                 GET_PROC_ADDR("vkCmdSetDepthCompareOpEXT");
 +m_vk.cmdSetDepthBoundsTestEnableEXT                   = (CmdSetDepthBoundsTestEnableEXTFunc)                  GET_PROC_ADDR("vkCmdSetDepthBoundsTestEnableEXT");
 +m_vk.cmdSetStencilTestEnableEXT                               = (CmdSetStencilTestEnableEXTFunc)                              GET_PROC_ADDR("vkCmdSetStencilTestEnableEXT");
 +m_vk.cmdSetStencilOpEXT                                               = (CmdSetStencilOpEXTFunc)                                              GET_PROC_ADDR("vkCmdSetStencilOpEXT");
++m_vk.cmdSetVertexInputEXT                                     = (CmdSetVertexInputEXTFunc)                                    GET_PROC_ADDR("vkCmdSetVertexInputEXT");
++m_vk.cmdSetPatchControlPointsEXT                      = (CmdSetPatchControlPointsEXTFunc)                             GET_PROC_ADDR("vkCmdSetPatchControlPointsEXT");
++m_vk.cmdSetRasterizerDiscardEnableEXT         = (CmdSetRasterizerDiscardEnableEXTFunc)                GET_PROC_ADDR("vkCmdSetRasterizerDiscardEnableEXT");
++m_vk.cmdSetDepthBiasEnableEXT                         = (CmdSetDepthBiasEnableEXTFunc)                                GET_PROC_ADDR("vkCmdSetDepthBiasEnableEXT");
++m_vk.cmdSetLogicOpEXT                                         = (CmdSetLogicOpEXTFunc)                                                GET_PROC_ADDR("vkCmdSetLogicOpEXT");
++m_vk.cmdSetPrimitiveRestartEnableEXT          = (CmdSetPrimitiveRestartEnableEXTFunc)                 GET_PROC_ADDR("vkCmdSetPrimitiveRestartEnableEXT");
++m_vk.cmdSetColorWriteEnableEXT                                = (CmdSetColorWriteEnableEXTFunc)                               GET_PROC_ADDR("vkCmdSetColorWriteEnableEXT");
index 1e60095,0000000..804b5a0
mode 100644,000000..100644
--- /dev/null
@@@ -1,52 -1,0 +1,55 @@@
- m_vk.destroyInstance                                                          = (DestroyInstanceFunc)                                                                 GET_PROC_ADDR("vkDestroyInstance");
- m_vk.enumeratePhysicalDevices                                         = (EnumeratePhysicalDevicesFunc)                                                GET_PROC_ADDR("vkEnumeratePhysicalDevices");
- m_vk.getPhysicalDeviceFeatures                                                = (GetPhysicalDeviceFeaturesFunc)                                               GET_PROC_ADDR("vkGetPhysicalDeviceFeatures");
- m_vk.getPhysicalDeviceFormatProperties                                = (GetPhysicalDeviceFormatPropertiesFunc)                               GET_PROC_ADDR("vkGetPhysicalDeviceFormatProperties");
- m_vk.getPhysicalDeviceImageFormatProperties                   = (GetPhysicalDeviceImageFormatPropertiesFunc)                  GET_PROC_ADDR("vkGetPhysicalDeviceImageFormatProperties");
- m_vk.getPhysicalDeviceProperties                                      = (GetPhysicalDevicePropertiesFunc)                                             GET_PROC_ADDR("vkGetPhysicalDeviceProperties");
- m_vk.getPhysicalDeviceQueueFamilyProperties                   = (GetPhysicalDeviceQueueFamilyPropertiesFunc)                  GET_PROC_ADDR("vkGetPhysicalDeviceQueueFamilyProperties");
- m_vk.getPhysicalDeviceMemoryProperties                                = (GetPhysicalDeviceMemoryPropertiesFunc)                               GET_PROC_ADDR("vkGetPhysicalDeviceMemoryProperties");
- m_vk.createDevice                                                                     = (CreateDeviceFunc)                                                                    GET_PROC_ADDR("vkCreateDevice");
- m_vk.enumerateDeviceExtensionProperties                               = (EnumerateDeviceExtensionPropertiesFunc)                              GET_PROC_ADDR("vkEnumerateDeviceExtensionProperties");
- m_vk.enumerateDeviceLayerProperties                                   = (EnumerateDeviceLayerPropertiesFunc)                                  GET_PROC_ADDR("vkEnumerateDeviceLayerProperties");
- m_vk.getPhysicalDeviceSparseImageFormatProperties     = (GetPhysicalDeviceSparseImageFormatPropertiesFunc)    GET_PROC_ADDR("vkGetPhysicalDeviceSparseImageFormatProperties");
- m_vk.enumeratePhysicalDeviceGroups                                    = (EnumeratePhysicalDeviceGroupsFunc)                                   GET_PROC_ADDR("vkEnumeratePhysicalDeviceGroups");
- m_vk.getPhysicalDeviceFeatures2                                               = (GetPhysicalDeviceFeatures2Func)                                              GET_PROC_ADDR("vkGetPhysicalDeviceFeatures2");
- m_vk.getPhysicalDeviceProperties2                                     = (GetPhysicalDeviceProperties2Func)                                    GET_PROC_ADDR("vkGetPhysicalDeviceProperties2");
- m_vk.getPhysicalDeviceFormatProperties2                               = (GetPhysicalDeviceFormatProperties2Func)                              GET_PROC_ADDR("vkGetPhysicalDeviceFormatProperties2");
- m_vk.getPhysicalDeviceImageFormatProperties2          = (GetPhysicalDeviceImageFormatProperties2Func)                 GET_PROC_ADDR("vkGetPhysicalDeviceImageFormatProperties2");
- m_vk.getPhysicalDeviceQueueFamilyProperties2          = (GetPhysicalDeviceQueueFamilyProperties2Func)                 GET_PROC_ADDR("vkGetPhysicalDeviceQueueFamilyProperties2");
- m_vk.getPhysicalDeviceMemoryProperties2                               = (GetPhysicalDeviceMemoryProperties2Func)                              GET_PROC_ADDR("vkGetPhysicalDeviceMemoryProperties2");
- m_vk.getPhysicalDeviceSparseImageFormatProperties2    = (GetPhysicalDeviceSparseImageFormatProperties2Func)   GET_PROC_ADDR("vkGetPhysicalDeviceSparseImageFormatProperties2");
- m_vk.getPhysicalDeviceExternalBufferProperties                = (GetPhysicalDeviceExternalBufferPropertiesFunc)               GET_PROC_ADDR("vkGetPhysicalDeviceExternalBufferProperties");
- m_vk.getPhysicalDeviceExternalFenceProperties         = (GetPhysicalDeviceExternalFencePropertiesFunc)                GET_PROC_ADDR("vkGetPhysicalDeviceExternalFenceProperties");
- m_vk.getPhysicalDeviceExternalSemaphoreProperties     = (GetPhysicalDeviceExternalSemaphorePropertiesFunc)    GET_PROC_ADDR("vkGetPhysicalDeviceExternalSemaphoreProperties");
- m_vk.destroySurfaceKHR                                                                = (DestroySurfaceKHRFunc)                                                               GET_PROC_ADDR("vkDestroySurfaceKHR");
- m_vk.getPhysicalDeviceSurfaceSupportKHR                               = (GetPhysicalDeviceSurfaceSupportKHRFunc)                              GET_PROC_ADDR("vkGetPhysicalDeviceSurfaceSupportKHR");
- m_vk.getPhysicalDeviceSurfaceCapabilitiesKHR          = (GetPhysicalDeviceSurfaceCapabilitiesKHRFunc)                 GET_PROC_ADDR("vkGetPhysicalDeviceSurfaceCapabilitiesKHR");
- m_vk.getPhysicalDeviceSurfaceFormatsKHR                               = (GetPhysicalDeviceSurfaceFormatsKHRFunc)                              GET_PROC_ADDR("vkGetPhysicalDeviceSurfaceFormatsKHR");
- m_vk.getPhysicalDeviceSurfacePresentModesKHR          = (GetPhysicalDeviceSurfacePresentModesKHRFunc)                 GET_PROC_ADDR("vkGetPhysicalDeviceSurfacePresentModesKHR");
- m_vk.getPhysicalDevicePresentRectanglesKHR                    = (GetPhysicalDevicePresentRectanglesKHRFunc)                   GET_PROC_ADDR("vkGetPhysicalDevicePresentRectanglesKHR");
- m_vk.getPhysicalDeviceDisplayPropertiesKHR                    = (GetPhysicalDeviceDisplayPropertiesKHRFunc)                   GET_PROC_ADDR("vkGetPhysicalDeviceDisplayPropertiesKHR");
- m_vk.getPhysicalDeviceDisplayPlanePropertiesKHR               = (GetPhysicalDeviceDisplayPlanePropertiesKHRFunc)              GET_PROC_ADDR("vkGetPhysicalDeviceDisplayPlanePropertiesKHR");
- m_vk.getDisplayPlaneSupportedDisplaysKHR                      = (GetDisplayPlaneSupportedDisplaysKHRFunc)                             GET_PROC_ADDR("vkGetDisplayPlaneSupportedDisplaysKHR");
- m_vk.getDisplayModePropertiesKHR                                      = (GetDisplayModePropertiesKHRFunc)                                             GET_PROC_ADDR("vkGetDisplayModePropertiesKHR");
- m_vk.createDisplayModeKHR                                                     = (CreateDisplayModeKHRFunc)                                                    GET_PROC_ADDR("vkCreateDisplayModeKHR");
- m_vk.getDisplayPlaneCapabilitiesKHR                                   = (GetDisplayPlaneCapabilitiesKHRFunc)                                  GET_PROC_ADDR("vkGetDisplayPlaneCapabilitiesKHR");
- m_vk.createDisplayPlaneSurfaceKHR                                     = (CreateDisplayPlaneSurfaceKHRFunc)                                    GET_PROC_ADDR("vkCreateDisplayPlaneSurfaceKHR");
- m_vk.getPhysicalDeviceSurfaceCapabilities2KHR         = (GetPhysicalDeviceSurfaceCapabilities2KHRFunc)                GET_PROC_ADDR("vkGetPhysicalDeviceSurfaceCapabilities2KHR");
- m_vk.getPhysicalDeviceSurfaceFormats2KHR                      = (GetPhysicalDeviceSurfaceFormats2KHRFunc)                             GET_PROC_ADDR("vkGetPhysicalDeviceSurfaceFormats2KHR");
- m_vk.getPhysicalDeviceDisplayProperties2KHR                   = (GetPhysicalDeviceDisplayProperties2KHRFunc)                  GET_PROC_ADDR("vkGetPhysicalDeviceDisplayProperties2KHR");
- m_vk.getPhysicalDeviceDisplayPlaneProperties2KHR      = (GetPhysicalDeviceDisplayPlaneProperties2KHRFunc)             GET_PROC_ADDR("vkGetPhysicalDeviceDisplayPlaneProperties2KHR");
- m_vk.getDisplayModeProperties2KHR                                     = (GetDisplayModeProperties2KHRFunc)                                    GET_PROC_ADDR("vkGetDisplayModeProperties2KHR");
- m_vk.getDisplayPlaneCapabilities2KHR                          = (GetDisplayPlaneCapabilities2KHRFunc)                                 GET_PROC_ADDR("vkGetDisplayPlaneCapabilities2KHR");
- m_vk.getPhysicalDeviceFragmentShadingRatesKHR         = (GetPhysicalDeviceFragmentShadingRatesKHRFunc)                GET_PROC_ADDR("vkGetPhysicalDeviceFragmentShadingRatesKHR");
- m_vk.getPhysicalDeviceRefreshableObjectTypesKHR               = (GetPhysicalDeviceRefreshableObjectTypesKHRFunc)              GET_PROC_ADDR("vkGetPhysicalDeviceRefreshableObjectTypesKHR");
- m_vk.releaseDisplayEXT                                                                = (ReleaseDisplayEXTFunc)                                                               GET_PROC_ADDR("vkReleaseDisplayEXT");
- m_vk.getPhysicalDeviceSurfaceCapabilities2EXT         = (GetPhysicalDeviceSurfaceCapabilities2EXTFunc)                GET_PROC_ADDR("vkGetPhysicalDeviceSurfaceCapabilities2EXT");
- m_vk.getPhysicalDeviceMultisamplePropertiesEXT                = (GetPhysicalDeviceMultisamplePropertiesEXTFunc)               GET_PROC_ADDR("vkGetPhysicalDeviceMultisamplePropertiesEXT");
- m_vk.getPhysicalDeviceCalibrateableTimeDomainsEXT     = (GetPhysicalDeviceCalibrateableTimeDomainsEXTFunc)    GET_PROC_ADDR("vkGetPhysicalDeviceCalibrateableTimeDomainsEXT");
- m_vk.createHeadlessSurfaceEXT                                         = (CreateHeadlessSurfaceEXTFunc)                                                GET_PROC_ADDR("vkCreateHeadlessSurfaceEXT");
 +/* WARNING: This is auto-generated file. Do not modify, since changes will
 + * be lost! Modify the generating script instead.
 + */
++m_vk.destroyInstance                                                                                          = (DestroyInstanceFunc)                                                                                                 GET_PROC_ADDR("vkDestroyInstance");
++m_vk.enumeratePhysicalDevices                                                                         = (EnumeratePhysicalDevicesFunc)                                                                                GET_PROC_ADDR("vkEnumeratePhysicalDevices");
++m_vk.getPhysicalDeviceFeatures                                                                                = (GetPhysicalDeviceFeaturesFunc)                                                                               GET_PROC_ADDR("vkGetPhysicalDeviceFeatures");
++m_vk.getPhysicalDeviceFormatProperties                                                                = (GetPhysicalDeviceFormatPropertiesFunc)                                                               GET_PROC_ADDR("vkGetPhysicalDeviceFormatProperties");
++m_vk.getPhysicalDeviceImageFormatProperties                                                   = (GetPhysicalDeviceImageFormatPropertiesFunc)                                                  GET_PROC_ADDR("vkGetPhysicalDeviceImageFormatProperties");
++m_vk.getPhysicalDeviceProperties                                                                      = (GetPhysicalDevicePropertiesFunc)                                                                             GET_PROC_ADDR("vkGetPhysicalDeviceProperties");
++m_vk.getPhysicalDeviceQueueFamilyProperties                                                   = (GetPhysicalDeviceQueueFamilyPropertiesFunc)                                                  GET_PROC_ADDR("vkGetPhysicalDeviceQueueFamilyProperties");
++m_vk.getPhysicalDeviceMemoryProperties                                                                = (GetPhysicalDeviceMemoryPropertiesFunc)                                                               GET_PROC_ADDR("vkGetPhysicalDeviceMemoryProperties");
++m_vk.createDevice                                                                                                     = (CreateDeviceFunc)                                                                                                    GET_PROC_ADDR("vkCreateDevice");
++m_vk.enumerateDeviceExtensionProperties                                                               = (EnumerateDeviceExtensionPropertiesFunc)                                                              GET_PROC_ADDR("vkEnumerateDeviceExtensionProperties");
++m_vk.enumerateDeviceLayerProperties                                                                   = (EnumerateDeviceLayerPropertiesFunc)                                                                  GET_PROC_ADDR("vkEnumerateDeviceLayerProperties");
++m_vk.enumeratePhysicalDeviceGroups                                                                    = (EnumeratePhysicalDeviceGroupsFunc)                                                                   GET_PROC_ADDR("vkEnumeratePhysicalDeviceGroups");
++m_vk.getPhysicalDeviceFeatures2                                                                               = (GetPhysicalDeviceFeatures2Func)                                                                              GET_PROC_ADDR("vkGetPhysicalDeviceFeatures2");
++m_vk.getPhysicalDeviceProperties2                                                                     = (GetPhysicalDeviceProperties2Func)                                                                    GET_PROC_ADDR("vkGetPhysicalDeviceProperties2");
++m_vk.getPhysicalDeviceFormatProperties2                                                               = (GetPhysicalDeviceFormatProperties2Func)                                                              GET_PROC_ADDR("vkGetPhysicalDeviceFormatProperties2");
++m_vk.getPhysicalDeviceImageFormatProperties2                                          = (GetPhysicalDeviceImageFormatProperties2Func)                                                 GET_PROC_ADDR("vkGetPhysicalDeviceImageFormatProperties2");
++m_vk.getPhysicalDeviceQueueFamilyProperties2                                          = (GetPhysicalDeviceQueueFamilyProperties2Func)                                                 GET_PROC_ADDR("vkGetPhysicalDeviceQueueFamilyProperties2");
++m_vk.getPhysicalDeviceMemoryProperties2                                                               = (GetPhysicalDeviceMemoryProperties2Func)                                                              GET_PROC_ADDR("vkGetPhysicalDeviceMemoryProperties2");
++m_vk.getPhysicalDeviceExternalBufferProperties                                                = (GetPhysicalDeviceExternalBufferPropertiesFunc)                                               GET_PROC_ADDR("vkGetPhysicalDeviceExternalBufferProperties");
++m_vk.getPhysicalDeviceExternalFenceProperties                                         = (GetPhysicalDeviceExternalFencePropertiesFunc)                                                GET_PROC_ADDR("vkGetPhysicalDeviceExternalFenceProperties");
++m_vk.getPhysicalDeviceExternalSemaphoreProperties                                     = (GetPhysicalDeviceExternalSemaphorePropertiesFunc)                                    GET_PROC_ADDR("vkGetPhysicalDeviceExternalSemaphoreProperties");
++m_vk.destroySurfaceKHR                                                                                                = (DestroySurfaceKHRFunc)                                                                                               GET_PROC_ADDR("vkDestroySurfaceKHR");
++m_vk.getPhysicalDeviceSurfaceSupportKHR                                                               = (GetPhysicalDeviceSurfaceSupportKHRFunc)                                                              GET_PROC_ADDR("vkGetPhysicalDeviceSurfaceSupportKHR");
++m_vk.getPhysicalDeviceSurfaceCapabilitiesKHR                                          = (GetPhysicalDeviceSurfaceCapabilitiesKHRFunc)                                                 GET_PROC_ADDR("vkGetPhysicalDeviceSurfaceCapabilitiesKHR");
++m_vk.getPhysicalDeviceSurfaceFormatsKHR                                                               = (GetPhysicalDeviceSurfaceFormatsKHRFunc)                                                              GET_PROC_ADDR("vkGetPhysicalDeviceSurfaceFormatsKHR");
++m_vk.getPhysicalDeviceSurfacePresentModesKHR                                          = (GetPhysicalDeviceSurfacePresentModesKHRFunc)                                                 GET_PROC_ADDR("vkGetPhysicalDeviceSurfacePresentModesKHR");
++m_vk.getPhysicalDevicePresentRectanglesKHR                                                    = (GetPhysicalDevicePresentRectanglesKHRFunc)                                                   GET_PROC_ADDR("vkGetPhysicalDevicePresentRectanglesKHR");
++m_vk.getPhysicalDeviceDisplayPropertiesKHR                                                    = (GetPhysicalDeviceDisplayPropertiesKHRFunc)                                                   GET_PROC_ADDR("vkGetPhysicalDeviceDisplayPropertiesKHR");
++m_vk.getPhysicalDeviceDisplayPlanePropertiesKHR                                               = (GetPhysicalDeviceDisplayPlanePropertiesKHRFunc)                                              GET_PROC_ADDR("vkGetPhysicalDeviceDisplayPlanePropertiesKHR");
++m_vk.getDisplayPlaneSupportedDisplaysKHR                                                      = (GetDisplayPlaneSupportedDisplaysKHRFunc)                                                             GET_PROC_ADDR("vkGetDisplayPlaneSupportedDisplaysKHR");
++m_vk.getDisplayModePropertiesKHR                                                                      = (GetDisplayModePropertiesKHRFunc)                                                                             GET_PROC_ADDR("vkGetDisplayModePropertiesKHR");
++m_vk.createDisplayModeKHR                                                                                     = (CreateDisplayModeKHRFunc)                                                                                    GET_PROC_ADDR("vkCreateDisplayModeKHR");
++m_vk.getDisplayPlaneCapabilitiesKHR                                                                   = (GetDisplayPlaneCapabilitiesKHRFunc)                                                                  GET_PROC_ADDR("vkGetDisplayPlaneCapabilitiesKHR");
++m_vk.createDisplayPlaneSurfaceKHR                                                                     = (CreateDisplayPlaneSurfaceKHRFunc)                                                                    GET_PROC_ADDR("vkCreateDisplayPlaneSurfaceKHR");
++m_vk.enumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR    = (EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHRFunc)   GET_PROC_ADDR("vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR");
++m_vk.getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR                    = (GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHRFunc)                   GET_PROC_ADDR("vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR");
++m_vk.getPhysicalDeviceSurfaceCapabilities2KHR                                         = (GetPhysicalDeviceSurfaceCapabilities2KHRFunc)                                                GET_PROC_ADDR("vkGetPhysicalDeviceSurfaceCapabilities2KHR");
++m_vk.getPhysicalDeviceSurfaceFormats2KHR                                                      = (GetPhysicalDeviceSurfaceFormats2KHRFunc)                                                             GET_PROC_ADDR("vkGetPhysicalDeviceSurfaceFormats2KHR");
++m_vk.getPhysicalDeviceDisplayProperties2KHR                                                   = (GetPhysicalDeviceDisplayProperties2KHRFunc)                                                  GET_PROC_ADDR("vkGetPhysicalDeviceDisplayProperties2KHR");
++m_vk.getPhysicalDeviceDisplayPlaneProperties2KHR                                      = (GetPhysicalDeviceDisplayPlaneProperties2KHRFunc)                                             GET_PROC_ADDR("vkGetPhysicalDeviceDisplayPlaneProperties2KHR");
++m_vk.getDisplayModeProperties2KHR                                                                     = (GetDisplayModeProperties2KHRFunc)                                                                    GET_PROC_ADDR("vkGetDisplayModeProperties2KHR");
++m_vk.getDisplayPlaneCapabilities2KHR                                                          = (GetDisplayPlaneCapabilities2KHRFunc)                                                                 GET_PROC_ADDR("vkGetDisplayPlaneCapabilities2KHR");
++m_vk.getPhysicalDeviceFragmentShadingRatesKHR                                         = (GetPhysicalDeviceFragmentShadingRatesKHRFunc)                                                GET_PROC_ADDR("vkGetPhysicalDeviceFragmentShadingRatesKHR");
++m_vk.getPhysicalDeviceRefreshableObjectTypesKHR                                               = (GetPhysicalDeviceRefreshableObjectTypesKHRFunc)                                              GET_PROC_ADDR("vkGetPhysicalDeviceRefreshableObjectTypesKHR");
++m_vk.releaseDisplayEXT                                                                                                = (ReleaseDisplayEXTFunc)                                                                                               GET_PROC_ADDR("vkReleaseDisplayEXT");
++m_vk.getPhysicalDeviceSurfaceCapabilities2EXT                                         = (GetPhysicalDeviceSurfaceCapabilities2EXTFunc)                                                GET_PROC_ADDR("vkGetPhysicalDeviceSurfaceCapabilities2EXT");
++m_vk.createDebugUtilsMessengerEXT                                                                     = (CreateDebugUtilsMessengerEXTFunc)                                                                    GET_PROC_ADDR("vkCreateDebugUtilsMessengerEXT");
++m_vk.destroyDebugUtilsMessengerEXT                                                                    = (DestroyDebugUtilsMessengerEXTFunc)                                                                   GET_PROC_ADDR("vkDestroyDebugUtilsMessengerEXT");
++m_vk.submitDebugUtilsMessageEXT                                                                               = (SubmitDebugUtilsMessageEXTFunc)                                                                              GET_PROC_ADDR("vkSubmitDebugUtilsMessageEXT");
++m_vk.getPhysicalDeviceMultisamplePropertiesEXT                                                = (GetPhysicalDeviceMultisamplePropertiesEXTFunc)                                               GET_PROC_ADDR("vkGetPhysicalDeviceMultisamplePropertiesEXT");
++m_vk.getPhysicalDeviceCalibrateableTimeDomainsEXT                                     = (GetPhysicalDeviceCalibrateableTimeDomainsEXTFunc)                                    GET_PROC_ADDR("vkGetPhysicalDeviceCalibrateableTimeDomainsEXT");
++m_vk.createHeadlessSurfaceEXT                                                                         = (CreateHeadlessSurfaceEXTFunc)                                                                                GET_PROC_ADDR("vkCreateHeadlessSurfaceEXT");
index 7ab7edf,0000000..659b791
mode 100644,000000..100644
--- /dev/null
@@@ -1,248 -1,0 +1,263 @@@
- void InstanceDriver::getPhysicalDeviceSparseImageFormatProperties (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, deUint32* pPropertyCount, VkSparseImageFormatProperties* pProperties) const
- {
-       m_vk.getPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties);
- }
 +/* WARNING: This is auto-generated file. Do not modify, since changes will
 + * be lost! Modify the generating script instead.
 + */
 +
 +void InstanceDriver::destroyInstance (VkInstance instance, const VkAllocationCallbacks* pAllocator) const
 +{
 +      m_vk.destroyInstance(instance, pAllocator);
 +}
 +
 +VkResult InstanceDriver::enumeratePhysicalDevices (VkInstance instance, deUint32* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices) const
 +{
 +      return m_vk.enumeratePhysicalDevices(instance, pPhysicalDeviceCount, pPhysicalDevices);
 +}
 +
 +void InstanceDriver::getPhysicalDeviceFeatures (VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures) const
 +{
 +      m_vk.getPhysicalDeviceFeatures(physicalDevice, pFeatures);
 +}
 +
 +void InstanceDriver::getPhysicalDeviceFormatProperties (VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties) const
 +{
 +      m_vk.getPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties);
 +}
 +
 +VkResult InstanceDriver::getPhysicalDeviceImageFormatProperties (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties) const
 +{
 +      return m_vk.getPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties);
 +}
 +
 +void InstanceDriver::getPhysicalDeviceProperties (VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties) const
 +{
 +      m_vk.getPhysicalDeviceProperties(physicalDevice, pProperties);
 +}
 +
 +void InstanceDriver::getPhysicalDeviceQueueFamilyProperties (VkPhysicalDevice physicalDevice, deUint32* pQueueFamilyPropertyCount, VkQueueFamilyProperties* pQueueFamilyProperties) const
 +{
 +      m_vk.getPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties);
 +}
 +
 +void InstanceDriver::getPhysicalDeviceMemoryProperties (VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties) const
 +{
 +      m_vk.getPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties);
 +}
 +
 +VkResult InstanceDriver::createDevice (VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice) const
 +{
 +      return m_vk.createDevice(physicalDevice, pCreateInfo, pAllocator, pDevice);
 +}
 +
 +VkResult InstanceDriver::enumerateDeviceExtensionProperties (VkPhysicalDevice physicalDevice, const char* pLayerName, deUint32* pPropertyCount, VkExtensionProperties* pProperties) const
 +{
 +      return m_vk.enumerateDeviceExtensionProperties(physicalDevice, pLayerName, pPropertyCount, pProperties);
 +}
 +
 +VkResult InstanceDriver::enumerateDeviceLayerProperties (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkLayerProperties* pProperties) const
 +{
 +      return m_vk.enumerateDeviceLayerProperties(physicalDevice, pPropertyCount, pProperties);
 +}
 +
- void InstanceDriver::getPhysicalDeviceSparseImageFormatProperties2 (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, deUint32* pPropertyCount, VkSparseImageFormatProperties2* pProperties) const
- {
-       m_vk.getPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties);
- }
 +VkResult InstanceDriver::enumeratePhysicalDeviceGroups (VkInstance instance, deUint32* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties) const
 +{
 +      return m_vk.enumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties);
 +}
 +
 +void InstanceDriver::getPhysicalDeviceFeatures2 (VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures) const
 +{
 +      m_vk.getPhysicalDeviceFeatures2(physicalDevice, pFeatures);
 +}
 +
 +void InstanceDriver::getPhysicalDeviceProperties2 (VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties) const
 +{
 +      m_vk.getPhysicalDeviceProperties2(physicalDevice, pProperties);
 +}
 +
 +void InstanceDriver::getPhysicalDeviceFormatProperties2 (VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties) const
 +{
 +      m_vk.getPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties);
 +}
 +
 +VkResult InstanceDriver::getPhysicalDeviceImageFormatProperties2 (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties) const
 +{
 +      return m_vk.getPhysicalDeviceImageFormatProperties2(physicalDevice, pImageFormatInfo, pImageFormatProperties);
 +}
 +
 +void InstanceDriver::getPhysicalDeviceQueueFamilyProperties2 (VkPhysicalDevice physicalDevice, deUint32* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties) const
 +{
 +      m_vk.getPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties);
 +}
 +
 +void InstanceDriver::getPhysicalDeviceMemoryProperties2 (VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties) const
 +{
 +      m_vk.getPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties);
 +}
 +
 +void InstanceDriver::getPhysicalDeviceExternalBufferProperties (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties) const
 +{
 +      m_vk.getPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties);
 +}
 +
 +void InstanceDriver::getPhysicalDeviceExternalFenceProperties (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties) const
 +{
 +      m_vk.getPhysicalDeviceExternalFenceProperties(physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
 +}
 +
 +void InstanceDriver::getPhysicalDeviceExternalSemaphoreProperties (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties) const
 +{
 +      m_vk.getPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties);
 +}
 +
 +void InstanceDriver::destroySurfaceKHR (VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks* pAllocator) const
 +{
 +      m_vk.destroySurfaceKHR(instance, surface, pAllocator);
 +}
 +
 +VkResult InstanceDriver::getPhysicalDeviceSurfaceSupportKHR (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported) const
 +{
 +      return m_vk.getPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported);
 +}
 +
 +VkResult InstanceDriver::getPhysicalDeviceSurfaceCapabilitiesKHR (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities) const
 +{
 +      return m_vk.getPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities);
 +}
 +
 +VkResult InstanceDriver::getPhysicalDeviceSurfaceFormatsKHR (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats) const
 +{
 +      return m_vk.getPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats);
 +}
 +
 +VkResult InstanceDriver::getPhysicalDeviceSurfacePresentModesKHR (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pPresentModeCount, VkPresentModeKHR* pPresentModes) const
 +{
 +      return m_vk.getPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes);
 +}
 +
 +VkResult InstanceDriver::getPhysicalDevicePresentRectanglesKHR (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pRectCount, VkRect2D* pRects) const
 +{
 +      return m_vk.getPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects);
 +}
 +
 +VkResult InstanceDriver::getPhysicalDeviceDisplayPropertiesKHR (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPropertiesKHR* pProperties) const
 +{
 +      return m_vk.getPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties);
 +}
 +
 +VkResult InstanceDriver::getPhysicalDeviceDisplayPlanePropertiesKHR (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties) const
 +{
 +      return m_vk.getPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties);
 +}
 +
 +VkResult InstanceDriver::getDisplayPlaneSupportedDisplaysKHR (VkPhysicalDevice physicalDevice, deUint32 planeIndex, deUint32* pDisplayCount, VkDisplayKHR* pDisplays) const
 +{
 +      return m_vk.getDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays);
 +}
 +
 +VkResult InstanceDriver::getDisplayModePropertiesKHR (VkPhysicalDevice physicalDevice, VkDisplayKHR display, deUint32* pPropertyCount, VkDisplayModePropertiesKHR* pProperties) const
 +{
 +      return m_vk.getDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties);
 +}
 +
 +VkResult InstanceDriver::createDisplayModeKHR (VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDisplayModeKHR* pMode) const
 +{
 +      return m_vk.createDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode);
 +}
 +
 +VkResult InstanceDriver::getDisplayPlaneCapabilitiesKHR (VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, deUint32 planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities) const
 +{
 +      return m_vk.getDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities);
 +}
 +
 +VkResult InstanceDriver::createDisplayPlaneSurfaceKHR (VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const
 +{
 +      return m_vk.createDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
 +}
 +
++VkResult InstanceDriver::enumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, deUint32* pCounterCount, VkPerformanceCounterKHR* pCounters, VkPerformanceCounterDescriptionKHR* pCounterDescriptions) const
++{
++      return m_vk.enumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions);
++}
++
++void InstanceDriver::getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR (VkPhysicalDevice physicalDevice, const VkQueryPoolPerformanceCreateInfoKHR* pPerformanceQueryCreateInfo, deUint32* pNumPasses) const
++{
++      m_vk.getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses);
++}
++
 +VkResult InstanceDriver::getPhysicalDeviceSurfaceCapabilities2KHR (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkSurfaceCapabilities2KHR* pSurfaceCapabilities) const
 +{
 +      return m_vk.getPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities);
 +}
 +
 +VkResult InstanceDriver::getPhysicalDeviceSurfaceFormats2KHR (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, deUint32* pSurfaceFormatCount, VkSurfaceFormat2KHR* pSurfaceFormats) const
 +{
 +      return m_vk.getPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats);
 +}
 +
 +VkResult InstanceDriver::getPhysicalDeviceDisplayProperties2KHR (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayProperties2KHR* pProperties) const
 +{
 +      return m_vk.getPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties);
 +}
 +
 +VkResult InstanceDriver::getPhysicalDeviceDisplayPlaneProperties2KHR (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPlaneProperties2KHR* pProperties) const
 +{
 +      return m_vk.getPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties);
 +}
 +
 +VkResult InstanceDriver::getDisplayModeProperties2KHR (VkPhysicalDevice physicalDevice, VkDisplayKHR display, deUint32* pPropertyCount, VkDisplayModeProperties2KHR* pProperties) const
 +{
 +      return m_vk.getDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties);
 +}
 +
 +VkResult InstanceDriver::getDisplayPlaneCapabilities2KHR (VkPhysicalDevice physicalDevice, const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo, VkDisplayPlaneCapabilities2KHR* pCapabilities) const
 +{
 +      return m_vk.getDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities);
 +}
 +
 +VkResult InstanceDriver::getPhysicalDeviceFragmentShadingRatesKHR (VkPhysicalDevice physicalDevice, deUint32* pFragmentShadingRateCount, VkPhysicalDeviceFragmentShadingRateKHR* pFragmentShadingRates) const
 +{
 +      return m_vk.getPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates);
 +}
 +
 +VkResult InstanceDriver::getPhysicalDeviceRefreshableObjectTypesKHR (VkPhysicalDevice physicalDevice, deUint32* pRefreshableObjectCount, VkObjectType* pRefreshableObjectTypes) const
 +{
 +      return m_vk.getPhysicalDeviceRefreshableObjectTypesKHR(physicalDevice, pRefreshableObjectCount, pRefreshableObjectTypes);
 +}
 +
 +VkResult InstanceDriver::releaseDisplayEXT (VkPhysicalDevice physicalDevice, VkDisplayKHR display) const
 +{
 +      return m_vk.releaseDisplayEXT(physicalDevice, display);
 +}
 +
 +VkResult InstanceDriver::getPhysicalDeviceSurfaceCapabilities2EXT (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilities2EXT* pSurfaceCapabilities) const
 +{
 +      return m_vk.getPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities);
 +}
 +
++VkResult InstanceDriver::createDebugUtilsMessengerEXT (VkInstance instance, const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugUtilsMessengerEXT* pMessenger) const
++{
++      return m_vk.createDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger);
++}
++
++void InstanceDriver::destroyDebugUtilsMessengerEXT (VkInstance instance, VkDebugUtilsMessengerEXT messenger, const VkAllocationCallbacks* pAllocator) const
++{
++      m_vk.destroyDebugUtilsMessengerEXT(instance, messenger, pAllocator);
++}
++
++void InstanceDriver::submitDebugUtilsMessageEXT (VkInstance instance, VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageTypes, const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData) const
++{
++      m_vk.submitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData);
++}
++
 +void InstanceDriver::getPhysicalDeviceMultisamplePropertiesEXT (VkPhysicalDevice physicalDevice, VkSampleCountFlagBits samples, VkMultisamplePropertiesEXT* pMultisampleProperties) const
 +{
 +      m_vk.getPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties);
 +}
 +
 +VkResult InstanceDriver::getPhysicalDeviceCalibrateableTimeDomainsEXT (VkPhysicalDevice physicalDevice, deUint32* pTimeDomainCount, VkTimeDomainEXT* pTimeDomains) const
 +{
 +      return m_vk.getPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains);
 +}
 +
 +VkResult InstanceDriver::createHeadlessSurfaceEXT (VkInstance instance, const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const
 +{
 +      return m_vk.createHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface);
 +}
index 90dfdff,0000000..0cd1901
mode 100644,000000..100644
--- /dev/null
@@@ -1,52 -1,0 +1,55 @@@
- DestroyInstanceFunc                                                                   destroyInstance;
- EnumeratePhysicalDevicesFunc                                          enumeratePhysicalDevices;
- GetPhysicalDeviceFeaturesFunc                                         getPhysicalDeviceFeatures;
- GetPhysicalDeviceFormatPropertiesFunc                         getPhysicalDeviceFormatProperties;
- GetPhysicalDeviceImageFormatPropertiesFunc                    getPhysicalDeviceImageFormatProperties;
- GetPhysicalDevicePropertiesFunc                                               getPhysicalDeviceProperties;
- GetPhysicalDeviceQueueFamilyPropertiesFunc                    getPhysicalDeviceQueueFamilyProperties;
- GetPhysicalDeviceMemoryPropertiesFunc                         getPhysicalDeviceMemoryProperties;
- CreateDeviceFunc                                                                      createDevice;
- EnumerateDeviceExtensionPropertiesFunc                                enumerateDeviceExtensionProperties;
- EnumerateDeviceLayerPropertiesFunc                                    enumerateDeviceLayerProperties;
- GetPhysicalDeviceSparseImageFormatPropertiesFunc      getPhysicalDeviceSparseImageFormatProperties;
- EnumeratePhysicalDeviceGroupsFunc                                     enumeratePhysicalDeviceGroups;
- GetPhysicalDeviceFeatures2Func                                                getPhysicalDeviceFeatures2;
- GetPhysicalDeviceProperties2Func                                      getPhysicalDeviceProperties2;
- GetPhysicalDeviceFormatProperties2Func                                getPhysicalDeviceFormatProperties2;
- GetPhysicalDeviceImageFormatProperties2Func                   getPhysicalDeviceImageFormatProperties2;
- GetPhysicalDeviceQueueFamilyProperties2Func                   getPhysicalDeviceQueueFamilyProperties2;
- GetPhysicalDeviceMemoryProperties2Func                                getPhysicalDeviceMemoryProperties2;
- GetPhysicalDeviceSparseImageFormatProperties2Func     getPhysicalDeviceSparseImageFormatProperties2;
- GetPhysicalDeviceExternalBufferPropertiesFunc         getPhysicalDeviceExternalBufferProperties;
- GetPhysicalDeviceExternalFencePropertiesFunc          getPhysicalDeviceExternalFenceProperties;
- GetPhysicalDeviceExternalSemaphorePropertiesFunc      getPhysicalDeviceExternalSemaphoreProperties;
- DestroySurfaceKHRFunc                                                         destroySurfaceKHR;
- GetPhysicalDeviceSurfaceSupportKHRFunc                                getPhysicalDeviceSurfaceSupportKHR;
- GetPhysicalDeviceSurfaceCapabilitiesKHRFunc                   getPhysicalDeviceSurfaceCapabilitiesKHR;
- GetPhysicalDeviceSurfaceFormatsKHRFunc                                getPhysicalDeviceSurfaceFormatsKHR;
- GetPhysicalDeviceSurfacePresentModesKHRFunc                   getPhysicalDeviceSurfacePresentModesKHR;
- GetPhysicalDevicePresentRectanglesKHRFunc                     getPhysicalDevicePresentRectanglesKHR;
- GetPhysicalDeviceDisplayPropertiesKHRFunc                     getPhysicalDeviceDisplayPropertiesKHR;
- GetPhysicalDeviceDisplayPlanePropertiesKHRFunc                getPhysicalDeviceDisplayPlanePropertiesKHR;
- GetDisplayPlaneSupportedDisplaysKHRFunc                               getDisplayPlaneSupportedDisplaysKHR;
- GetDisplayModePropertiesKHRFunc                                               getDisplayModePropertiesKHR;
- CreateDisplayModeKHRFunc                                                      createDisplayModeKHR;
- GetDisplayPlaneCapabilitiesKHRFunc                                    getDisplayPlaneCapabilitiesKHR;
- CreateDisplayPlaneSurfaceKHRFunc                                      createDisplayPlaneSurfaceKHR;
- GetPhysicalDeviceSurfaceCapabilities2KHRFunc          getPhysicalDeviceSurfaceCapabilities2KHR;
- GetPhysicalDeviceSurfaceFormats2KHRFunc                               getPhysicalDeviceSurfaceFormats2KHR;
- GetPhysicalDeviceDisplayProperties2KHRFunc                    getPhysicalDeviceDisplayProperties2KHR;
- GetPhysicalDeviceDisplayPlaneProperties2KHRFunc               getPhysicalDeviceDisplayPlaneProperties2KHR;
- GetDisplayModeProperties2KHRFunc                                      getDisplayModeProperties2KHR;
- GetDisplayPlaneCapabilities2KHRFunc                                   getDisplayPlaneCapabilities2KHR;
- GetPhysicalDeviceFragmentShadingRatesKHRFunc          getPhysicalDeviceFragmentShadingRatesKHR;
- GetPhysicalDeviceRefreshableObjectTypesKHRFunc                getPhysicalDeviceRefreshableObjectTypesKHR;
- ReleaseDisplayEXTFunc                                                         releaseDisplayEXT;
- GetPhysicalDeviceSurfaceCapabilities2EXTFunc          getPhysicalDeviceSurfaceCapabilities2EXT;
- GetPhysicalDeviceMultisamplePropertiesEXTFunc         getPhysicalDeviceMultisamplePropertiesEXT;
- GetPhysicalDeviceCalibrateableTimeDomainsEXTFunc      getPhysicalDeviceCalibrateableTimeDomainsEXT;
- CreateHeadlessSurfaceEXTFunc                                          createHeadlessSurfaceEXT;
 +/* WARNING: This is auto-generated file. Do not modify, since changes will
 + * be lost! Modify the generating script instead.
 + */
++DestroyInstanceFunc                                                                                                   destroyInstance;
++EnumeratePhysicalDevicesFunc                                                                          enumeratePhysicalDevices;
++GetPhysicalDeviceFeaturesFunc                                                                         getPhysicalDeviceFeatures;
++GetPhysicalDeviceFormatPropertiesFunc                                                         getPhysicalDeviceFormatProperties;
++GetPhysicalDeviceImageFormatPropertiesFunc                                                    getPhysicalDeviceImageFormatProperties;
++GetPhysicalDevicePropertiesFunc                                                                               getPhysicalDeviceProperties;
++GetPhysicalDeviceQueueFamilyPropertiesFunc                                                    getPhysicalDeviceQueueFamilyProperties;
++GetPhysicalDeviceMemoryPropertiesFunc                                                         getPhysicalDeviceMemoryProperties;
++CreateDeviceFunc                                                                                                      createDevice;
++EnumerateDeviceExtensionPropertiesFunc                                                                enumerateDeviceExtensionProperties;
++EnumerateDeviceLayerPropertiesFunc                                                                    enumerateDeviceLayerProperties;
++EnumeratePhysicalDeviceGroupsFunc                                                                     enumeratePhysicalDeviceGroups;
++GetPhysicalDeviceFeatures2Func                                                                                getPhysicalDeviceFeatures2;
++GetPhysicalDeviceProperties2Func                                                                      getPhysicalDeviceProperties2;
++GetPhysicalDeviceFormatProperties2Func                                                                getPhysicalDeviceFormatProperties2;
++GetPhysicalDeviceImageFormatProperties2Func                                                   getPhysicalDeviceImageFormatProperties2;
++GetPhysicalDeviceQueueFamilyProperties2Func                                                   getPhysicalDeviceQueueFamilyProperties2;
++GetPhysicalDeviceMemoryProperties2Func                                                                getPhysicalDeviceMemoryProperties2;
++GetPhysicalDeviceExternalBufferPropertiesFunc                                         getPhysicalDeviceExternalBufferProperties;
++GetPhysicalDeviceExternalFencePropertiesFunc                                          getPhysicalDeviceExternalFenceProperties;
++GetPhysicalDeviceExternalSemaphorePropertiesFunc                                      getPhysicalDeviceExternalSemaphoreProperties;
++DestroySurfaceKHRFunc                                                                                         destroySurfaceKHR;
++GetPhysicalDeviceSurfaceSupportKHRFunc                                                                getPhysicalDeviceSurfaceSupportKHR;
++GetPhysicalDeviceSurfaceCapabilitiesKHRFunc                                                   getPhysicalDeviceSurfaceCapabilitiesKHR;
++GetPhysicalDeviceSurfaceFormatsKHRFunc                                                                getPhysicalDeviceSurfaceFormatsKHR;
++GetPhysicalDeviceSurfacePresentModesKHRFunc                                                   getPhysicalDeviceSurfacePresentModesKHR;
++GetPhysicalDevicePresentRectanglesKHRFunc                                                     getPhysicalDevicePresentRectanglesKHR;
++GetPhysicalDeviceDisplayPropertiesKHRFunc                                                     getPhysicalDeviceDisplayPropertiesKHR;
++GetPhysicalDeviceDisplayPlanePropertiesKHRFunc                                                getPhysicalDeviceDisplayPlanePropertiesKHR;
++GetDisplayPlaneSupportedDisplaysKHRFunc                                                               getDisplayPlaneSupportedDisplaysKHR;
++GetDisplayModePropertiesKHRFunc                                                                               getDisplayModePropertiesKHR;
++CreateDisplayModeKHRFunc                                                                                      createDisplayModeKHR;
++GetDisplayPlaneCapabilitiesKHRFunc                                                                    getDisplayPlaneCapabilitiesKHR;
++CreateDisplayPlaneSurfaceKHRFunc                                                                      createDisplayPlaneSurfaceKHR;
++EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHRFunc     enumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR;
++GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHRFunc                     getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR;
++GetPhysicalDeviceSurfaceCapabilities2KHRFunc                                          getPhysicalDeviceSurfaceCapabilities2KHR;
++GetPhysicalDeviceSurfaceFormats2KHRFunc                                                               getPhysicalDeviceSurfaceFormats2KHR;
++GetPhysicalDeviceDisplayProperties2KHRFunc                                                    getPhysicalDeviceDisplayProperties2KHR;
++GetPhysicalDeviceDisplayPlaneProperties2KHRFunc                                               getPhysicalDeviceDisplayPlaneProperties2KHR;
++GetDisplayModeProperties2KHRFunc                                                                      getDisplayModeProperties2KHR;
++GetDisplayPlaneCapabilities2KHRFunc                                                                   getDisplayPlaneCapabilities2KHR;
++GetPhysicalDeviceFragmentShadingRatesKHRFunc                                          getPhysicalDeviceFragmentShadingRatesKHR;
++GetPhysicalDeviceRefreshableObjectTypesKHRFunc                                                getPhysicalDeviceRefreshableObjectTypesKHR;
++ReleaseDisplayEXTFunc                                                                                         releaseDisplayEXT;
++GetPhysicalDeviceSurfaceCapabilities2EXTFunc                                          getPhysicalDeviceSurfaceCapabilities2EXT;
++CreateDebugUtilsMessengerEXTFunc                                                                      createDebugUtilsMessengerEXT;
++DestroyDebugUtilsMessengerEXTFunc                                                                     destroyDebugUtilsMessengerEXT;
++SubmitDebugUtilsMessageEXTFunc                                                                                submitDebugUtilsMessageEXT;
++GetPhysicalDeviceMultisamplePropertiesEXTFunc                                         getPhysicalDeviceMultisamplePropertiesEXT;
++GetPhysicalDeviceCalibrateableTimeDomainsEXTFunc                                      getPhysicalDeviceCalibrateableTimeDomainsEXT;
++CreateHeadlessSurfaceEXTFunc                                                                          createHeadlessSurfaceEXT;
index 1d8f24d,0000000..f3796d3
mode 100644,000000..100644
--- /dev/null
@@@ -1,25 -1,0 +1,26 @@@
 +/* WARNING: This is auto-generated file. Do not modify, since changes will
 + * be lost! Modify the generating script instead.
 + */
 +static const struct
 +{
 +      std::string driver;
 +      deUint32 id;
 +} driverIds [] =
 +{
 +      {"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_MESA_LLVMPIPE", 13},
 +      {"VK_DRIVER_ID_MOLTENVK", 14},
++      {"VK_DRIVER_ID_COREAVI_PROPRIETARY", 15},
 +      {"VK_DRIVER_ID_MAX_ENUM", 0x7FFFFFFF}
 +};
index 82de3d3,0000000..1b70d0d
mode 100644,000000..100644
--- /dev/null
@@@ -1,1000 -1,0 +1,1276 @@@
-       vk::VkPhysicalDeviceSamplerYcbcrConversionFeatures physicalDeviceSamplerYcbcrConversionFeatures;
-       deMemset(&physicalDeviceSamplerYcbcrConversionFeatures, 0, sizeof(physicalDeviceSamplerYcbcrConversionFeatures));
 +/* WARNING: This is auto-generated file. Do not modify, since changes will
 + * be lost! Modify the generating script instead.
 + */
 +bool checkMandatoryFeatures(const vkt::Context& context)
 +{
 +      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();
 +      const InstanceInterface&                        vki                                     = context.getInstanceInterface();
 +      const vector<VkExtensionProperties>     deviceExtensions        = enumerateDeviceExtensionProperties(vki, physicalDevice, DE_NULL);
 +
 +      tcu::TestLog& log = context.getTestContext().getLog();
 +      vk::VkPhysicalDeviceFeatures2 coreFeatures;
 +      deMemset(&coreFeatures, 0, sizeof(coreFeatures));
 +      coreFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2;
 +      void** nextPtr = &coreFeatures.pNext;
 +
 +      vk::VkPhysicalDevice16BitStorageFeatures physicalDevice16BitStorageFeatures;
 +      deMemset(&physicalDevice16BitStorageFeatures, 0, sizeof(physicalDevice16BitStorageFeatures));
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_16bit_storage")) )
 +      {
 +              physicalDevice16BitStorageFeatures.sType = getStructureType<VkPhysicalDevice16BitStorageFeatures>();
 +              *nextPtr = &physicalDevice16BitStorageFeatures;
 +              nextPtr  = &physicalDevice16BitStorageFeatures.pNext;
 +      }
 +
++      vk::VkPhysicalDevice4444FormatsFeaturesEXT physicalDevice4444FormatsFeaturesEXT;
++      deMemset(&physicalDevice4444FormatsFeaturesEXT, 0, sizeof(physicalDevice4444FormatsFeaturesEXT));
++
++      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_4444_formats")) )
++      {
++              physicalDevice4444FormatsFeaturesEXT.sType = getStructureType<VkPhysicalDevice4444FormatsFeaturesEXT>();
++              *nextPtr = &physicalDevice4444FormatsFeaturesEXT;
++              nextPtr  = &physicalDevice4444FormatsFeaturesEXT.pNext;
++      }
++
 +      vk::VkPhysicalDevice8BitStorageFeatures physicalDevice8BitStorageFeatures;
 +      deMemset(&physicalDevice8BitStorageFeatures, 0, sizeof(physicalDevice8BitStorageFeatures));
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_8bit_storage")) )
 +      {
 +              physicalDevice8BitStorageFeatures.sType = getStructureType<VkPhysicalDevice8BitStorageFeatures>();
 +              *nextPtr = &physicalDevice8BitStorageFeatures;
 +              nextPtr  = &physicalDevice8BitStorageFeatures.pNext;
 +      }
 +
 +      vk::VkPhysicalDeviceBufferDeviceAddressFeatures physicalDeviceBufferDeviceAddressFeatures;
 +      deMemset(&physicalDeviceBufferDeviceAddressFeatures, 0, sizeof(physicalDeviceBufferDeviceAddressFeatures));
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_buffer_device_address")) )
 +      {
 +              physicalDeviceBufferDeviceAddressFeatures.sType = getStructureType<VkPhysicalDeviceBufferDeviceAddressFeatures>();
 +              *nextPtr = &physicalDeviceBufferDeviceAddressFeatures;
 +              nextPtr  = &physicalDeviceBufferDeviceAddressFeatures.pNext;
 +      }
 +
++      vk::VkPhysicalDeviceColorWriteEnableFeaturesEXT physicalDeviceColorWriteEnableFeaturesEXT;
++      deMemset(&physicalDeviceColorWriteEnableFeaturesEXT, 0, sizeof(physicalDeviceColorWriteEnableFeaturesEXT));
++
++      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_color_write_enable")) )
++      {
++              physicalDeviceColorWriteEnableFeaturesEXT.sType = getStructureType<VkPhysicalDeviceColorWriteEnableFeaturesEXT>();
++              *nextPtr = &physicalDeviceColorWriteEnableFeaturesEXT;
++              nextPtr  = &physicalDeviceColorWriteEnableFeaturesEXT.pNext;
++      }
++
 +      vk::VkPhysicalDeviceDepthClipEnableFeaturesEXT physicalDeviceDepthClipEnableFeaturesEXT;
 +      deMemset(&physicalDeviceDepthClipEnableFeaturesEXT, 0, sizeof(physicalDeviceDepthClipEnableFeaturesEXT));
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_depth_clip_enable")) )
 +      {
 +              physicalDeviceDepthClipEnableFeaturesEXT.sType = getStructureType<VkPhysicalDeviceDepthClipEnableFeaturesEXT>();
 +              *nextPtr = &physicalDeviceDepthClipEnableFeaturesEXT;
 +              nextPtr  = &physicalDeviceDepthClipEnableFeaturesEXT.pNext;
 +      }
 +
 +      vk::VkPhysicalDeviceDescriptorIndexingFeatures physicalDeviceDescriptorIndexingFeatures;
 +      deMemset(&physicalDeviceDescriptorIndexingFeatures, 0, sizeof(physicalDeviceDescriptorIndexingFeatures));
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) )
 +      {
 +              physicalDeviceDescriptorIndexingFeatures.sType = getStructureType<VkPhysicalDeviceDescriptorIndexingFeatures>();
 +              *nextPtr = &physicalDeviceDescriptorIndexingFeatures;
 +              nextPtr  = &physicalDeviceDescriptorIndexingFeatures.pNext;
 +      }
 +
++      vk::VkPhysicalDeviceExtendedDynamicState2FeaturesEXT physicalDeviceExtendedDynamicState2FeaturesEXT;
++      deMemset(&physicalDeviceExtendedDynamicState2FeaturesEXT, 0, sizeof(physicalDeviceExtendedDynamicState2FeaturesEXT));
++
++      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_extended_dynamic_state2")) )
++      {
++              physicalDeviceExtendedDynamicState2FeaturesEXT.sType = getStructureType<VkPhysicalDeviceExtendedDynamicState2FeaturesEXT>();
++              *nextPtr = &physicalDeviceExtendedDynamicState2FeaturesEXT;
++              nextPtr  = &physicalDeviceExtendedDynamicState2FeaturesEXT.pNext;
++      }
++
 +      vk::VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT physicalDeviceFragmentShaderInterlockFeaturesEXT;
 +      deMemset(&physicalDeviceFragmentShaderInterlockFeaturesEXT, 0, sizeof(physicalDeviceFragmentShaderInterlockFeaturesEXT));
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_fragment_shader_interlock")) )
 +      {
 +              physicalDeviceFragmentShaderInterlockFeaturesEXT.sType = getStructureType<VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT>();
 +              *nextPtr = &physicalDeviceFragmentShaderInterlockFeaturesEXT;
 +              nextPtr  = &physicalDeviceFragmentShaderInterlockFeaturesEXT.pNext;
 +      }
 +
 +      vk::VkPhysicalDeviceHostQueryResetFeatures physicalDeviceHostQueryResetFeatures;
 +      deMemset(&physicalDeviceHostQueryResetFeatures, 0, sizeof(physicalDeviceHostQueryResetFeatures));
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_host_query_reset")) )
 +      {
 +              physicalDeviceHostQueryResetFeatures.sType = getStructureType<VkPhysicalDeviceHostQueryResetFeatures>();
 +              *nextPtr = &physicalDeviceHostQueryResetFeatures;
 +              nextPtr  = &physicalDeviceHostQueryResetFeatures.pNext;
 +      }
 +
 +      vk::VkPhysicalDeviceImagelessFramebufferFeatures physicalDeviceImagelessFramebufferFeatures;
 +      deMemset(&physicalDeviceImagelessFramebufferFeatures, 0, sizeof(physicalDeviceImagelessFramebufferFeatures));
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_imageless_framebuffer")) )
 +      {
 +              physicalDeviceImagelessFramebufferFeatures.sType = getStructureType<VkPhysicalDeviceImagelessFramebufferFeatures>();
 +              *nextPtr = &physicalDeviceImagelessFramebufferFeatures;
 +              nextPtr  = &physicalDeviceImagelessFramebufferFeatures.pNext;
 +      }
 +
 +      vk::VkPhysicalDeviceIndexTypeUint8FeaturesEXT physicalDeviceIndexTypeUint8FeaturesEXT;
 +      deMemset(&physicalDeviceIndexTypeUint8FeaturesEXT, 0, sizeof(physicalDeviceIndexTypeUint8FeaturesEXT));
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_index_type_uint8")) )
 +      {
 +              physicalDeviceIndexTypeUint8FeaturesEXT.sType = getStructureType<VkPhysicalDeviceIndexTypeUint8FeaturesEXT>();
 +              *nextPtr = &physicalDeviceIndexTypeUint8FeaturesEXT;
 +              nextPtr  = &physicalDeviceIndexTypeUint8FeaturesEXT.pNext;
 +      }
 +
 +      vk::VkPhysicalDeviceLineRasterizationFeaturesEXT physicalDeviceLineRasterizationFeaturesEXT;
 +      deMemset(&physicalDeviceLineRasterizationFeaturesEXT, 0, sizeof(physicalDeviceLineRasterizationFeaturesEXT));
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_line_rasterization")) )
 +      {
 +              physicalDeviceLineRasterizationFeaturesEXT.sType = getStructureType<VkPhysicalDeviceLineRasterizationFeaturesEXT>();
 +              *nextPtr = &physicalDeviceLineRasterizationFeaturesEXT;
 +              nextPtr  = &physicalDeviceLineRasterizationFeaturesEXT.pNext;
 +      }
 +
 +      vk::VkPhysicalDeviceMultiviewFeatures physicalDeviceMultiviewFeatures;
 +      deMemset(&physicalDeviceMultiviewFeatures, 0, sizeof(physicalDeviceMultiviewFeatures));
 +
 +      if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) || isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_multiview")) )
 +      {
 +              physicalDeviceMultiviewFeatures.sType = getStructureType<VkPhysicalDeviceMultiviewFeatures>();
 +              *nextPtr = &physicalDeviceMultiviewFeatures;
 +              nextPtr  = &physicalDeviceMultiviewFeatures.pNext;
 +      }
 +
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_sampler_ycbcr_conversion")) )
++      vk::VkPhysicalDevicePerformanceQueryFeaturesKHR physicalDevicePerformanceQueryFeaturesKHR;
++      deMemset(&physicalDevicePerformanceQueryFeaturesKHR, 0, sizeof(physicalDevicePerformanceQueryFeaturesKHR));
 +
-               physicalDeviceSamplerYcbcrConversionFeatures.sType = getStructureType<VkPhysicalDeviceSamplerYcbcrConversionFeatures>();
-               *nextPtr = &physicalDeviceSamplerYcbcrConversionFeatures;
-               nextPtr  = &physicalDeviceSamplerYcbcrConversionFeatures.pNext;
++      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_performance_query")) )
 +      {
-       if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_sampler_ycbcr_conversion")) )
++              physicalDevicePerformanceQueryFeaturesKHR.sType = getStructureType<VkPhysicalDevicePerformanceQueryFeaturesKHR>();
++              *nextPtr = &physicalDevicePerformanceQueryFeaturesKHR;
++              nextPtr  = &physicalDevicePerformanceQueryFeaturesKHR.pNext;
 +      }
 +
 +      vk::VkPhysicalDeviceScalarBlockLayoutFeatures physicalDeviceScalarBlockLayoutFeatures;
 +      deMemset(&physicalDeviceScalarBlockLayoutFeatures, 0, sizeof(physicalDeviceScalarBlockLayoutFeatures));
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_scalar_block_layout")) )
 +      {
 +              physicalDeviceScalarBlockLayoutFeatures.sType = getStructureType<VkPhysicalDeviceScalarBlockLayoutFeatures>();
 +              *nextPtr = &physicalDeviceScalarBlockLayoutFeatures;
 +              nextPtr  = &physicalDeviceScalarBlockLayoutFeatures.pNext;
 +      }
 +
 +      vk::VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures physicalDeviceSeparateDepthStencilLayoutsFeatures;
 +      deMemset(&physicalDeviceSeparateDepthStencilLayoutsFeatures, 0, sizeof(physicalDeviceSeparateDepthStencilLayoutsFeatures));
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_separate_depth_stencil_layouts")) )
 +      {
 +              physicalDeviceSeparateDepthStencilLayoutsFeatures.sType = getStructureType<VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures>();
 +              *nextPtr = &physicalDeviceSeparateDepthStencilLayoutsFeatures;
 +              nextPtr  = &physicalDeviceSeparateDepthStencilLayoutsFeatures.pNext;
 +      }
 +
 +      vk::VkPhysicalDeviceShaderAtomicInt64Features physicalDeviceShaderAtomicInt64Features;
 +      deMemset(&physicalDeviceShaderAtomicInt64Features, 0, sizeof(physicalDeviceShaderAtomicInt64Features));
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_atomic_int64")) )
 +      {
 +              physicalDeviceShaderAtomicInt64Features.sType = getStructureType<VkPhysicalDeviceShaderAtomicInt64Features>();
 +              *nextPtr = &physicalDeviceShaderAtomicInt64Features;
 +              nextPtr  = &physicalDeviceShaderAtomicInt64Features.pNext;
 +      }
 +
 +      vk::VkPhysicalDeviceShaderClockFeaturesKHR physicalDeviceShaderClockFeaturesKHR;
 +      deMemset(&physicalDeviceShaderClockFeaturesKHR, 0, sizeof(physicalDeviceShaderClockFeaturesKHR));
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_clock")) )
 +      {
 +              physicalDeviceShaderClockFeaturesKHR.sType = getStructureType<VkPhysicalDeviceShaderClockFeaturesKHR>();
 +              *nextPtr = &physicalDeviceShaderClockFeaturesKHR;
 +              nextPtr  = &physicalDeviceShaderClockFeaturesKHR.pNext;
 +      }
 +
 +      vk::VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT physicalDeviceShaderDemoteToHelperInvocationFeaturesEXT;
 +      deMemset(&physicalDeviceShaderDemoteToHelperInvocationFeaturesEXT, 0, sizeof(physicalDeviceShaderDemoteToHelperInvocationFeaturesEXT));
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_demote_to_helper_invocation")) )
 +      {
 +              physicalDeviceShaderDemoteToHelperInvocationFeaturesEXT.sType = getStructureType<VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT>();
 +              *nextPtr = &physicalDeviceShaderDemoteToHelperInvocationFeaturesEXT;
 +              nextPtr  = &physicalDeviceShaderDemoteToHelperInvocationFeaturesEXT.pNext;
 +      }
 +
 +      vk::VkPhysicalDeviceShaderFloat16Int8Features physicalDeviceShaderFloat16Int8Features;
 +      deMemset(&physicalDeviceShaderFloat16Int8Features, 0, sizeof(physicalDeviceShaderFloat16Int8Features));
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_float16_int8")) )
 +      {
 +              physicalDeviceShaderFloat16Int8Features.sType = getStructureType<VkPhysicalDeviceShaderFloat16Int8Features>();
 +              *nextPtr = &physicalDeviceShaderFloat16Int8Features;
 +              nextPtr  = &physicalDeviceShaderFloat16Int8Features.pNext;
 +      }
 +
 +      vk::VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT physicalDeviceShaderImageAtomicInt64FeaturesEXT;
 +      deMemset(&physicalDeviceShaderImageAtomicInt64FeaturesEXT, 0, sizeof(physicalDeviceShaderImageAtomicInt64FeaturesEXT));
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_image_atomic_int64")) )
 +      {
 +              physicalDeviceShaderImageAtomicInt64FeaturesEXT.sType = getStructureType<VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT>();
 +              *nextPtr = &physicalDeviceShaderImageAtomicInt64FeaturesEXT;
 +              nextPtr  = &physicalDeviceShaderImageAtomicInt64FeaturesEXT.pNext;
 +      }
 +
 +      vk::VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures physicalDeviceShaderSubgroupExtendedTypesFeatures;
 +      deMemset(&physicalDeviceShaderSubgroupExtendedTypesFeatures, 0, sizeof(physicalDeviceShaderSubgroupExtendedTypesFeatures));
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_subgroup_extended_types")) )
 +      {
 +              physicalDeviceShaderSubgroupExtendedTypesFeatures.sType = getStructureType<VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures>();
 +              *nextPtr = &physicalDeviceShaderSubgroupExtendedTypesFeatures;
 +              nextPtr  = &physicalDeviceShaderSubgroupExtendedTypesFeatures.pNext;
 +      }
 +
 +      vk::VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR physicalDeviceShaderTerminateInvocationFeaturesKHR;
 +      deMemset(&physicalDeviceShaderTerminateInvocationFeaturesKHR, 0, sizeof(physicalDeviceShaderTerminateInvocationFeaturesKHR));
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_terminate_invocation")) )
 +      {
 +              physicalDeviceShaderTerminateInvocationFeaturesKHR.sType = getStructureType<VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR>();
 +              *nextPtr = &physicalDeviceShaderTerminateInvocationFeaturesKHR;
 +              nextPtr  = &physicalDeviceShaderTerminateInvocationFeaturesKHR.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::VkPhysicalDeviceSynchronization2FeaturesKHR physicalDeviceSynchronization2FeaturesKHR;
++      deMemset(&physicalDeviceSynchronization2FeaturesKHR, 0, sizeof(physicalDeviceSynchronization2FeaturesKHR));
++
++      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_synchronization2")) )
++      {
++              physicalDeviceSynchronization2FeaturesKHR.sType = getStructureType<VkPhysicalDeviceSynchronization2FeaturesKHR>();
++              *nextPtr = &physicalDeviceSynchronization2FeaturesKHR;
++              nextPtr  = &physicalDeviceSynchronization2FeaturesKHR.pNext;
++      }
++
 +      vk::VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT physicalDeviceTexelBufferAlignmentFeaturesEXT;
 +      deMemset(&physicalDeviceTexelBufferAlignmentFeaturesEXT, 0, sizeof(physicalDeviceTexelBufferAlignmentFeaturesEXT));
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_texel_buffer_alignment")) )
 +      {
 +              physicalDeviceTexelBufferAlignmentFeaturesEXT.sType = getStructureType<VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT>();
 +              *nextPtr = &physicalDeviceTexelBufferAlignmentFeaturesEXT;
 +              nextPtr  = &physicalDeviceTexelBufferAlignmentFeaturesEXT.pNext;
 +      }
 +
 +      vk::VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT physicalDeviceTextureCompressionASTCHDRFeaturesEXT;
 +      deMemset(&physicalDeviceTextureCompressionASTCHDRFeaturesEXT, 0, sizeof(physicalDeviceTextureCompressionASTCHDRFeaturesEXT));
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_texture_compression_astc_hdr")) )
 +      {
 +              physicalDeviceTextureCompressionASTCHDRFeaturesEXT.sType = getStructureType<VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT>();
 +              *nextPtr = &physicalDeviceTextureCompressionASTCHDRFeaturesEXT;
 +              nextPtr  = &physicalDeviceTextureCompressionASTCHDRFeaturesEXT.pNext;
 +      }
 +
 +      vk::VkPhysicalDeviceTimelineSemaphoreFeatures physicalDeviceTimelineSemaphoreFeatures;
 +      deMemset(&physicalDeviceTimelineSemaphoreFeatures, 0, sizeof(physicalDeviceTimelineSemaphoreFeatures));
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_timeline_semaphore")) )
 +      {
 +              physicalDeviceTimelineSemaphoreFeatures.sType = getStructureType<VkPhysicalDeviceTimelineSemaphoreFeatures>();
 +              *nextPtr = &physicalDeviceTimelineSemaphoreFeatures;
 +              nextPtr  = &physicalDeviceTimelineSemaphoreFeatures.pNext;
 +      }
 +
 +      vk::VkPhysicalDeviceUniformBufferStandardLayoutFeatures physicalDeviceUniformBufferStandardLayoutFeatures;
 +      deMemset(&physicalDeviceUniformBufferStandardLayoutFeatures, 0, sizeof(physicalDeviceUniformBufferStandardLayoutFeatures));
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_uniform_buffer_standard_layout")) )
 +      {
 +              physicalDeviceUniformBufferStandardLayoutFeatures.sType = getStructureType<VkPhysicalDeviceUniformBufferStandardLayoutFeatures>();
 +              *nextPtr = &physicalDeviceUniformBufferStandardLayoutFeatures;
 +              nextPtr  = &physicalDeviceUniformBufferStandardLayoutFeatures.pNext;
 +      }
 +
 +      vk::VkPhysicalDeviceVariablePointersFeatures physicalDeviceVariablePointersFeatures;
 +      deMemset(&physicalDeviceVariablePointersFeatures, 0, sizeof(physicalDeviceVariablePointersFeatures));
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_variable_pointers")) )
 +      {
 +              physicalDeviceVariablePointersFeatures.sType = getStructureType<VkPhysicalDeviceVariablePointersFeatures>();
 +              *nextPtr = &physicalDeviceVariablePointersFeatures;
 +              nextPtr  = &physicalDeviceVariablePointersFeatures.pNext;
 +      }
 +
 +      vk::VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT physicalDeviceVertexAttributeDivisorFeaturesEXT;
 +      deMemset(&physicalDeviceVertexAttributeDivisorFeaturesEXT, 0, sizeof(physicalDeviceVertexAttributeDivisorFeaturesEXT));
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_vertex_attribute_divisor")) )
 +      {
 +              physicalDeviceVertexAttributeDivisorFeaturesEXT.sType = getStructureType<VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT>();
 +              *nextPtr = &physicalDeviceVertexAttributeDivisorFeaturesEXT;
 +              nextPtr  = &physicalDeviceVertexAttributeDivisorFeaturesEXT.pNext;
 +      }
 +
++      vk::VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT physicalDeviceVertexInputDynamicStateFeaturesEXT;
++      deMemset(&physicalDeviceVertexInputDynamicStateFeaturesEXT, 0, sizeof(physicalDeviceVertexInputDynamicStateFeaturesEXT));
++
++      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_vertex_input_dynamic_state")) )
++      {
++              physicalDeviceVertexInputDynamicStateFeaturesEXT.sType = getStructureType<VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT>();
++              *nextPtr = &physicalDeviceVertexInputDynamicStateFeaturesEXT;
++              nextPtr  = &physicalDeviceVertexInputDynamicStateFeaturesEXT.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;
 +      }
 +
 +      vk::VkPhysicalDeviceVulkanMemoryModelFeatures physicalDeviceVulkanMemoryModelFeatures;
 +      deMemset(&physicalDeviceVulkanMemoryModelFeatures, 0, sizeof(physicalDeviceVulkanMemoryModelFeatures));
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_vulkan_memory_model")) )
 +      {
 +              physicalDeviceVulkanMemoryModelFeatures.sType = getStructureType<VkPhysicalDeviceVulkanMemoryModelFeatures>();
 +              *nextPtr = &physicalDeviceVulkanMemoryModelFeatures;
 +              nextPtr  = &physicalDeviceVulkanMemoryModelFeatures.pNext;
 +      }
 +
++      vk::VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT physicalDeviceYcbcr2Plane444FormatsFeaturesEXT;
++      deMemset(&physicalDeviceYcbcr2Plane444FormatsFeaturesEXT, 0, sizeof(physicalDeviceYcbcr2Plane444FormatsFeaturesEXT));
++
++      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_ycbcr_2plane_444_formats")) )
++      {
++              physicalDeviceYcbcr2Plane444FormatsFeaturesEXT.sType = getStructureType<VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT>();
++              *nextPtr = &physicalDeviceYcbcr2Plane444FormatsFeaturesEXT;
++              nextPtr  = &physicalDeviceYcbcr2Plane444FormatsFeaturesEXT.pNext;
++      }
++
 +      vk::VkPhysicalDeviceYcbcrImageArraysFeaturesEXT physicalDeviceYcbcrImageArraysFeaturesEXT;
 +      deMemset(&physicalDeviceYcbcrImageArraysFeaturesEXT, 0, sizeof(physicalDeviceYcbcrImageArraysFeaturesEXT));
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_ycbcr_image_arrays")) )
 +      {
 +              physicalDeviceYcbcrImageArraysFeaturesEXT.sType = getStructureType<VkPhysicalDeviceYcbcrImageArraysFeaturesEXT>();
 +              *nextPtr = &physicalDeviceYcbcrImageArraysFeaturesEXT;
 +              nextPtr  = &physicalDeviceYcbcrImageArraysFeaturesEXT.pNext;
 +      }
 +
 +      context.getInstanceInterface().getPhysicalDeviceFeatures2(context.getPhysicalDevice(), &coreFeatures);
 +      bool result = true;
 +
 +      {
 +              if ( coreFeatures.features.robustBufferAccess == VK_FALSE )
 +              {
 +                      log << tcu::TestLog::Message << "Mandatory feature robustBufferAccess not supported" << tcu::TestLog::EndMessage;
 +                      result = false;
 +              }
 +      }
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) )
 +      {
 +              if ( coreFeatures.features.shaderSampledImageArrayDynamicIndexing == VK_FALSE )
 +              {
 +                      log << tcu::TestLog::Message << "Mandatory feature shaderSampledImageArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage;
 +                      result = false;
 +              }
 +      }
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) )
 +      {
 +              if ( coreFeatures.features.shaderStorageBufferArrayDynamicIndexing == VK_FALSE )
 +              {
 +                      log << tcu::TestLog::Message << "Mandatory feature shaderStorageBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage;
 +                      result = false;
 +              }
 +      }
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_8bit_storage")) )
 +      {
 +              if ( physicalDevice8BitStorageFeatures.storageBuffer8BitAccess == VK_FALSE )
 +              {
 +                      log << tcu::TestLog::Message << "Mandatory feature storageBuffer8BitAccess not supported" << tcu::TestLog::EndMessage;
 +                      result = false;
 +              }
 +      }
 +
 +      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 )
 +              {
 +                      log << tcu::TestLog::Message << "Mandatory feature multiview not supported" << tcu::TestLog::EndMessage;
 +                      result = false;
 +              }
 +      }
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_multiview")) )
 +      {
 +              if ( physicalDeviceMultiviewFeatures.multiview == VK_FALSE )
 +              {
 +                      log << tcu::TestLog::Message << "Mandatory feature multiview not supported" << tcu::TestLog::EndMessage;
 +                      result = false;
 +              }
 +      }
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_variable_pointers")) )
 +      {
 +              if ( physicalDeviceVariablePointersFeatures.variablePointersStorageBuffer == VK_FALSE )
 +              {
 +                      log << tcu::TestLog::Message << "Mandatory feature variablePointersStorageBuffer not supported" << tcu::TestLog::EndMessage;
 +                      result = false;
 +              }
 +      }
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) )
 +      {
 +              if ( physicalDeviceDescriptorIndexingFeatures.shaderUniformTexelBufferArrayDynamicIndexing == VK_FALSE )
 +              {
 +                      log << tcu::TestLog::Message << "Mandatory feature shaderUniformTexelBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage;
 +                      result = false;
 +              }
 +      }
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) )
 +      {
 +              if ( physicalDeviceDescriptorIndexingFeatures.shaderStorageTexelBufferArrayDynamicIndexing == VK_FALSE )
 +              {
 +                      log << tcu::TestLog::Message << "Mandatory feature shaderStorageTexelBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage;
 +                      result = false;
 +              }
 +      }
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) )
 +      {
 +              if ( physicalDeviceDescriptorIndexingFeatures.shaderSampledImageArrayNonUniformIndexing == VK_FALSE )
 +              {
 +                      log << tcu::TestLog::Message << "Mandatory feature shaderSampledImageArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage;
 +                      result = false;
 +              }
 +      }
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) )
 +      {
 +              if ( physicalDeviceDescriptorIndexingFeatures.shaderStorageBufferArrayNonUniformIndexing == VK_FALSE )
 +              {
 +                      log << tcu::TestLog::Message << "Mandatory feature shaderStorageBufferArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage;
 +                      result = false;
 +              }
 +      }
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) )
 +      {
 +              if ( physicalDeviceDescriptorIndexingFeatures.shaderUniformTexelBufferArrayNonUniformIndexing == VK_FALSE )
 +              {
 +                      log << tcu::TestLog::Message << "Mandatory feature shaderUniformTexelBufferArrayNonUniformIndexing not supported" << tcu::TestLog::EndMessage;
 +                      result = false;
 +              }
 +      }
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) )
 +      {
 +              if ( physicalDeviceDescriptorIndexingFeatures.descriptorBindingSampledImageUpdateAfterBind == VK_FALSE )
 +              {
 +                      log << tcu::TestLog::Message << "Mandatory feature descriptorBindingSampledImageUpdateAfterBind not supported" << tcu::TestLog::EndMessage;
 +                      result = false;
 +              }
 +      }
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) )
 +      {
 +              if ( physicalDeviceDescriptorIndexingFeatures.descriptorBindingStorageImageUpdateAfterBind == VK_FALSE )
 +              {
 +                      log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageImageUpdateAfterBind not supported" << tcu::TestLog::EndMessage;
 +                      result = false;
 +              }
 +      }
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) )
 +      {
 +              if ( physicalDeviceDescriptorIndexingFeatures.descriptorBindingStorageBufferUpdateAfterBind == VK_FALSE )
 +              {
 +                      log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage;
 +                      result = false;
 +              }
 +      }
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) )
 +      {
 +              if ( physicalDeviceDescriptorIndexingFeatures.descriptorBindingUniformTexelBufferUpdateAfterBind == VK_FALSE )
 +              {
 +                      log << tcu::TestLog::Message << "Mandatory feature descriptorBindingUniformTexelBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage;
 +                      result = false;
 +              }
 +      }
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) )
 +      {
 +              if ( physicalDeviceDescriptorIndexingFeatures.descriptorBindingStorageTexelBufferUpdateAfterBind == VK_FALSE )
 +              {
 +                      log << tcu::TestLog::Message << "Mandatory feature descriptorBindingStorageTexelBufferUpdateAfterBind not supported" << tcu::TestLog::EndMessage;
 +                      result = false;
 +              }
 +      }
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) )
 +      {
 +              if ( physicalDeviceDescriptorIndexingFeatures.descriptorBindingUpdateUnusedWhilePending == VK_FALSE )
 +              {
 +                      log << tcu::TestLog::Message << "Mandatory feature descriptorBindingUpdateUnusedWhilePending not supported" << tcu::TestLog::EndMessage;
 +                      result = false;
 +              }
 +      }
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) )
 +      {
 +              if ( physicalDeviceDescriptorIndexingFeatures.descriptorBindingPartiallyBound == VK_FALSE )
 +              {
 +                      log << tcu::TestLog::Message << "Mandatory feature descriptorBindingPartiallyBound not supported" << tcu::TestLog::EndMessage;
 +                      result = false;
 +              }
 +      }
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_descriptor_indexing")) )
 +      {
 +              if ( physicalDeviceDescriptorIndexingFeatures.runtimeDescriptorArray == VK_FALSE )
 +              {
 +                      log << tcu::TestLog::Message << "Mandatory feature runtimeDescriptorArray not supported" << tcu::TestLog::EndMessage;
 +                      result = false;
 +              }
 +      }
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_scalar_block_layout")) )
 +      {
 +              if ( physicalDeviceScalarBlockLayoutFeatures.scalarBlockLayout == VK_FALSE )
 +              {
 +                      log << tcu::TestLog::Message << "Mandatory feature scalarBlockLayout not supported" << tcu::TestLog::EndMessage;
 +                      result = false;
 +              }
 +      }
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_uniform_buffer_standard_layout")) )
 +      {
 +              if ( physicalDeviceUniformBufferStandardLayoutFeatures.uniformBufferStandardLayout == VK_FALSE )
 +              {
 +                      log << tcu::TestLog::Message << "Mandatory feature uniformBufferStandardLayout not supported" << tcu::TestLog::EndMessage;
 +                      result = false;
 +              }
 +      }
 +
 +      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 ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_subgroup_extended_types")) )
 +      {
 +              if ( physicalDeviceShaderSubgroupExtendedTypesFeatures.shaderSubgroupExtendedTypes == VK_FALSE )
 +              {
 +                      log << tcu::TestLog::Message << "Mandatory feature shaderSubgroupExtendedTypes not supported" << tcu::TestLog::EndMessage;
 +                      result = false;
 +              }
 +      }
 +
 +      if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) )
 +      {
 +              if ( physicalDeviceVulkan12Features.shaderSubgroupExtendedTypes == VK_FALSE )
 +              {
 +                      log << tcu::TestLog::Message << "Mandatory feature shaderSubgroupExtendedTypes not supported" << tcu::TestLog::EndMessage;
 +                      result = false;
 +              }
 +      }
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_imageless_framebuffer")) )
 +      {
 +              if ( physicalDeviceImagelessFramebufferFeatures.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.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 ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_separate_depth_stencil_layouts")) )
 +      {
 +              if ( physicalDeviceSeparateDepthStencilLayoutsFeatures.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.separateDepthStencilLayouts == VK_FALSE )
 +              {
 +                      log << tcu::TestLog::Message << "Mandatory feature separateDepthStencilLayouts not supported" << tcu::TestLog::EndMessage;
 +                      result = false;
 +              }
 +      }
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_host_query_reset")) )
 +      {
 +              if ( physicalDeviceHostQueryResetFeatures.hostQueryReset == VK_FALSE )
 +              {
 +                      log << tcu::TestLog::Message << "Mandatory feature hostQueryReset 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 ( physicalDeviceTimelineSemaphoreFeatures.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)) )
 +      {
 +              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 ( coreFeatures.features.shaderSampledImageArrayDynamicIndexing == VK_FALSE )
++              {
++                      log << tcu::TestLog::Message << "Mandatory feature shaderSampledImageArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage;
++                      result = false;
++              }
++      }
++
++      if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && physicalDeviceVulkan12Features.descriptorIndexing )
++      {
++              if ( coreFeatures.features.shaderStorageBufferArrayDynamicIndexing == VK_FALSE )
++              {
++                      log << tcu::TestLog::Message << "Mandatory feature shaderStorageBufferArrayDynamicIndexing 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;
 +              }
 +      }
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_texture_compression_astc_hdr")) )
 +      {
 +              if ( physicalDeviceTextureCompressionASTCHDRFeaturesEXT.textureCompressionASTC_HDR == VK_FALSE )
 +              {
 +                      log << tcu::TestLog::Message << "Mandatory feature textureCompressionASTC_HDR not supported" << tcu::TestLog::EndMessage;
 +                      result = false;
 +              }
 +      }
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_depth_clip_enable")) )
 +      {
 +              if ( physicalDeviceDepthClipEnableFeaturesEXT.depthClipEnable == VK_FALSE )
 +              {
 +                      log << tcu::TestLog::Message << "Mandatory feature depthClipEnable not supported" << tcu::TestLog::EndMessage;
 +                      result = false;
 +              }
 +      }
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_ycbcr_image_arrays")) )
 +      {
 +              if ( physicalDeviceYcbcrImageArraysFeaturesEXT.ycbcrImageArrays == VK_FALSE )
 +              {
 +                      log << tcu::TestLog::Message << "Mandatory feature ycbcrImageArrays not supported" << tcu::TestLog::EndMessage;
 +                      result = false;
 +              }
 +      }
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_index_type_uint8")) )
 +      {
 +              if ( physicalDeviceIndexTypeUint8FeaturesEXT.indexTypeUint8 == VK_FALSE )
 +              {
 +                      log << tcu::TestLog::Message << "Mandatory feature indexTypeUint8 not supported" << tcu::TestLog::EndMessage;
 +                      result = false;
 +              }
 +      }
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_demote_to_helper_invocation")) )
 +      {
 +              if ( physicalDeviceShaderDemoteToHelperInvocationFeaturesEXT.shaderDemoteToHelperInvocation == VK_FALSE )
 +              {
 +                      log << tcu::TestLog::Message << "Mandatory feature shaderDemoteToHelperInvocation not supported" << tcu::TestLog::EndMessage;
 +                      result = false;
 +              }
 +      }
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_texel_buffer_alignment")) )
 +      {
 +              if ( physicalDeviceTexelBufferAlignmentFeaturesEXT.texelBufferAlignment == VK_FALSE )
 +              {
 +                      log << tcu::TestLog::Message << "Mandatory feature texelBufferAlignment not supported" << tcu::TestLog::EndMessage;
 +                      result = false;
 +              }
 +      }
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_vulkan_memory_model")) )
 +      {
 +              if ( physicalDeviceVulkanMemoryModelFeatures.vulkanMemoryModel == VK_FALSE )
 +              {
 +                      log << tcu::TestLog::Message << "Mandatory feature vulkanMemoryModel not supported" << tcu::TestLog::EndMessage;
 +                      result = false;
 +              }
 +      }
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_buffer_device_address")) )
 +      {
 +              if ( physicalDeviceBufferDeviceAddressFeatures.bufferDeviceAddress == VK_FALSE )
 +              {
 +                      log << tcu::TestLog::Message << "Mandatory feature bufferDeviceAddress not supported" << tcu::TestLog::EndMessage;
 +                      result = false;
 +              }
 +      }
 +
++      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_performance_query")) )
++      {
++              if ( physicalDevicePerformanceQueryFeaturesKHR.performanceCounterQueryPools == VK_FALSE )
++              {
++                      log << tcu::TestLog::Message << "Mandatory feature performanceCounterQueryPools not supported" << tcu::TestLog::EndMessage;
++                      result = false;
++              }
++      }
++
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_vertex_attribute_divisor")) )
 +      {
 +              if ( physicalDeviceVertexAttributeDivisorFeaturesEXT.vertexAttributeInstanceRateDivisor == VK_FALSE )
 +              {
 +                      log << tcu::TestLog::Message << "Mandatory feature vertexAttributeInstanceRateDivisor not supported" << tcu::TestLog::EndMessage;
 +                      result = false;
 +              }
 +      }
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_clock")) )
 +      {
 +              if ( physicalDeviceShaderClockFeaturesKHR.shaderSubgroupClock == VK_FALSE )
 +              {
 +                      log << tcu::TestLog::Message << "Mandatory feature shaderSubgroupClock not supported" << tcu::TestLog::EndMessage;
 +                      result = false;
 +              }
 +      }
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_atomic_int64")) )
 +      {
 +              if ( physicalDeviceShaderAtomicInt64Features.shaderBufferInt64Atomics == VK_FALSE )
 +              {
 +                      log << tcu::TestLog::Message << "Mandatory feature shaderBufferInt64Atomics not supported" << tcu::TestLog::EndMessage;
 +                      result = false;
 +              }
 +      }
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_16bit_storage")) )
 +      {
 +              if ( physicalDevice16BitStorageFeatures.storageBuffer16BitAccess == VK_FALSE )
 +              {
 +                      log << tcu::TestLog::Message << "Mandatory feature storageBuffer16BitAccess not supported" << tcu::TestLog::EndMessage;
 +                      result = false;
 +              }
 +      }
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_float16_int8")) )
 +      {
 +              if ( ( physicalDeviceShaderFloat16Int8Features.shaderFloat16 == VK_FALSE ) && ( physicalDeviceShaderFloat16Int8Features.shaderInt8 == VK_FALSE ) )
 +              {
 +                      log << tcu::TestLog::Message << "Mandatory feature shaderFloat16 or shaderInt8 not supported" << tcu::TestLog::EndMessage;
 +                      result = false;
 +              }
 +      }
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_fragment_shader_interlock")) )
 +      {
 +              if ( ( physicalDeviceFragmentShaderInterlockFeaturesEXT.fragmentShaderSampleInterlock == VK_FALSE ) && ( physicalDeviceFragmentShaderInterlockFeaturesEXT.fragmentShaderPixelInterlock == VK_FALSE ) && ( physicalDeviceFragmentShaderInterlockFeaturesEXT.fragmentShaderShadingRateInterlock == VK_FALSE ) )
 +              {
 +                      log << tcu::TestLog::Message << "Mandatory feature fragmentShaderSampleInterlock or fragmentShaderPixelInterlock or fragmentShaderShadingRateInterlock not supported" << tcu::TestLog::EndMessage;
 +                      result = false;
 +              }
 +      }
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_line_rasterization")) )
 +      {
 +              if ( ( physicalDeviceLineRasterizationFeaturesEXT.rectangularLines == VK_FALSE ) && ( physicalDeviceLineRasterizationFeaturesEXT.bresenhamLines == VK_FALSE ) && ( physicalDeviceLineRasterizationFeaturesEXT.smoothLines == VK_FALSE ) && ( physicalDeviceLineRasterizationFeaturesEXT.stippledRectangularLines == VK_FALSE ) && ( physicalDeviceLineRasterizationFeaturesEXT.stippledBresenhamLines == VK_FALSE ) && ( physicalDeviceLineRasterizationFeaturesEXT.stippledSmoothLines == VK_FALSE ) )
 +              {
 +                      log << tcu::TestLog::Message << "Mandatory feature rectangularLines or bresenhamLines or smoothLines or stippledRectangularLines or stippledBresenhamLines or stippledSmoothLines not supported" << tcu::TestLog::EndMessage;
 +                      result = false;
 +              }
 +      }
 +
-               if ( physicalDeviceSamplerYcbcrConversionFeatures.samplerYcbcrConversion == VK_FALSE )
++      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_synchronization2")) )
 +      {
-                       log << tcu::TestLog::Message << "Mandatory feature samplerYcbcrConversion not supported" << tcu::TestLog::EndMessage;
++              if ( physicalDeviceSynchronization2FeaturesKHR.synchronization2 == VK_FALSE )
 +              {
++                      log << tcu::TestLog::Message << "Mandatory feature synchronization2 not supported" << tcu::TestLog::EndMessage;
 +                      result = false;
 +              }
 +      }
 +
 +      if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_draw_indirect_count")) )
 +      {
 +              if ( physicalDeviceVulkan12Features.drawIndirectCount == VK_FALSE )
 +              {
 +                      log << tcu::TestLog::Message << "Mandatory feature drawIndirectCount not supported" << tcu::TestLog::EndMessage;
 +                      result = false;
 +              }
 +      }
 +
 +      if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_sampler_mirror_clamp_to_edge")) )
 +      {
 +              if ( physicalDeviceVulkan12Features.samplerMirrorClampToEdge == VK_FALSE )
 +              {
 +                      log << tcu::TestLog::Message << "Mandatory feature samplerMirrorClampToEdge not supported" << tcu::TestLog::EndMessage;
 +                      result = false;
 +              }
 +      }
 +
 +      if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_sampler_filter_minmax")) )
 +      {
 +              if ( physicalDeviceVulkan12Features.samplerFilterMinmax == VK_FALSE )
 +              {
 +                      log << tcu::TestLog::Message << "Mandatory feature samplerFilterMinmax not supported" << tcu::TestLog::EndMessage;
 +                      result = false;
 +              }
 +      }
 +
 +      if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_viewport_index_layer")) )
 +      {
 +              if ( physicalDeviceVulkan12Features.shaderOutputViewportIndex == VK_FALSE )
 +              {
 +                      log << tcu::TestLog::Message << "Mandatory feature shaderOutputViewportIndex not supported" << tcu::TestLog::EndMessage;
 +                      result = false;
 +              }
 +      }
 +
 +      if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_viewport_index_layer")) )
 +      {
 +              if ( physicalDeviceVulkan12Features.shaderOutputLayer == VK_FALSE )
 +              {
 +                      log << tcu::TestLog::Message << "Mandatory feature shaderOutputLayer not supported" << tcu::TestLog::EndMessage;
 +                      result = false;
 +              }
 +      }
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_shader_terminate_invocation")) )
 +      {
 +              if ( physicalDeviceShaderTerminateInvocationFeaturesKHR.shaderTerminateInvocation == VK_FALSE )
 +              {
 +                      log << tcu::TestLog::Message << "Mandatory feature shaderTerminateInvocation not supported" << tcu::TestLog::EndMessage;
 +                      result = false;
 +              }
 +      }
 +
 +      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_shader_image_atomic_int64")) )
 +      {
 +              if ( physicalDeviceShaderImageAtomicInt64FeaturesEXT.shaderImageInt64Atomics == VK_FALSE )
 +              {
 +                      log << tcu::TestLog::Message << "Mandatory feature shaderImageInt64Atomics not supported" << tcu::TestLog::EndMessage;
 +                      result = false;
 +              }
 +      }
 +
++      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_4444_formats")) )
++      {
++              if ( physicalDevice4444FormatsFeaturesEXT.formatA4R4G4B4 == VK_FALSE )
++              {
++                      log << tcu::TestLog::Message << "Mandatory feature formatA4R4G4B4 not supported" << tcu::TestLog::EndMessage;
++                      result = false;
++              }
++      }
++
++      if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
++      {
++              if ( coreFeatures.features.shaderSampledImageArrayDynamicIndexing == VK_FALSE )
++              {
++                      log << tcu::TestLog::Message << "Mandatory feature shaderSampledImageArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage;
++                      result = false;
++              }
++      }
++
++      if ( context.contextSupports(vk::ApiVersion(1, 1, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
++      {
++              if ( coreFeatures.features.shaderStorageBufferArrayDynamicIndexing == VK_FALSE )
++              {
++                      log << tcu::TestLog::Message << "Mandatory feature shaderStorageBufferArrayDynamicIndexing not supported" << tcu::TestLog::EndMessage;
++                      result = false;
++              }
++      }
++
++      if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
++      {
++              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)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
++      {
++              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)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
++      {
++              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)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
++      {
++              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)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
++      {
++              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)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
++      {
++              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)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
++      {
++              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)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
++      {
++              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)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
++      {
++              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)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
++      {
++              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)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
++      {
++              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)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
++      {
++              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)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
++      {
++              if ( physicalDeviceVulkan12Features.runtimeDescriptorArray == VK_FALSE )
++              {
++                      log << tcu::TestLog::Message << "Mandatory feature runtimeDescriptorArray not supported" << tcu::TestLog::EndMessage;
++                      result = false;
++              }
++      }
++
++      if ( context.contextSupports(vk::ApiVersion(1, 2, 0)) && isExtensionSupported(deviceExtensions, RequiredExtension("VK_KHR_acceleration_structure")) )
++      {
++              if ( physicalDeviceVulkan12Features.bufferDeviceAddress == VK_FALSE )
++              {
++                      log << tcu::TestLog::Message << "Mandatory feature bufferDeviceAddress not supported" << tcu::TestLog::EndMessage;
++                      result = false;
++              }
++      }
++
++      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_vertex_input_dynamic_state")) )
++      {
++              if ( physicalDeviceVertexInputDynamicStateFeaturesEXT.vertexInputDynamicState == VK_FALSE )
++              {
++                      log << tcu::TestLog::Message << "Mandatory feature vertexInputDynamicState not supported" << tcu::TestLog::EndMessage;
++                      result = false;
++              }
++      }
++
++      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_color_write_enable")) )
++      {
++              if ( physicalDeviceColorWriteEnableFeaturesEXT.colorWriteEnable == VK_FALSE )
++              {
++                      log << tcu::TestLog::Message << "Mandatory feature colorWriteEnable not supported" << tcu::TestLog::EndMessage;
++                      result = false;
++              }
++      }
++
++      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_ycbcr_2plane_444_formats")) )
++      {
++              if ( physicalDeviceYcbcr2Plane444FormatsFeaturesEXT.ycbcr2plane444Formats == VK_FALSE )
++              {
++                      log << tcu::TestLog::Message << "Mandatory feature ycbcr2plane444Formats not supported" << tcu::TestLog::EndMessage;
++                      result = false;
++              }
++      }
++
++      if ( isExtensionSupported(deviceExtensions, RequiredExtension("VK_EXT_extended_dynamic_state2")) )
++      {
++              if ( physicalDeviceExtendedDynamicState2FeaturesEXT.extendedDynamicState2 == VK_FALSE )
++              {
++                      log << tcu::TestLog::Message << "Mandatory feature extendedDynamicState2 not supported" << tcu::TestLog::EndMessage;
++                      result = false;
++              }
++      }
++
 +      return result;
 +}
 +
index 293454e,0000000..2fde84d
mode 100644,000000..100644
--- /dev/null
@@@ -1,1894 -1,0 +1,2067 @@@
- VKAPI_ATTR void VKAPI_CALL getImageSparseMemoryRequirements (VkDevice device, VkImage image, deUint32* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements* pSparseMemoryRequirements)
- {
-       DE_UNREF(device);
-       DE_UNREF(image);
-       DE_UNREF(pSparseMemoryRequirementCount);
-       DE_UNREF(pSparseMemoryRequirements);
- }
- VKAPI_ATTR void VKAPI_CALL getPhysicalDeviceSparseImageFormatProperties (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, deUint32* pPropertyCount, VkSparseImageFormatProperties* pProperties)
- {
-       DE_UNREF(physicalDevice);
-       DE_UNREF(format);
-       DE_UNREF(type);
-       DE_UNREF(samples);
-       DE_UNREF(usage);
-       DE_UNREF(tiling);
-       DE_UNREF(pPropertyCount);
-       DE_UNREF(pProperties);
- }
- VKAPI_ATTR VkResult VKAPI_CALL queueBindSparse (VkQueue queue, deUint32 bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence)
- {
-       DE_UNREF(queue);
-       DE_UNREF(bindInfoCount);
-       DE_UNREF(pBindInfo);
-       DE_UNREF(fence);
-       return VK_SUCCESS;
- }
 +/* WARNING: This is auto-generated file. Do not modify, since changes will
 + * be lost! Modify the generating script instead.
 + */
 +VKAPI_ATTR VkResult VKAPI_CALL createInstance (const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkInstance* pInstance)
 +{
 +      DE_UNREF(pAllocator);
 +      VK_NULL_RETURN((*pInstance = allocateHandle<Instance, VkInstance>(pCreateInfo, pAllocator)));
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL createDevice (VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice)
 +{
 +      DE_UNREF(pAllocator);
 +      VK_NULL_RETURN((*pDevice = allocateHandle<Device, VkDevice>(physicalDevice, pCreateInfo, pAllocator)));
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL createFence (VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence)
 +{
 +      DE_UNREF(pAllocator);
 +      VK_NULL_RETURN((*pFence = allocateNonDispHandle<Fence, VkFence>(device, pCreateInfo, pAllocator)));
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL createSemaphore (VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore)
 +{
 +      DE_UNREF(pAllocator);
 +      VK_NULL_RETURN((*pSemaphore = allocateNonDispHandle<Semaphore, VkSemaphore>(device, pCreateInfo, pAllocator)));
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL createEvent (VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkEvent* pEvent)
 +{
 +      DE_UNREF(pAllocator);
 +      VK_NULL_RETURN((*pEvent = allocateNonDispHandle<Event, VkEvent>(device, pCreateInfo, pAllocator)));
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL createQueryPool (VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkQueryPool* pQueryPool)
 +{
 +      DE_UNREF(pAllocator);
 +      VK_NULL_RETURN((*pQueryPool = allocateNonDispHandle<QueryPool, VkQueryPool>(device, pCreateInfo, pAllocator)));
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL createBuffer (VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer)
 +{
 +      DE_UNREF(pAllocator);
 +      VK_NULL_RETURN((*pBuffer = allocateNonDispHandle<Buffer, VkBuffer>(device, pCreateInfo, pAllocator)));
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL createBufferView (VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView)
 +{
 +      DE_UNREF(pAllocator);
 +      VK_NULL_RETURN((*pView = allocateNonDispHandle<BufferView, VkBufferView>(device, pCreateInfo, pAllocator)));
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL createImage (VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImage* pImage)
 +{
 +      DE_UNREF(pAllocator);
 +      VK_NULL_RETURN((*pImage = allocateNonDispHandle<Image, VkImage>(device, pCreateInfo, pAllocator)));
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL createImageView (VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImageView* pView)
 +{
 +      DE_UNREF(pAllocator);
 +      VK_NULL_RETURN((*pView = allocateNonDispHandle<ImageView, VkImageView>(device, pCreateInfo, pAllocator)));
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL createPipelineCache (VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache)
 +{
 +      DE_UNREF(pAllocator);
 +      VK_NULL_RETURN((*pPipelineCache = allocateNonDispHandle<PipelineCache, VkPipelineCache>(device, pCreateInfo, pAllocator)));
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL createPipelineLayout (VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout)
 +{
 +      DE_UNREF(pAllocator);
 +      VK_NULL_RETURN((*pPipelineLayout = allocateNonDispHandle<PipelineLayout, VkPipelineLayout>(device, pCreateInfo, pAllocator)));
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL createSampler (VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler)
 +{
 +      DE_UNREF(pAllocator);
 +      VK_NULL_RETURN((*pSampler = allocateNonDispHandle<Sampler, VkSampler>(device, pCreateInfo, pAllocator)));
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL createDescriptorSetLayout (VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout)
 +{
 +      DE_UNREF(pAllocator);
 +      VK_NULL_RETURN((*pSetLayout = allocateNonDispHandle<DescriptorSetLayout, VkDescriptorSetLayout>(device, pCreateInfo, pAllocator)));
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL createDescriptorPool (VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool)
 +{
 +      DE_UNREF(pAllocator);
 +      VK_NULL_RETURN((*pDescriptorPool = allocateNonDispHandle<DescriptorPool, VkDescriptorPool>(device, pCreateInfo, pAllocator)));
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL createFramebuffer (VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFramebuffer* pFramebuffer)
 +{
 +      DE_UNREF(pAllocator);
 +      VK_NULL_RETURN((*pFramebuffer = allocateNonDispHandle<Framebuffer, VkFramebuffer>(device, pCreateInfo, pAllocator)));
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL createRenderPass (VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass)
 +{
 +      DE_UNREF(pAllocator);
 +      VK_NULL_RETURN((*pRenderPass = allocateNonDispHandle<RenderPass, VkRenderPass>(device, pCreateInfo, pAllocator)));
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL createCommandPool (VkDevice device, const VkCommandPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCommandPool* pCommandPool)
 +{
 +      DE_UNREF(pAllocator);
 +      VK_NULL_RETURN((*pCommandPool = allocateNonDispHandle<CommandPool, VkCommandPool>(device, pCreateInfo, pAllocator)));
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL createSamplerYcbcrConversion (VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion)
 +{
 +      DE_UNREF(pAllocator);
 +      VK_NULL_RETURN((*pYcbcrConversion = allocateNonDispHandle<SamplerYcbcrConversion, VkSamplerYcbcrConversion>(device, pCreateInfo, pAllocator)));
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL createRenderPass2 (VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass)
 +{
 +      DE_UNREF(pAllocator);
 +      VK_NULL_RETURN((*pRenderPass = allocateNonDispHandle<RenderPass, VkRenderPass>(device, pCreateInfo, pAllocator)));
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL createSwapchainKHR (VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain)
 +{
 +      DE_UNREF(pAllocator);
 +      VK_NULL_RETURN((*pSwapchain = allocateNonDispHandle<SwapchainKHR, VkSwapchainKHR>(device, pCreateInfo, pAllocator)));
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL createDisplayPlaneSurfaceKHR (VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface)
 +{
 +      DE_UNREF(pAllocator);
 +      VK_NULL_RETURN((*pSurface = allocateNonDispHandle<SurfaceKHR, VkSurfaceKHR>(instance, pCreateInfo, pAllocator)));
 +}
 +
++VKAPI_ATTR VkResult VKAPI_CALL createDebugUtilsMessengerEXT (VkInstance instance, const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugUtilsMessengerEXT* pMessenger)
++{
++      DE_UNREF(pAllocator);
++      VK_NULL_RETURN((*pMessenger = allocateNonDispHandle<DebugUtilsMessengerEXT, VkDebugUtilsMessengerEXT>(instance, pCreateInfo, pAllocator)));
++}
++
 +VKAPI_ATTR VkResult VKAPI_CALL createHeadlessSurfaceEXT (VkInstance instance, const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface)
 +{
 +      DE_UNREF(pAllocator);
 +      VK_NULL_RETURN((*pSurface = allocateNonDispHandle<SurfaceKHR, VkSurfaceKHR>(instance, pCreateInfo, pAllocator)));
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL destroyInstance (VkInstance instance, const VkAllocationCallbacks* pAllocator)
 +{
 +      freeHandle<Instance, VkInstance>(instance, pAllocator);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL destroyDevice (VkDevice device, const VkAllocationCallbacks* pAllocator)
 +{
 +      freeHandle<Device, VkDevice>(device, pAllocator);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL destroyFence (VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator)
 +{
 +      DE_UNREF(device);
 +      freeNonDispHandle<Fence, VkFence>(fence, pAllocator);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL destroySemaphore (VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator)
 +{
 +      DE_UNREF(device);
 +      freeNonDispHandle<Semaphore, VkSemaphore>(semaphore, pAllocator);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL destroyEvent (VkDevice device, VkEvent event, const VkAllocationCallbacks* pAllocator)
 +{
 +      DE_UNREF(device);
 +      freeNonDispHandle<Event, VkEvent>(event, pAllocator);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL destroyBuffer (VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator)
 +{
 +      DE_UNREF(device);
 +      freeNonDispHandle<Buffer, VkBuffer>(buffer, pAllocator);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL destroyBufferView (VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* pAllocator)
 +{
 +      DE_UNREF(device);
 +      freeNonDispHandle<BufferView, VkBufferView>(bufferView, pAllocator);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL destroyImage (VkDevice device, VkImage image, const VkAllocationCallbacks* pAllocator)
 +{
 +      DE_UNREF(device);
 +      freeNonDispHandle<Image, VkImage>(image, pAllocator);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL destroyImageView (VkDevice device, VkImageView imageView, const VkAllocationCallbacks* pAllocator)
 +{
 +      DE_UNREF(device);
 +      freeNonDispHandle<ImageView, VkImageView>(imageView, pAllocator);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL destroyPipelineCache (VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator)
 +{
 +      DE_UNREF(device);
 +      freeNonDispHandle<PipelineCache, VkPipelineCache>(pipelineCache, pAllocator);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL destroyPipeline (VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator)
 +{
 +      DE_UNREF(device);
 +      freeNonDispHandle<Pipeline, VkPipeline>(pipeline, pAllocator);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL destroyPipelineLayout (VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* pAllocator)
 +{
 +      DE_UNREF(device);
 +      freeNonDispHandle<PipelineLayout, VkPipelineLayout>(pipelineLayout, pAllocator);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL destroySampler (VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator)
 +{
 +      DE_UNREF(device);
 +      freeNonDispHandle<Sampler, VkSampler>(sampler, pAllocator);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL destroyDescriptorSetLayout (VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* pAllocator)
 +{
 +      DE_UNREF(device);
 +      freeNonDispHandle<DescriptorSetLayout, VkDescriptorSetLayout>(descriptorSetLayout, pAllocator);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL destroyFramebuffer (VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator)
 +{
 +      DE_UNREF(device);
 +      freeNonDispHandle<Framebuffer, VkFramebuffer>(framebuffer, pAllocator);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL destroyRenderPass (VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator)
 +{
 +      DE_UNREF(device);
 +      freeNonDispHandle<RenderPass, VkRenderPass>(renderPass, pAllocator);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL destroySamplerYcbcrConversion (VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator)
 +{
 +      DE_UNREF(device);
 +      freeNonDispHandle<SamplerYcbcrConversion, VkSamplerYcbcrConversion>(ycbcrConversion, pAllocator);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL destroySurfaceKHR (VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks* pAllocator)
 +{
 +      DE_UNREF(instance);
 +      freeNonDispHandle<SurfaceKHR, VkSurfaceKHR>(surface, pAllocator);
 +}
 +
++VKAPI_ATTR void VKAPI_CALL destroyDebugUtilsMessengerEXT (VkInstance instance, VkDebugUtilsMessengerEXT messenger, const VkAllocationCallbacks* pAllocator)
++{
++      DE_UNREF(instance);
++      freeNonDispHandle<DebugUtilsMessengerEXT, VkDebugUtilsMessengerEXT>(messenger, pAllocator);
++}
++
 +VKAPI_ATTR VkResult VKAPI_CALL enumerateInstanceLayerProperties (deUint32* pPropertyCount, VkLayerProperties* pProperties)
 +{
 +      DE_UNREF(pPropertyCount);
 +      DE_UNREF(pProperties);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL enumerateDeviceLayerProperties (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkLayerProperties* pProperties)
 +{
 +      DE_UNREF(physicalDevice);
 +      DE_UNREF(pPropertyCount);
 +      DE_UNREF(pProperties);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL queueSubmit (VkQueue queue, deUint32 submitCount, const VkSubmitInfo* pSubmits, VkFence fence)
 +{
 +      DE_UNREF(queue);
 +      DE_UNREF(submitCount);
 +      DE_UNREF(pSubmits);
 +      DE_UNREF(fence);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL queueWaitIdle (VkQueue queue)
 +{
 +      DE_UNREF(queue);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL deviceWaitIdle (VkDevice device)
 +{
 +      DE_UNREF(device);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL flushMappedMemoryRanges (VkDevice device, deUint32 memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges)
 +{
 +      DE_UNREF(device);
 +      DE_UNREF(memoryRangeCount);
 +      DE_UNREF(pMemoryRanges);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL invalidateMappedMemoryRanges (VkDevice device, deUint32 memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges)
 +{
 +      DE_UNREF(device);
 +      DE_UNREF(memoryRangeCount);
 +      DE_UNREF(pMemoryRanges);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL getDeviceMemoryCommitment (VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes)
 +{
 +      DE_UNREF(device);
 +      DE_UNREF(memory);
 +      DE_UNREF(pCommittedMemoryInBytes);
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL bindBufferMemory (VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset)
 +{
 +      DE_UNREF(device);
 +      DE_UNREF(buffer);
 +      DE_UNREF(memory);
 +      DE_UNREF(memoryOffset);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL bindImageMemory (VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset)
 +{
 +      DE_UNREF(device);
 +      DE_UNREF(image);
 +      DE_UNREF(memory);
 +      DE_UNREF(memoryOffset);
 +      return VK_SUCCESS;
 +}
 +
- VKAPI_ATTR void VKAPI_CALL getCommandPoolMemoryConsumption (VkDevice device, VkCommandPool commandPool, VkCommandBuffer commandBuffer, VkCommandPoolMemoryConsumption* pConsumption)
- {
-       DE_UNREF(device);
-       DE_UNREF(commandPool);
-       DE_UNREF(commandBuffer);
-       DE_UNREF(pConsumption);
- }
- VKAPI_ATTR VkResult VKAPI_CALL getFaultData (VkDevice device, VkFaultQueryBehavior faultQueryBehavior, VkBool32* pUnrecordedFaults, deUint32* pFaultCount, VkFaultData* pFaults)
- {
-       DE_UNREF(device);
-       DE_UNREF(faultQueryBehavior);
-       DE_UNREF(pUnrecordedFaults);
-       DE_UNREF(pFaultCount);
-       DE_UNREF(pFaults);
-       return VK_SUCCESS;
- }
 +VKAPI_ATTR VkResult VKAPI_CALL resetFences (VkDevice device, deUint32 fenceCount, const VkFence* pFences)
 +{
 +      DE_UNREF(device);
 +      DE_UNREF(fenceCount);
 +      DE_UNREF(pFences);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL getFenceStatus (VkDevice device, VkFence fence)
 +{
 +      DE_UNREF(device);
 +      DE_UNREF(fence);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL waitForFences (VkDevice device, deUint32 fenceCount, const VkFence* pFences, VkBool32 waitAll, deUint64 timeout)
 +{
 +      DE_UNREF(device);
 +      DE_UNREF(fenceCount);
 +      DE_UNREF(pFences);
 +      DE_UNREF(waitAll);
 +      DE_UNREF(timeout);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL getEventStatus (VkDevice device, VkEvent event)
 +{
 +      DE_UNREF(device);
 +      DE_UNREF(event);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL setEvent (VkDevice device, VkEvent event)
 +{
 +      DE_UNREF(device);
 +      DE_UNREF(event);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL resetEvent (VkDevice device, VkEvent event)
 +{
 +      DE_UNREF(device);
 +      DE_UNREF(event);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL getQueryPoolResults (VkDevice device, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount, deUintptr dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags)
 +{
 +      DE_UNREF(device);
 +      DE_UNREF(queryPool);
 +      DE_UNREF(firstQuery);
 +      DE_UNREF(queryCount);
 +      DE_UNREF(dataSize);
 +      DE_UNREF(pData);
 +      DE_UNREF(stride);
 +      DE_UNREF(flags);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL getImageSubresourceLayout (VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout)
 +{
 +      DE_UNREF(device);
 +      DE_UNREF(image);
 +      DE_UNREF(pSubresource);
 +      DE_UNREF(pLayout);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL updateDescriptorSets (VkDevice device, deUint32 descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites, deUint32 descriptorCopyCount, const VkCopyDescriptorSet* pDescriptorCopies)
 +{
 +      DE_UNREF(device);
 +      DE_UNREF(descriptorWriteCount);
 +      DE_UNREF(pDescriptorWrites);
 +      DE_UNREF(descriptorCopyCount);
 +      DE_UNREF(pDescriptorCopies);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL getRenderAreaGranularity (VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity)
 +{
 +      DE_UNREF(device);
 +      DE_UNREF(renderPass);
 +      DE_UNREF(pGranularity);
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL resetCommandPool (VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags)
 +{
 +      DE_UNREF(device);
 +      DE_UNREF(commandPool);
 +      DE_UNREF(flags);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL beginCommandBuffer (VkCommandBuffer commandBuffer, const VkCommandBufferBeginInfo* pBeginInfo)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(pBeginInfo);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL endCommandBuffer (VkCommandBuffer commandBuffer)
 +{
 +      DE_UNREF(commandBuffer);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL resetCommandBuffer (VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(flags);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdBindPipeline (VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(pipelineBindPoint);
 +      DE_UNREF(pipeline);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdSetViewport (VkCommandBuffer commandBuffer, deUint32 firstViewport, deUint32 viewportCount, const VkViewport* pViewports)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(firstViewport);
 +      DE_UNREF(viewportCount);
 +      DE_UNREF(pViewports);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdSetScissor (VkCommandBuffer commandBuffer, deUint32 firstScissor, deUint32 scissorCount, const VkRect2D* pScissors)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(firstScissor);
 +      DE_UNREF(scissorCount);
 +      DE_UNREF(pScissors);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdSetLineWidth (VkCommandBuffer commandBuffer, float lineWidth)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(lineWidth);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdSetDepthBias (VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(depthBiasConstantFactor);
 +      DE_UNREF(depthBiasClamp);
 +      DE_UNREF(depthBiasSlopeFactor);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdSetBlendConstants (VkCommandBuffer commandBuffer, const float blendConstants[4])
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(blendConstants);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdSetDepthBounds (VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(minDepthBounds);
 +      DE_UNREF(maxDepthBounds);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdSetStencilCompareMask (VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, deUint32 compareMask)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(faceMask);
 +      DE_UNREF(compareMask);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdSetStencilWriteMask (VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, deUint32 writeMask)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(faceMask);
 +      DE_UNREF(writeMask);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdSetStencilReference (VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, deUint32 reference)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(faceMask);
 +      DE_UNREF(reference);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdBindDescriptorSets (VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, deUint32 firstSet, deUint32 descriptorSetCount, const VkDescriptorSet* pDescriptorSets, deUint32 dynamicOffsetCount, const deUint32* pDynamicOffsets)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(pipelineBindPoint);
 +      DE_UNREF(layout);
 +      DE_UNREF(firstSet);
 +      DE_UNREF(descriptorSetCount);
 +      DE_UNREF(pDescriptorSets);
 +      DE_UNREF(dynamicOffsetCount);
 +      DE_UNREF(pDynamicOffsets);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdBindIndexBuffer (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(buffer);
 +      DE_UNREF(offset);
 +      DE_UNREF(indexType);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdBindVertexBuffers (VkCommandBuffer commandBuffer, deUint32 firstBinding, deUint32 bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(firstBinding);
 +      DE_UNREF(bindingCount);
 +      DE_UNREF(pBuffers);
 +      DE_UNREF(pOffsets);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdDraw (VkCommandBuffer commandBuffer, deUint32 vertexCount, deUint32 instanceCount, deUint32 firstVertex, deUint32 firstInstance)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(vertexCount);
 +      DE_UNREF(instanceCount);
 +      DE_UNREF(firstVertex);
 +      DE_UNREF(firstInstance);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdDrawIndexed (VkCommandBuffer commandBuffer, deUint32 indexCount, deUint32 instanceCount, deUint32 firstIndex, deInt32 vertexOffset, deUint32 firstInstance)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(indexCount);
 +      DE_UNREF(instanceCount);
 +      DE_UNREF(firstIndex);
 +      DE_UNREF(vertexOffset);
 +      DE_UNREF(firstInstance);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdDrawIndirect (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, deUint32 drawCount, deUint32 stride)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(buffer);
 +      DE_UNREF(offset);
 +      DE_UNREF(drawCount);
 +      DE_UNREF(stride);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdDrawIndexedIndirect (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, deUint32 drawCount, deUint32 stride)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(buffer);
 +      DE_UNREF(offset);
 +      DE_UNREF(drawCount);
 +      DE_UNREF(stride);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdDispatch (VkCommandBuffer commandBuffer, deUint32 groupCountX, deUint32 groupCountY, deUint32 groupCountZ)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(groupCountX);
 +      DE_UNREF(groupCountY);
 +      DE_UNREF(groupCountZ);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdDispatchIndirect (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(buffer);
 +      DE_UNREF(offset);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdCopyBuffer (VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, deUint32 regionCount, const VkBufferCopy* pRegions)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(srcBuffer);
 +      DE_UNREF(dstBuffer);
 +      DE_UNREF(regionCount);
 +      DE_UNREF(pRegions);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdCopyImage (VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkImageCopy* pRegions)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(srcImage);
 +      DE_UNREF(srcImageLayout);
 +      DE_UNREF(dstImage);
 +      DE_UNREF(dstImageLayout);
 +      DE_UNREF(regionCount);
 +      DE_UNREF(pRegions);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdBlitImage (VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkImageBlit* pRegions, VkFilter filter)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(srcImage);
 +      DE_UNREF(srcImageLayout);
 +      DE_UNREF(dstImage);
 +      DE_UNREF(dstImageLayout);
 +      DE_UNREF(regionCount);
 +      DE_UNREF(pRegions);
 +      DE_UNREF(filter);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdCopyBufferToImage (VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkBufferImageCopy* pRegions)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(srcBuffer);
 +      DE_UNREF(dstImage);
 +      DE_UNREF(dstImageLayout);
 +      DE_UNREF(regionCount);
 +      DE_UNREF(pRegions);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdCopyImageToBuffer (VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, deUint32 regionCount, const VkBufferImageCopy* pRegions)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(srcImage);
 +      DE_UNREF(srcImageLayout);
 +      DE_UNREF(dstBuffer);
 +      DE_UNREF(regionCount);
 +      DE_UNREF(pRegions);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdUpdateBuffer (VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const void* pData)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(dstBuffer);
 +      DE_UNREF(dstOffset);
 +      DE_UNREF(dataSize);
 +      DE_UNREF(pData);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdFillBuffer (VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, deUint32 data)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(dstBuffer);
 +      DE_UNREF(dstOffset);
 +      DE_UNREF(size);
 +      DE_UNREF(data);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdClearColorImage (VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, deUint32 rangeCount, const VkImageSubresourceRange* pRanges)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(image);
 +      DE_UNREF(imageLayout);
 +      DE_UNREF(pColor);
 +      DE_UNREF(rangeCount);
 +      DE_UNREF(pRanges);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdClearDepthStencilImage (VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, deUint32 rangeCount, const VkImageSubresourceRange* pRanges)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(image);
 +      DE_UNREF(imageLayout);
 +      DE_UNREF(pDepthStencil);
 +      DE_UNREF(rangeCount);
 +      DE_UNREF(pRanges);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdClearAttachments (VkCommandBuffer commandBuffer, deUint32 attachmentCount, const VkClearAttachment* pAttachments, deUint32 rectCount, const VkClearRect* pRects)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(attachmentCount);
 +      DE_UNREF(pAttachments);
 +      DE_UNREF(rectCount);
 +      DE_UNREF(pRects);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdResolveImage (VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkImageResolve* pRegions)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(srcImage);
 +      DE_UNREF(srcImageLayout);
 +      DE_UNREF(dstImage);
 +      DE_UNREF(dstImageLayout);
 +      DE_UNREF(regionCount);
 +      DE_UNREF(pRegions);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdSetEvent (VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(event);
 +      DE_UNREF(stageMask);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdResetEvent (VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(event);
 +      DE_UNREF(stageMask);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdWaitEvents (VkCommandBuffer commandBuffer, deUint32 eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, deUint32 memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, deUint32 bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, deUint32 imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(eventCount);
 +      DE_UNREF(pEvents);
 +      DE_UNREF(srcStageMask);
 +      DE_UNREF(dstStageMask);
 +      DE_UNREF(memoryBarrierCount);
 +      DE_UNREF(pMemoryBarriers);
 +      DE_UNREF(bufferMemoryBarrierCount);
 +      DE_UNREF(pBufferMemoryBarriers);
 +      DE_UNREF(imageMemoryBarrierCount);
 +      DE_UNREF(pImageMemoryBarriers);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdPipelineBarrier (VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, deUint32 memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, deUint32 bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, deUint32 imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(srcStageMask);
 +      DE_UNREF(dstStageMask);
 +      DE_UNREF(dependencyFlags);
 +      DE_UNREF(memoryBarrierCount);
 +      DE_UNREF(pMemoryBarriers);
 +      DE_UNREF(bufferMemoryBarrierCount);
 +      DE_UNREF(pBufferMemoryBarriers);
 +      DE_UNREF(imageMemoryBarrierCount);
 +      DE_UNREF(pImageMemoryBarriers);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdBeginQuery (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query, VkQueryControlFlags flags)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(queryPool);
 +      DE_UNREF(query);
 +      DE_UNREF(flags);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdEndQuery (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(queryPool);
 +      DE_UNREF(query);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdResetQueryPool (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(queryPool);
 +      DE_UNREF(firstQuery);
 +      DE_UNREF(queryCount);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdWriteTimestamp (VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, deUint32 query)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(pipelineStage);
 +      DE_UNREF(queryPool);
 +      DE_UNREF(query);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdCopyQueryPoolResults (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(queryPool);
 +      DE_UNREF(firstQuery);
 +      DE_UNREF(queryCount);
 +      DE_UNREF(dstBuffer);
 +      DE_UNREF(dstOffset);
 +      DE_UNREF(stride);
 +      DE_UNREF(flags);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdPushConstants (VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, deUint32 offset, deUint32 size, const void* pValues)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(layout);
 +      DE_UNREF(stageFlags);
 +      DE_UNREF(offset);
 +      DE_UNREF(size);
 +      DE_UNREF(pValues);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdBeginRenderPass (VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(pRenderPassBegin);
 +      DE_UNREF(contents);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdNextSubpass (VkCommandBuffer commandBuffer, VkSubpassContents contents)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(contents);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdEndRenderPass (VkCommandBuffer commandBuffer)
 +{
 +      DE_UNREF(commandBuffer);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdExecuteCommands (VkCommandBuffer commandBuffer, deUint32 commandBufferCount, const VkCommandBuffer* pCommandBuffers)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(commandBufferCount);
 +      DE_UNREF(pCommandBuffers);
 +}
 +
- VKAPI_ATTR void VKAPI_CALL getImageSparseMemoryRequirements2 (VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, deUint32* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
- {
-       DE_UNREF(device);
-       DE_UNREF(pInfo);
-       DE_UNREF(pSparseMemoryRequirementCount);
-       DE_UNREF(pSparseMemoryRequirements);
- }
 +VKAPI_ATTR VkResult VKAPI_CALL enumerateInstanceVersion (deUint32* pApiVersion)
 +{
 +      DE_UNREF(pApiVersion);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL bindBufferMemory2 (VkDevice device, deUint32 bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos)
 +{
 +      DE_UNREF(device);
 +      DE_UNREF(bindInfoCount);
 +      DE_UNREF(pBindInfos);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL bindImageMemory2 (VkDevice device, deUint32 bindInfoCount, const VkBindImageMemoryInfo* pBindInfos)
 +{
 +      DE_UNREF(device);
 +      DE_UNREF(bindInfoCount);
 +      DE_UNREF(pBindInfos);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL getDeviceGroupPeerMemoryFeatures (VkDevice device, deUint32 heapIndex, deUint32 localDeviceIndex, deUint32 remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
 +{
 +      DE_UNREF(device);
 +      DE_UNREF(heapIndex);
 +      DE_UNREF(localDeviceIndex);
 +      DE_UNREF(remoteDeviceIndex);
 +      DE_UNREF(pPeerMemoryFeatures);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdSetDeviceMask (VkCommandBuffer commandBuffer, deUint32 deviceMask)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(deviceMask);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdDispatchBase (VkCommandBuffer commandBuffer, deUint32 baseGroupX, deUint32 baseGroupY, deUint32 baseGroupZ, deUint32 groupCountX, deUint32 groupCountY, deUint32 groupCountZ)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(baseGroupX);
 +      DE_UNREF(baseGroupY);
 +      DE_UNREF(baseGroupZ);
 +      DE_UNREF(groupCountX);
 +      DE_UNREF(groupCountY);
 +      DE_UNREF(groupCountZ);
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL enumeratePhysicalDeviceGroups (VkInstance instance, deUint32* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
 +{
 +      DE_UNREF(instance);
 +      DE_UNREF(pPhysicalDeviceGroupCount);
 +      DE_UNREF(pPhysicalDeviceGroupProperties);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL getImageMemoryRequirements2 (VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements)
 +{
 +      DE_UNREF(device);
 +      DE_UNREF(pInfo);
 +      DE_UNREF(pMemoryRequirements);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL getBufferMemoryRequirements2 (VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements)
 +{
 +      DE_UNREF(device);
 +      DE_UNREF(pInfo);
 +      DE_UNREF(pMemoryRequirements);
 +}
 +
- VKAPI_ATTR void VKAPI_CALL getPhysicalDeviceSparseImageFormatProperties2 (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, deUint32* pPropertyCount, VkSparseImageFormatProperties2* pProperties)
- {
-       DE_UNREF(physicalDevice);
-       DE_UNREF(pFormatInfo);
-       DE_UNREF(pPropertyCount);
-       DE_UNREF(pProperties);
- }
 +VKAPI_ATTR void VKAPI_CALL getPhysicalDeviceFeatures2 (VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures)
 +{
 +      DE_UNREF(physicalDevice);
 +      DE_UNREF(pFeatures);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL getPhysicalDeviceProperties2 (VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties)
 +{
 +      DE_UNREF(physicalDevice);
 +      DE_UNREF(pProperties);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL getPhysicalDeviceFormatProperties2 (VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties)
 +{
 +      DE_UNREF(physicalDevice);
 +      DE_UNREF(format);
 +      DE_UNREF(pFormatProperties);
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL getPhysicalDeviceImageFormatProperties2 (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties)
 +{
 +      DE_UNREF(physicalDevice);
 +      DE_UNREF(pImageFormatInfo);
 +      DE_UNREF(pImageFormatProperties);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL getPhysicalDeviceQueueFamilyProperties2 (VkPhysicalDevice physicalDevice, deUint32* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties)
 +{
 +      DE_UNREF(physicalDevice);
 +      DE_UNREF(pQueueFamilyPropertyCount);
 +      DE_UNREF(pQueueFamilyProperties);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL getPhysicalDeviceMemoryProperties2 (VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
 +{
 +      DE_UNREF(physicalDevice);
 +      DE_UNREF(pMemoryProperties);
 +}
 +
- VKAPI_ATTR VkResult VKAPI_CALL getFaultDataKHR (VkDevice device, VkFaultQueryBehavior faultQueryBehavior, VkBool32* pUnrecordedFaults, deUint32* pFaultCount, VkFaultData* pFaults)
- {
-       DE_UNREF(device);
-       DE_UNREF(faultQueryBehavior);
-       DE_UNREF(pUnrecordedFaults);
-       DE_UNREF(pFaultCount);
-       DE_UNREF(pFaults);
-       return VK_SUCCESS;
- }
 +VKAPI_ATTR void VKAPI_CALL getDeviceQueue2 (VkDevice device, const VkDeviceQueueInfo2* pQueueInfo, VkQueue* pQueue)
 +{
 +      DE_UNREF(device);
 +      DE_UNREF(pQueueInfo);
 +      DE_UNREF(pQueue);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL getPhysicalDeviceExternalBufferProperties (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties)
 +{
 +      DE_UNREF(physicalDevice);
 +      DE_UNREF(pExternalBufferInfo);
 +      DE_UNREF(pExternalBufferProperties);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL getPhysicalDeviceExternalFenceProperties (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties)
 +{
 +      DE_UNREF(physicalDevice);
 +      DE_UNREF(pExternalFenceInfo);
 +      DE_UNREF(pExternalFenceProperties);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL getPhysicalDeviceExternalSemaphoreProperties (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
 +{
 +      DE_UNREF(physicalDevice);
 +      DE_UNREF(pExternalSemaphoreInfo);
 +      DE_UNREF(pExternalSemaphoreProperties);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL getDescriptorSetLayoutSupport (VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport)
 +{
 +      DE_UNREF(device);
 +      DE_UNREF(pCreateInfo);
 +      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 void VKAPI_CALL getCommandPoolMemoryConsumption (VkDevice device, VkCommandPool commandPool, VkCommandBuffer commandBuffer, VkCommandPoolMemoryConsumption* pConsumption)
++{
++      DE_UNREF(device);
++      DE_UNREF(commandPool);
++      DE_UNREF(commandBuffer);
++      DE_UNREF(pConsumption);
++}
++
++VKAPI_ATTR VkResult VKAPI_CALL getFaultData (VkDevice device, VkFaultQueryBehavior faultQueryBehavior, VkBool32* pUnrecordedFaults, deUint32* pFaultCount, VkFaultData* pFaults)
++{
++      DE_UNREF(device);
++      DE_UNREF(faultQueryBehavior);
++      DE_UNREF(pUnrecordedFaults);
++      DE_UNREF(pFaultCount);
++      DE_UNREF(pFaults);
++      return VK_SUCCESS;
++}
++
 +VKAPI_ATTR VkResult VKAPI_CALL getPhysicalDeviceSurfaceSupportKHR (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported)
 +{
 +      DE_UNREF(physicalDevice);
 +      DE_UNREF(queueFamilyIndex);
 +      DE_UNREF(surface);
 +      DE_UNREF(pSupported);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL getPhysicalDeviceSurfaceCapabilitiesKHR (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities)
 +{
 +      DE_UNREF(physicalDevice);
 +      DE_UNREF(surface);
 +      DE_UNREF(pSurfaceCapabilities);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL getPhysicalDeviceSurfaceFormatsKHR (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats)
 +{
 +      DE_UNREF(physicalDevice);
 +      DE_UNREF(surface);
 +      DE_UNREF(pSurfaceFormatCount);
 +      DE_UNREF(pSurfaceFormats);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL getPhysicalDeviceSurfacePresentModesKHR (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pPresentModeCount, VkPresentModeKHR* pPresentModes)
 +{
 +      DE_UNREF(physicalDevice);
 +      DE_UNREF(surface);
 +      DE_UNREF(pPresentModeCount);
 +      DE_UNREF(pPresentModes);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL getSwapchainImagesKHR (VkDevice device, VkSwapchainKHR swapchain, deUint32* pSwapchainImageCount, VkImage* pSwapchainImages)
 +{
 +      DE_UNREF(device);
 +      DE_UNREF(swapchain);
 +      DE_UNREF(pSwapchainImageCount);
 +      DE_UNREF(pSwapchainImages);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL acquireNextImageKHR (VkDevice device, VkSwapchainKHR swapchain, deUint64 timeout, VkSemaphore semaphore, VkFence fence, deUint32* pImageIndex)
 +{
 +      DE_UNREF(device);
 +      DE_UNREF(swapchain);
 +      DE_UNREF(timeout);
 +      DE_UNREF(semaphore);
 +      DE_UNREF(fence);
 +      DE_UNREF(pImageIndex);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL queuePresentKHR (VkQueue queue, const VkPresentInfoKHR* pPresentInfo)
 +{
 +      DE_UNREF(queue);
 +      DE_UNREF(pPresentInfo);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL getDeviceGroupPresentCapabilitiesKHR (VkDevice device, VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
 +{
 +      DE_UNREF(device);
 +      DE_UNREF(pDeviceGroupPresentCapabilities);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL getDeviceGroupSurfacePresentModesKHR (VkDevice device, VkSurfaceKHR surface, VkDeviceGroupPresentModeFlagsKHR* pModes)
 +{
 +      DE_UNREF(device);
 +      DE_UNREF(surface);
 +      DE_UNREF(pModes);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL getPhysicalDevicePresentRectanglesKHR (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pRectCount, VkRect2D* pRects)
 +{
 +      DE_UNREF(physicalDevice);
 +      DE_UNREF(surface);
 +      DE_UNREF(pRectCount);
 +      DE_UNREF(pRects);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL acquireNextImage2KHR (VkDevice device, const VkAcquireNextImageInfoKHR* pAcquireInfo, deUint32* pImageIndex)
 +{
 +      DE_UNREF(device);
 +      DE_UNREF(pAcquireInfo);
 +      DE_UNREF(pImageIndex);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL getPhysicalDeviceDisplayPropertiesKHR (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPropertiesKHR* pProperties)
 +{
 +      DE_UNREF(physicalDevice);
 +      DE_UNREF(pPropertyCount);
 +      DE_UNREF(pProperties);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL getPhysicalDeviceDisplayPlanePropertiesKHR (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties)
 +{
 +      DE_UNREF(physicalDevice);
 +      DE_UNREF(pPropertyCount);
 +      DE_UNREF(pProperties);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL getDisplayPlaneSupportedDisplaysKHR (VkPhysicalDevice physicalDevice, deUint32 planeIndex, deUint32* pDisplayCount, VkDisplayKHR* pDisplays)
 +{
 +      DE_UNREF(physicalDevice);
 +      DE_UNREF(planeIndex);
 +      DE_UNREF(pDisplayCount);
 +      DE_UNREF(pDisplays);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL getDisplayModePropertiesKHR (VkPhysicalDevice physicalDevice, VkDisplayKHR display, deUint32* pPropertyCount, VkDisplayModePropertiesKHR* pProperties)
 +{
 +      DE_UNREF(physicalDevice);
 +      DE_UNREF(display);
 +      DE_UNREF(pPropertyCount);
 +      DE_UNREF(pProperties);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL getDisplayPlaneCapabilitiesKHR (VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, deUint32 planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities)
 +{
 +      DE_UNREF(physicalDevice);
 +      DE_UNREF(mode);
 +      DE_UNREF(planeIndex);
 +      DE_UNREF(pCapabilities);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL getMemoryFdKHR (VkDevice device, const VkMemoryGetFdInfoKHR* pGetFdInfo, int* pFd)
 +{
 +      DE_UNREF(device);
 +      DE_UNREF(pGetFdInfo);
 +      DE_UNREF(pFd);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL getMemoryFdPropertiesKHR (VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, int fd, VkMemoryFdPropertiesKHR* pMemoryFdProperties)
 +{
 +      DE_UNREF(device);
 +      DE_UNREF(handleType);
 +      DE_UNREF(fd);
 +      DE_UNREF(pMemoryFdProperties);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL importSemaphoreFdKHR (VkDevice device, const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
 +{
 +      DE_UNREF(device);
 +      DE_UNREF(pImportSemaphoreFdInfo);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL getSemaphoreFdKHR (VkDevice device, const VkSemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd)
 +{
 +      DE_UNREF(device);
 +      DE_UNREF(pGetFdInfo);
 +      DE_UNREF(pFd);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL getSwapchainStatusKHR (VkDevice device, VkSwapchainKHR swapchain)
 +{
 +      DE_UNREF(device);
 +      DE_UNREF(swapchain);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL importFenceFdKHR (VkDevice device, const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
 +{
 +      DE_UNREF(device);
 +      DE_UNREF(pImportFenceFdInfo);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL getFenceFdKHR (VkDevice device, const VkFenceGetFdInfoKHR* pGetFdInfo, int* pFd)
 +{
 +      DE_UNREF(device);
 +      DE_UNREF(pGetFdInfo);
 +      DE_UNREF(pFd);
 +      return VK_SUCCESS;
 +}
 +
++VKAPI_ATTR VkResult VKAPI_CALL enumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, deUint32* pCounterCount, VkPerformanceCounterKHR* pCounters, VkPerformanceCounterDescriptionKHR* pCounterDescriptions)
++{
++      DE_UNREF(physicalDevice);
++      DE_UNREF(queueFamilyIndex);
++      DE_UNREF(pCounterCount);
++      DE_UNREF(pCounters);
++      DE_UNREF(pCounterDescriptions);
++      return VK_SUCCESS;
++}
++
++VKAPI_ATTR void VKAPI_CALL getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR (VkPhysicalDevice physicalDevice, const VkQueryPoolPerformanceCreateInfoKHR* pPerformanceQueryCreateInfo, deUint32* pNumPasses)
++{
++      DE_UNREF(physicalDevice);
++      DE_UNREF(pPerformanceQueryCreateInfo);
++      DE_UNREF(pNumPasses);
++}
++
++VKAPI_ATTR VkResult VKAPI_CALL acquireProfilingLockKHR (VkDevice device, const VkAcquireProfilingLockInfoKHR* pInfo)
++{
++      DE_UNREF(device);
++      DE_UNREF(pInfo);
++      return VK_SUCCESS;
++}
++
++VKAPI_ATTR void VKAPI_CALL releaseProfilingLockKHR (VkDevice device)
++{
++      DE_UNREF(device);
++}
++
 +VKAPI_ATTR VkResult VKAPI_CALL getPhysicalDeviceSurfaceCapabilities2KHR (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkSurfaceCapabilities2KHR* pSurfaceCapabilities)
 +{
 +      DE_UNREF(physicalDevice);
 +      DE_UNREF(pSurfaceInfo);
 +      DE_UNREF(pSurfaceCapabilities);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL getPhysicalDeviceSurfaceFormats2KHR (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, deUint32* pSurfaceFormatCount, VkSurfaceFormat2KHR* pSurfaceFormats)
 +{
 +      DE_UNREF(physicalDevice);
 +      DE_UNREF(pSurfaceInfo);
 +      DE_UNREF(pSurfaceFormatCount);
 +      DE_UNREF(pSurfaceFormats);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL getPhysicalDeviceDisplayProperties2KHR (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayProperties2KHR* pProperties)
 +{
 +      DE_UNREF(physicalDevice);
 +      DE_UNREF(pPropertyCount);
 +      DE_UNREF(pProperties);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL getPhysicalDeviceDisplayPlaneProperties2KHR (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPlaneProperties2KHR* pProperties)
 +{
 +      DE_UNREF(physicalDevice);
 +      DE_UNREF(pPropertyCount);
 +      DE_UNREF(pProperties);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL getDisplayModeProperties2KHR (VkPhysicalDevice physicalDevice, VkDisplayKHR display, deUint32* pPropertyCount, VkDisplayModeProperties2KHR* pProperties)
 +{
 +      DE_UNREF(physicalDevice);
 +      DE_UNREF(display);
 +      DE_UNREF(pPropertyCount);
 +      DE_UNREF(pProperties);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL getDisplayPlaneCapabilities2KHR (VkPhysicalDevice physicalDevice, const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo, VkDisplayPlaneCapabilities2KHR* pCapabilities)
 +{
 +      DE_UNREF(physicalDevice);
 +      DE_UNREF(pDisplayPlaneInfo);
 +      DE_UNREF(pCapabilities);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL getPhysicalDeviceFragmentShadingRatesKHR (VkPhysicalDevice physicalDevice, deUint32* pFragmentShadingRateCount, VkPhysicalDeviceFragmentShadingRateKHR* pFragmentShadingRates)
 +{
 +      DE_UNREF(physicalDevice);
 +      DE_UNREF(pFragmentShadingRateCount);
 +      DE_UNREF(pFragmentShadingRates);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdSetFragmentShadingRateKHR (VkCommandBuffer commandBuffer, const VkExtent2D* pFragmentSize, const VkFragmentShadingRateCombinerOpKHR combinerOps[2])
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(pFragmentSize);
 +      DE_UNREF(combinerOps);
 +}
 +
-       VK_NULL_FUNC_ENTRY(vkDestroyInstance,                                                           destroyInstance),
-       VK_NULL_FUNC_ENTRY(vkEnumeratePhysicalDevices,                                          enumeratePhysicalDevices),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceFeatures,                                         getPhysicalDeviceFeatures),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceFormatProperties,                         getPhysicalDeviceFormatProperties),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceImageFormatProperties,            getPhysicalDeviceImageFormatProperties),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceProperties,                                       getPhysicalDeviceProperties),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceQueueFamilyProperties,            getPhysicalDeviceQueueFamilyProperties),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceMemoryProperties,                         getPhysicalDeviceMemoryProperties),
-       VK_NULL_FUNC_ENTRY(vkCreateDevice,                                                                      createDevice),
-       VK_NULL_FUNC_ENTRY(vkEnumerateDeviceExtensionProperties,                        enumerateDeviceExtensionProperties),
-       VK_NULL_FUNC_ENTRY(vkEnumerateDeviceLayerProperties,                            enumerateDeviceLayerProperties),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceSparseImageFormatProperties,      getPhysicalDeviceSparseImageFormatProperties),
-       VK_NULL_FUNC_ENTRY(vkEnumeratePhysicalDeviceGroups,                                     enumeratePhysicalDeviceGroups),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceFeatures2,                                        getPhysicalDeviceFeatures2),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceProperties2,                                      getPhysicalDeviceProperties2),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceFormatProperties2,                        getPhysicalDeviceFormatProperties2),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceImageFormatProperties2,           getPhysicalDeviceImageFormatProperties2),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceQueueFamilyProperties2,           getPhysicalDeviceQueueFamilyProperties2),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceMemoryProperties2,                        getPhysicalDeviceMemoryProperties2),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceSparseImageFormatProperties2,     getPhysicalDeviceSparseImageFormatProperties2),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceExternalBufferProperties,         getPhysicalDeviceExternalBufferProperties),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceExternalFenceProperties,          getPhysicalDeviceExternalFenceProperties),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceExternalSemaphoreProperties,      getPhysicalDeviceExternalSemaphoreProperties),
-       VK_NULL_FUNC_ENTRY(vkDestroySurfaceKHR,                                                         destroySurfaceKHR),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceSurfaceSupportKHR,                        getPhysicalDeviceSurfaceSupportKHR),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceSurfaceCapabilitiesKHR,           getPhysicalDeviceSurfaceCapabilitiesKHR),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceSurfaceFormatsKHR,                        getPhysicalDeviceSurfaceFormatsKHR),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceSurfacePresentModesKHR,           getPhysicalDeviceSurfacePresentModesKHR),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDevicePresentRectanglesKHR,                     getPhysicalDevicePresentRectanglesKHR),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceDisplayPropertiesKHR,                     getPhysicalDeviceDisplayPropertiesKHR),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceDisplayPlanePropertiesKHR,        getPhysicalDeviceDisplayPlanePropertiesKHR),
-       VK_NULL_FUNC_ENTRY(vkGetDisplayPlaneSupportedDisplaysKHR,                       getDisplayPlaneSupportedDisplaysKHR),
-       VK_NULL_FUNC_ENTRY(vkGetDisplayModePropertiesKHR,                                       getDisplayModePropertiesKHR),
-       VK_NULL_FUNC_ENTRY(vkCreateDisplayModeKHR,                                                      createDisplayModeKHR),
-       VK_NULL_FUNC_ENTRY(vkGetDisplayPlaneCapabilitiesKHR,                            getDisplayPlaneCapabilitiesKHR),
-       VK_NULL_FUNC_ENTRY(vkCreateDisplayPlaneSurfaceKHR,                                      createDisplayPlaneSurfaceKHR),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceSurfaceCapabilities2KHR,          getPhysicalDeviceSurfaceCapabilities2KHR),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceSurfaceFormats2KHR,                       getPhysicalDeviceSurfaceFormats2KHR),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceDisplayProperties2KHR,            getPhysicalDeviceDisplayProperties2KHR),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceDisplayPlaneProperties2KHR,       getPhysicalDeviceDisplayPlaneProperties2KHR),
-       VK_NULL_FUNC_ENTRY(vkGetDisplayModeProperties2KHR,                                      getDisplayModeProperties2KHR),
-       VK_NULL_FUNC_ENTRY(vkGetDisplayPlaneCapabilities2KHR,                           getDisplayPlaneCapabilities2KHR),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceFragmentShadingRatesKHR,          getPhysicalDeviceFragmentShadingRatesKHR),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceRefreshableObjectTypesKHR,        getPhysicalDeviceRefreshableObjectTypesKHR),
-       VK_NULL_FUNC_ENTRY(vkReleaseDisplayEXT,                                                         releaseDisplayEXT),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceSurfaceCapabilities2EXT,          getPhysicalDeviceSurfaceCapabilities2EXT),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceMultisamplePropertiesEXT,         getPhysicalDeviceMultisamplePropertiesEXT),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceCalibrateableTimeDomainsEXT,      getPhysicalDeviceCalibrateableTimeDomainsEXT),
-       VK_NULL_FUNC_ENTRY(vkCreateHeadlessSurfaceEXT,                                          createHeadlessSurfaceEXT),
 +VKAPI_ATTR void VKAPI_CALL cmdRefreshObjectsKHR (VkCommandBuffer commandBuffer, const VkRefreshObjectListKHR* pRefreshObjects)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(pRefreshObjects);
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL getPhysicalDeviceRefreshableObjectTypesKHR (VkPhysicalDevice physicalDevice, deUint32* pRefreshableObjectCount, VkObjectType* pRefreshableObjectTypes)
 +{
 +      DE_UNREF(physicalDevice);
 +      DE_UNREF(pRefreshableObjectCount);
 +      DE_UNREF(pRefreshableObjectTypes);
 +      return VK_SUCCESS;
 +}
 +
++VKAPI_ATTR void VKAPI_CALL cmdSetEvent2KHR (VkCommandBuffer commandBuffer, VkEvent event, const VkDependencyInfoKHR* pDependencyInfo)
++{
++      DE_UNREF(commandBuffer);
++      DE_UNREF(event);
++      DE_UNREF(pDependencyInfo);
++}
++
++VKAPI_ATTR void VKAPI_CALL cmdResetEvent2KHR (VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags2KHR stageMask)
++{
++      DE_UNREF(commandBuffer);
++      DE_UNREF(event);
++      DE_UNREF(stageMask);
++}
++
++VKAPI_ATTR void VKAPI_CALL cmdWaitEvents2KHR (VkCommandBuffer commandBuffer, deUint32 eventCount, const VkEvent* pEvents, const VkDependencyInfoKHR* pDependencyInfos)
++{
++      DE_UNREF(commandBuffer);
++      DE_UNREF(eventCount);
++      DE_UNREF(pEvents);
++      DE_UNREF(pDependencyInfos);
++}
++
++VKAPI_ATTR void VKAPI_CALL cmdPipelineBarrier2KHR (VkCommandBuffer commandBuffer, const VkDependencyInfoKHR* pDependencyInfo)
++{
++      DE_UNREF(commandBuffer);
++      DE_UNREF(pDependencyInfo);
++}
++
++VKAPI_ATTR void VKAPI_CALL cmdWriteTimestamp2KHR (VkCommandBuffer commandBuffer, VkPipelineStageFlags2KHR stage, VkQueryPool queryPool, deUint32 query)
++{
++      DE_UNREF(commandBuffer);
++      DE_UNREF(stage);
++      DE_UNREF(queryPool);
++      DE_UNREF(query);
++}
++
++VKAPI_ATTR VkResult VKAPI_CALL queueSubmit2KHR (VkQueue queue, deUint32 submitCount, const VkSubmitInfo2KHR* pSubmits, VkFence fence)
++{
++      DE_UNREF(queue);
++      DE_UNREF(submitCount);
++      DE_UNREF(pSubmits);
++      DE_UNREF(fence);
++      return VK_SUCCESS;
++}
++
++VKAPI_ATTR void VKAPI_CALL cmdWriteBufferMarker2AMD (VkCommandBuffer commandBuffer, VkPipelineStageFlags2KHR stage, VkBuffer dstBuffer, VkDeviceSize dstOffset, deUint32 marker)
++{
++      DE_UNREF(commandBuffer);
++      DE_UNREF(stage);
++      DE_UNREF(dstBuffer);
++      DE_UNREF(dstOffset);
++      DE_UNREF(marker);
++}
++
++VKAPI_ATTR void VKAPI_CALL getQueueCheckpointData2NV (VkQueue queue, deUint32* pCheckpointDataCount, VkCheckpointData2NV* pCheckpointData)
++{
++      DE_UNREF(queue);
++      DE_UNREF(pCheckpointDataCount);
++      DE_UNREF(pCheckpointData);
++}
++
 +VKAPI_ATTR void VKAPI_CALL cmdCopyBuffer2KHR (VkCommandBuffer commandBuffer, const VkCopyBufferInfo2KHR* pCopyBufferInfo)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(pCopyBufferInfo);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdCopyImage2KHR (VkCommandBuffer commandBuffer, const VkCopyImageInfo2KHR* pCopyImageInfo)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(pCopyImageInfo);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdCopyBufferToImage2KHR (VkCommandBuffer commandBuffer, const VkCopyBufferToImageInfo2KHR* pCopyBufferToImageInfo)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(pCopyBufferToImageInfo);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdCopyImageToBuffer2KHR (VkCommandBuffer commandBuffer, const VkCopyImageToBufferInfo2KHR* pCopyImageToBufferInfo)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(pCopyImageToBufferInfo);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdBlitImage2KHR (VkCommandBuffer commandBuffer, const VkBlitImageInfo2KHR* pBlitImageInfo)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(pBlitImageInfo);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdResolveImage2KHR (VkCommandBuffer commandBuffer, const VkResolveImageInfo2KHR* pResolveImageInfo)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(pResolveImageInfo);
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL releaseDisplayEXT (VkPhysicalDevice physicalDevice, VkDisplayKHR display)
 +{
 +      DE_UNREF(physicalDevice);
 +      DE_UNREF(display);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL getPhysicalDeviceSurfaceCapabilities2EXT (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilities2EXT* pSurfaceCapabilities)
 +{
 +      DE_UNREF(physicalDevice);
 +      DE_UNREF(surface);
 +      DE_UNREF(pSurfaceCapabilities);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL displayPowerControlEXT (VkDevice device, VkDisplayKHR display, const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
 +{
 +      DE_UNREF(device);
 +      DE_UNREF(display);
 +      DE_UNREF(pDisplayPowerInfo);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL registerDeviceEventEXT (VkDevice device, const VkDeviceEventInfoEXT* pDeviceEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence)
 +{
 +      DE_UNREF(device);
 +      DE_UNREF(pDeviceEventInfo);
 +      DE_UNREF(pAllocator);
 +      DE_UNREF(pFence);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL registerDisplayEventEXT (VkDevice device, VkDisplayKHR display, const VkDisplayEventInfoEXT* pDisplayEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence)
 +{
 +      DE_UNREF(device);
 +      DE_UNREF(display);
 +      DE_UNREF(pDisplayEventInfo);
 +      DE_UNREF(pAllocator);
 +      DE_UNREF(pFence);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL getSwapchainCounterEXT (VkDevice device, VkSwapchainKHR swapchain, VkSurfaceCounterFlagBitsEXT counter, deUint64* pCounterValue)
 +{
 +      DE_UNREF(device);
 +      DE_UNREF(swapchain);
 +      DE_UNREF(counter);
 +      DE_UNREF(pCounterValue);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdSetDiscardRectangleEXT (VkCommandBuffer commandBuffer, deUint32 firstDiscardRectangle, deUint32 discardRectangleCount, const VkRect2D* pDiscardRectangles)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(firstDiscardRectangle);
 +      DE_UNREF(discardRectangleCount);
 +      DE_UNREF(pDiscardRectangles);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL setHdrMetadataEXT (VkDevice device, deUint32 swapchainCount, const VkSwapchainKHR* pSwapchains, const VkHdrMetadataEXT* pMetadata)
 +{
 +      DE_UNREF(device);
 +      DE_UNREF(swapchainCount);
 +      DE_UNREF(pSwapchains);
 +      DE_UNREF(pMetadata);
 +}
 +
++VKAPI_ATTR VkResult VKAPI_CALL setDebugUtilsObjectNameEXT (VkDevice device, const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
++{
++      DE_UNREF(device);
++      DE_UNREF(pNameInfo);
++      return VK_SUCCESS;
++}
++
++VKAPI_ATTR VkResult VKAPI_CALL setDebugUtilsObjectTagEXT (VkDevice device, const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
++{
++      DE_UNREF(device);
++      DE_UNREF(pTagInfo);
++      return VK_SUCCESS;
++}
++
++VKAPI_ATTR void VKAPI_CALL queueBeginDebugUtilsLabelEXT (VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo)
++{
++      DE_UNREF(queue);
++      DE_UNREF(pLabelInfo);
++}
++
++VKAPI_ATTR void VKAPI_CALL queueEndDebugUtilsLabelEXT (VkQueue queue)
++{
++      DE_UNREF(queue);
++}
++
++VKAPI_ATTR void VKAPI_CALL queueInsertDebugUtilsLabelEXT (VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo)
++{
++      DE_UNREF(queue);
++      DE_UNREF(pLabelInfo);
++}
++
++VKAPI_ATTR void VKAPI_CALL cmdBeginDebugUtilsLabelEXT (VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo)
++{
++      DE_UNREF(commandBuffer);
++      DE_UNREF(pLabelInfo);
++}
++
++VKAPI_ATTR void VKAPI_CALL cmdEndDebugUtilsLabelEXT (VkCommandBuffer commandBuffer)
++{
++      DE_UNREF(commandBuffer);
++}
++
++VKAPI_ATTR void VKAPI_CALL cmdInsertDebugUtilsLabelEXT (VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo)
++{
++      DE_UNREF(commandBuffer);
++      DE_UNREF(pLabelInfo);
++}
++
++VKAPI_ATTR void VKAPI_CALL submitDebugUtilsMessageEXT (VkInstance instance, VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageTypes, const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData)
++{
++      DE_UNREF(instance);
++      DE_UNREF(messageSeverity);
++      DE_UNREF(messageTypes);
++      DE_UNREF(pCallbackData);
++}
++
 +VKAPI_ATTR void VKAPI_CALL cmdSetSampleLocationsEXT (VkCommandBuffer commandBuffer, const VkSampleLocationsInfoEXT* pSampleLocationsInfo)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(pSampleLocationsInfo);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL getPhysicalDeviceMultisamplePropertiesEXT (VkPhysicalDevice physicalDevice, VkSampleCountFlagBits samples, VkMultisamplePropertiesEXT* pMultisampleProperties)
 +{
 +      DE_UNREF(physicalDevice);
 +      DE_UNREF(samples);
 +      DE_UNREF(pMultisampleProperties);
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL getImageDrmFormatModifierPropertiesEXT (VkDevice device, VkImage image, VkImageDrmFormatModifierPropertiesEXT* pProperties)
 +{
 +      DE_UNREF(device);
 +      DE_UNREF(image);
 +      DE_UNREF(pProperties);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL getMemoryHostPointerPropertiesEXT (VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, const void* pHostPointer, VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
 +{
 +      DE_UNREF(device);
 +      DE_UNREF(handleType);
 +      DE_UNREF(pHostPointer);
 +      DE_UNREF(pMemoryHostPointerProperties);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL getPhysicalDeviceCalibrateableTimeDomainsEXT (VkPhysicalDevice physicalDevice, deUint32* pTimeDomainCount, VkTimeDomainEXT* pTimeDomains)
 +{
 +      DE_UNREF(physicalDevice);
 +      DE_UNREF(pTimeDomainCount);
 +      DE_UNREF(pTimeDomains);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR VkResult VKAPI_CALL getCalibratedTimestampsEXT (VkDevice device, deUint32 timestampCount, const VkCalibratedTimestampInfoEXT* pTimestampInfos, deUint64* pTimestamps, deUint64* pMaxDeviation)
 +{
 +      DE_UNREF(device);
 +      DE_UNREF(timestampCount);
 +      DE_UNREF(pTimestampInfos);
 +      DE_UNREF(pTimestamps);
 +      DE_UNREF(pMaxDeviation);
 +      return VK_SUCCESS;
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdSetLineStippleEXT (VkCommandBuffer commandBuffer, deUint32 lineStippleFactor, deUint16 lineStipplePattern)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(lineStippleFactor);
 +      DE_UNREF(lineStipplePattern);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdSetCullModeEXT (VkCommandBuffer commandBuffer, VkCullModeFlags cullMode)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(cullMode);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdSetFrontFaceEXT (VkCommandBuffer commandBuffer, VkFrontFace frontFace)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(frontFace);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdSetPrimitiveTopologyEXT (VkCommandBuffer commandBuffer, VkPrimitiveTopology primitiveTopology)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(primitiveTopology);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdSetViewportWithCountEXT (VkCommandBuffer commandBuffer, deUint32 viewportCount, const VkViewport* pViewports)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(viewportCount);
 +      DE_UNREF(pViewports);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdSetScissorWithCountEXT (VkCommandBuffer commandBuffer, deUint32 scissorCount, const VkRect2D* pScissors)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(scissorCount);
 +      DE_UNREF(pScissors);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdBindVertexBuffers2EXT (VkCommandBuffer commandBuffer, deUint32 firstBinding, deUint32 bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes, const VkDeviceSize* pStrides)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(firstBinding);
 +      DE_UNREF(bindingCount);
 +      DE_UNREF(pBuffers);
 +      DE_UNREF(pOffsets);
 +      DE_UNREF(pSizes);
 +      DE_UNREF(pStrides);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdSetDepthTestEnableEXT (VkCommandBuffer commandBuffer, VkBool32 depthTestEnable)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(depthTestEnable);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdSetDepthWriteEnableEXT (VkCommandBuffer commandBuffer, VkBool32 depthWriteEnable)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(depthWriteEnable);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdSetDepthCompareOpEXT (VkCommandBuffer commandBuffer, VkCompareOp depthCompareOp)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(depthCompareOp);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdSetDepthBoundsTestEnableEXT (VkCommandBuffer commandBuffer, VkBool32 depthBoundsTestEnable)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(depthBoundsTestEnable);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdSetStencilTestEnableEXT (VkCommandBuffer commandBuffer, VkBool32 stencilTestEnable)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(stencilTestEnable);
 +}
 +
 +VKAPI_ATTR void VKAPI_CALL cmdSetStencilOpEXT (VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, VkStencilOp failOp, VkStencilOp passOp, VkStencilOp depthFailOp, VkCompareOp compareOp)
 +{
 +      DE_UNREF(commandBuffer);
 +      DE_UNREF(faceMask);
 +      DE_UNREF(failOp);
 +      DE_UNREF(passOp);
 +      DE_UNREF(depthFailOp);
 +      DE_UNREF(compareOp);
 +}
 +
++VKAPI_ATTR void VKAPI_CALL cmdSetVertexInputEXT (VkCommandBuffer commandBuffer, deUint32 vertexBindingDescriptionCount, const VkVertexInputBindingDescription2EXT* pVertexBindingDescriptions, deUint32 vertexAttributeDescriptionCount, const VkVertexInputAttributeDescription2EXT* pVertexAttributeDescriptions)
++{
++      DE_UNREF(commandBuffer);
++      DE_UNREF(vertexBindingDescriptionCount);
++      DE_UNREF(pVertexBindingDescriptions);
++      DE_UNREF(vertexAttributeDescriptionCount);
++      DE_UNREF(pVertexAttributeDescriptions);
++}
++
++VKAPI_ATTR void VKAPI_CALL cmdSetPatchControlPointsEXT (VkCommandBuffer commandBuffer, deUint32 patchControlPoints)
++{
++      DE_UNREF(commandBuffer);
++      DE_UNREF(patchControlPoints);
++}
++
++VKAPI_ATTR void VKAPI_CALL cmdSetRasterizerDiscardEnableEXT (VkCommandBuffer commandBuffer, VkBool32 rasterizerDiscardEnable)
++{
++      DE_UNREF(commandBuffer);
++      DE_UNREF(rasterizerDiscardEnable);
++}
++
++VKAPI_ATTR void VKAPI_CALL cmdSetDepthBiasEnableEXT (VkCommandBuffer commandBuffer, VkBool32 depthBiasEnable)
++{
++      DE_UNREF(commandBuffer);
++      DE_UNREF(depthBiasEnable);
++}
++
++VKAPI_ATTR void VKAPI_CALL cmdSetLogicOpEXT (VkCommandBuffer commandBuffer, VkLogicOp logicOp)
++{
++      DE_UNREF(commandBuffer);
++      DE_UNREF(logicOp);
++}
++
++VKAPI_ATTR void VKAPI_CALL cmdSetPrimitiveRestartEnableEXT (VkCommandBuffer commandBuffer, VkBool32 primitiveRestartEnable)
++{
++      DE_UNREF(commandBuffer);
++      DE_UNREF(primitiveRestartEnable);
++}
++
++VKAPI_ATTR void VKAPI_CALL cmdSetColorWriteEnableEXT (VkCommandBuffer commandBuffer, deUint32 attachmentCount, const VkBool32* pColorWriteEnables)
++{
++      DE_UNREF(commandBuffer);
++      DE_UNREF(attachmentCount);
++      DE_UNREF(pColorWriteEnables);
++}
++
 +static const tcu::StaticFunctionLibrary::Entry s_platformFunctions[] =
 +{
 +      VK_NULL_FUNC_ENTRY(vkCreateInstance,                                            createInstance),
 +      VK_NULL_FUNC_ENTRY(vkGetInstanceProcAddr,                                       getInstanceProcAddr),
 +      VK_NULL_FUNC_ENTRY(vkEnumerateInstanceExtensionProperties,      enumerateInstanceExtensionProperties),
 +      VK_NULL_FUNC_ENTRY(vkEnumerateInstanceLayerProperties,          enumerateInstanceLayerProperties),
 +      VK_NULL_FUNC_ENTRY(vkEnumerateInstanceVersion,                          enumerateInstanceVersion),
 +};
 +
 +static const tcu::StaticFunctionLibrary::Entry s_instanceFunctions[] =
 +{
-       VK_NULL_FUNC_ENTRY(vkGetImageSparseMemoryRequirements,                  getImageSparseMemoryRequirements),
-       VK_NULL_FUNC_ENTRY(vkQueueBindSparse,                                                   queueBindSparse),
++      VK_NULL_FUNC_ENTRY(vkDestroyInstance,                                                                                           destroyInstance),
++      VK_NULL_FUNC_ENTRY(vkEnumeratePhysicalDevices,                                                                          enumeratePhysicalDevices),
++      VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceFeatures,                                                                         getPhysicalDeviceFeatures),
++      VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceFormatProperties,                                                         getPhysicalDeviceFormatProperties),
++      VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceImageFormatProperties,                                            getPhysicalDeviceImageFormatProperties),
++      VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceProperties,                                                                       getPhysicalDeviceProperties),
++      VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceQueueFamilyProperties,                                            getPhysicalDeviceQueueFamilyProperties),
++      VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceMemoryProperties,                                                         getPhysicalDeviceMemoryProperties),
++      VK_NULL_FUNC_ENTRY(vkCreateDevice,                                                                                                      createDevice),
++      VK_NULL_FUNC_ENTRY(vkEnumerateDeviceExtensionProperties,                                                        enumerateDeviceExtensionProperties),
++      VK_NULL_FUNC_ENTRY(vkEnumerateDeviceLayerProperties,                                                            enumerateDeviceLayerProperties),
++      VK_NULL_FUNC_ENTRY(vkEnumeratePhysicalDeviceGroups,                                                                     enumeratePhysicalDeviceGroups),
++      VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceFeatures2,                                                                        getPhysicalDeviceFeatures2),
++      VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceProperties2,                                                                      getPhysicalDeviceProperties2),
++      VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceFormatProperties2,                                                        getPhysicalDeviceFormatProperties2),
++      VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceImageFormatProperties2,                                           getPhysicalDeviceImageFormatProperties2),
++      VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceQueueFamilyProperties2,                                           getPhysicalDeviceQueueFamilyProperties2),
++      VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceMemoryProperties2,                                                        getPhysicalDeviceMemoryProperties2),
++      VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceExternalBufferProperties,                                         getPhysicalDeviceExternalBufferProperties),
++      VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceExternalFenceProperties,                                          getPhysicalDeviceExternalFenceProperties),
++      VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceExternalSemaphoreProperties,                                      getPhysicalDeviceExternalSemaphoreProperties),
++      VK_NULL_FUNC_ENTRY(vkDestroySurfaceKHR,                                                                                         destroySurfaceKHR),
++      VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceSurfaceSupportKHR,                                                        getPhysicalDeviceSurfaceSupportKHR),
++      VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceSurfaceCapabilitiesKHR,                                           getPhysicalDeviceSurfaceCapabilitiesKHR),
++      VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceSurfaceFormatsKHR,                                                        getPhysicalDeviceSurfaceFormatsKHR),
++      VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceSurfacePresentModesKHR,                                           getPhysicalDeviceSurfacePresentModesKHR),
++      VK_NULL_FUNC_ENTRY(vkGetPhysicalDevicePresentRectanglesKHR,                                                     getPhysicalDevicePresentRectanglesKHR),
++      VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceDisplayPropertiesKHR,                                                     getPhysicalDeviceDisplayPropertiesKHR),
++      VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceDisplayPlanePropertiesKHR,                                        getPhysicalDeviceDisplayPlanePropertiesKHR),
++      VK_NULL_FUNC_ENTRY(vkGetDisplayPlaneSupportedDisplaysKHR,                                                       getDisplayPlaneSupportedDisplaysKHR),
++      VK_NULL_FUNC_ENTRY(vkGetDisplayModePropertiesKHR,                                                                       getDisplayModePropertiesKHR),
++      VK_NULL_FUNC_ENTRY(vkCreateDisplayModeKHR,                                                                                      createDisplayModeKHR),
++      VK_NULL_FUNC_ENTRY(vkGetDisplayPlaneCapabilitiesKHR,                                                            getDisplayPlaneCapabilitiesKHR),
++      VK_NULL_FUNC_ENTRY(vkCreateDisplayPlaneSurfaceKHR,                                                                      createDisplayPlaneSurfaceKHR),
++      VK_NULL_FUNC_ENTRY(vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR,     enumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR),
++      VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR,                     getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR),
++      VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceSurfaceCapabilities2KHR,                                          getPhysicalDeviceSurfaceCapabilities2KHR),
++      VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceSurfaceFormats2KHR,                                                       getPhysicalDeviceSurfaceFormats2KHR),
++      VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceDisplayProperties2KHR,                                            getPhysicalDeviceDisplayProperties2KHR),
++      VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceDisplayPlaneProperties2KHR,                                       getPhysicalDeviceDisplayPlaneProperties2KHR),
++      VK_NULL_FUNC_ENTRY(vkGetDisplayModeProperties2KHR,                                                                      getDisplayModeProperties2KHR),
++      VK_NULL_FUNC_ENTRY(vkGetDisplayPlaneCapabilities2KHR,                                                           getDisplayPlaneCapabilities2KHR),
++      VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceFragmentShadingRatesKHR,                                          getPhysicalDeviceFragmentShadingRatesKHR),
++      VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceRefreshableObjectTypesKHR,                                        getPhysicalDeviceRefreshableObjectTypesKHR),
++      VK_NULL_FUNC_ENTRY(vkReleaseDisplayEXT,                                                                                         releaseDisplayEXT),
++      VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceSurfaceCapabilities2EXT,                                          getPhysicalDeviceSurfaceCapabilities2EXT),
++      VK_NULL_FUNC_ENTRY(vkCreateDebugUtilsMessengerEXT,                                                                      createDebugUtilsMessengerEXT),
++      VK_NULL_FUNC_ENTRY(vkDestroyDebugUtilsMessengerEXT,                                                                     destroyDebugUtilsMessengerEXT),
++      VK_NULL_FUNC_ENTRY(vkSubmitDebugUtilsMessageEXT,                                                                        submitDebugUtilsMessageEXT),
++      VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceMultisamplePropertiesEXT,                                         getPhysicalDeviceMultisamplePropertiesEXT),
++      VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceCalibrateableTimeDomainsEXT,                                      getPhysicalDeviceCalibrateableTimeDomainsEXT),
++      VK_NULL_FUNC_ENTRY(vkCreateHeadlessSurfaceEXT,                                                                          createHeadlessSurfaceEXT),
 +};
 +
 +static const tcu::StaticFunctionLibrary::Entry s_deviceFunctions[] =
 +{
 +      VK_NULL_FUNC_ENTRY(vkGetDeviceProcAddr,                                                 getDeviceProcAddr),
 +      VK_NULL_FUNC_ENTRY(vkDestroyDevice,                                                             destroyDevice),
 +      VK_NULL_FUNC_ENTRY(vkGetDeviceQueue,                                                    getDeviceQueue),
 +      VK_NULL_FUNC_ENTRY(vkQueueSubmit,                                                               queueSubmit),
 +      VK_NULL_FUNC_ENTRY(vkQueueWaitIdle,                                                             queueWaitIdle),
 +      VK_NULL_FUNC_ENTRY(vkDeviceWaitIdle,                                                    deviceWaitIdle),
 +      VK_NULL_FUNC_ENTRY(vkAllocateMemory,                                                    allocateMemory),
 +      VK_NULL_FUNC_ENTRY(vkMapMemory,                                                                 mapMemory),
 +      VK_NULL_FUNC_ENTRY(vkUnmapMemory,                                                               unmapMemory),
 +      VK_NULL_FUNC_ENTRY(vkFlushMappedMemoryRanges,                                   flushMappedMemoryRanges),
 +      VK_NULL_FUNC_ENTRY(vkInvalidateMappedMemoryRanges,                              invalidateMappedMemoryRanges),
 +      VK_NULL_FUNC_ENTRY(vkGetDeviceMemoryCommitment,                                 getDeviceMemoryCommitment),
 +      VK_NULL_FUNC_ENTRY(vkBindBufferMemory,                                                  bindBufferMemory),
 +      VK_NULL_FUNC_ENTRY(vkBindImageMemory,                                                   bindImageMemory),
 +      VK_NULL_FUNC_ENTRY(vkGetBufferMemoryRequirements,                               getBufferMemoryRequirements),
 +      VK_NULL_FUNC_ENTRY(vkGetImageMemoryRequirements,                                getImageMemoryRequirements),
-       VK_NULL_FUNC_ENTRY(vkGetCommandPoolMemoryConsumption,                   getCommandPoolMemoryConsumption),
-       VK_NULL_FUNC_ENTRY(vkGetFaultData,                                                              getFaultData),
 +      VK_NULL_FUNC_ENTRY(vkCreateFence,                                                               createFence),
 +      VK_NULL_FUNC_ENTRY(vkDestroyFence,                                                              destroyFence),
 +      VK_NULL_FUNC_ENTRY(vkResetFences,                                                               resetFences),
 +      VK_NULL_FUNC_ENTRY(vkGetFenceStatus,                                                    getFenceStatus),
 +      VK_NULL_FUNC_ENTRY(vkWaitForFences,                                                             waitForFences),
 +      VK_NULL_FUNC_ENTRY(vkCreateSemaphore,                                                   createSemaphore),
 +      VK_NULL_FUNC_ENTRY(vkDestroySemaphore,                                                  destroySemaphore),
 +      VK_NULL_FUNC_ENTRY(vkCreateEvent,                                                               createEvent),
 +      VK_NULL_FUNC_ENTRY(vkDestroyEvent,                                                              destroyEvent),
 +      VK_NULL_FUNC_ENTRY(vkGetEventStatus,                                                    getEventStatus),
 +      VK_NULL_FUNC_ENTRY(vkSetEvent,                                                                  setEvent),
 +      VK_NULL_FUNC_ENTRY(vkResetEvent,                                                                resetEvent),
 +      VK_NULL_FUNC_ENTRY(vkCreateQueryPool,                                                   createQueryPool),
 +      VK_NULL_FUNC_ENTRY(vkGetQueryPoolResults,                                               getQueryPoolResults),
 +      VK_NULL_FUNC_ENTRY(vkCreateBuffer,                                                              createBuffer),
 +      VK_NULL_FUNC_ENTRY(vkDestroyBuffer,                                                             destroyBuffer),
 +      VK_NULL_FUNC_ENTRY(vkCreateBufferView,                                                  createBufferView),
 +      VK_NULL_FUNC_ENTRY(vkDestroyBufferView,                                                 destroyBufferView),
 +      VK_NULL_FUNC_ENTRY(vkCreateImage,                                                               createImage),
 +      VK_NULL_FUNC_ENTRY(vkDestroyImage,                                                              destroyImage),
 +      VK_NULL_FUNC_ENTRY(vkGetImageSubresourceLayout,                                 getImageSubresourceLayout),
 +      VK_NULL_FUNC_ENTRY(vkCreateImageView,                                                   createImageView),
 +      VK_NULL_FUNC_ENTRY(vkDestroyImageView,                                                  destroyImageView),
 +      VK_NULL_FUNC_ENTRY(vkCreatePipelineCache,                                               createPipelineCache),
 +      VK_NULL_FUNC_ENTRY(vkDestroyPipelineCache,                                              destroyPipelineCache),
 +      VK_NULL_FUNC_ENTRY(vkCreateGraphicsPipelines,                                   createGraphicsPipelines),
 +      VK_NULL_FUNC_ENTRY(vkCreateComputePipelines,                                    createComputePipelines),
 +      VK_NULL_FUNC_ENTRY(vkDestroyPipeline,                                                   destroyPipeline),
 +      VK_NULL_FUNC_ENTRY(vkCreatePipelineLayout,                                              createPipelineLayout),
 +      VK_NULL_FUNC_ENTRY(vkDestroyPipelineLayout,                                             destroyPipelineLayout),
 +      VK_NULL_FUNC_ENTRY(vkCreateSampler,                                                             createSampler),
 +      VK_NULL_FUNC_ENTRY(vkDestroySampler,                                                    destroySampler),
 +      VK_NULL_FUNC_ENTRY(vkCreateDescriptorSetLayout,                                 createDescriptorSetLayout),
 +      VK_NULL_FUNC_ENTRY(vkDestroyDescriptorSetLayout,                                destroyDescriptorSetLayout),
 +      VK_NULL_FUNC_ENTRY(vkCreateDescriptorPool,                                              createDescriptorPool),
 +      VK_NULL_FUNC_ENTRY(vkResetDescriptorPool,                                               resetDescriptorPool),
 +      VK_NULL_FUNC_ENTRY(vkAllocateDescriptorSets,                                    allocateDescriptorSets),
 +      VK_NULL_FUNC_ENTRY(vkFreeDescriptorSets,                                                freeDescriptorSets),
 +      VK_NULL_FUNC_ENTRY(vkUpdateDescriptorSets,                                              updateDescriptorSets),
 +      VK_NULL_FUNC_ENTRY(vkCreateFramebuffer,                                                 createFramebuffer),
 +      VK_NULL_FUNC_ENTRY(vkDestroyFramebuffer,                                                destroyFramebuffer),
 +      VK_NULL_FUNC_ENTRY(vkCreateRenderPass,                                                  createRenderPass),
 +      VK_NULL_FUNC_ENTRY(vkDestroyRenderPass,                                                 destroyRenderPass),
 +      VK_NULL_FUNC_ENTRY(vkGetRenderAreaGranularity,                                  getRenderAreaGranularity),
 +      VK_NULL_FUNC_ENTRY(vkCreateCommandPool,                                                 createCommandPool),
 +      VK_NULL_FUNC_ENTRY(vkResetCommandPool,                                                  resetCommandPool),
 +      VK_NULL_FUNC_ENTRY(vkAllocateCommandBuffers,                                    allocateCommandBuffers),
 +      VK_NULL_FUNC_ENTRY(vkFreeCommandBuffers,                                                freeCommandBuffers),
 +      VK_NULL_FUNC_ENTRY(vkBeginCommandBuffer,                                                beginCommandBuffer),
 +      VK_NULL_FUNC_ENTRY(vkEndCommandBuffer,                                                  endCommandBuffer),
 +      VK_NULL_FUNC_ENTRY(vkResetCommandBuffer,                                                resetCommandBuffer),
 +      VK_NULL_FUNC_ENTRY(vkCmdBindPipeline,                                                   cmdBindPipeline),
 +      VK_NULL_FUNC_ENTRY(vkCmdSetViewport,                                                    cmdSetViewport),
 +      VK_NULL_FUNC_ENTRY(vkCmdSetScissor,                                                             cmdSetScissor),
 +      VK_NULL_FUNC_ENTRY(vkCmdSetLineWidth,                                                   cmdSetLineWidth),
 +      VK_NULL_FUNC_ENTRY(vkCmdSetDepthBias,                                                   cmdSetDepthBias),
 +      VK_NULL_FUNC_ENTRY(vkCmdSetBlendConstants,                                              cmdSetBlendConstants),
 +      VK_NULL_FUNC_ENTRY(vkCmdSetDepthBounds,                                                 cmdSetDepthBounds),
 +      VK_NULL_FUNC_ENTRY(vkCmdSetStencilCompareMask,                                  cmdSetStencilCompareMask),
 +      VK_NULL_FUNC_ENTRY(vkCmdSetStencilWriteMask,                                    cmdSetStencilWriteMask),
 +      VK_NULL_FUNC_ENTRY(vkCmdSetStencilReference,                                    cmdSetStencilReference),
 +      VK_NULL_FUNC_ENTRY(vkCmdBindDescriptorSets,                                             cmdBindDescriptorSets),
 +      VK_NULL_FUNC_ENTRY(vkCmdBindIndexBuffer,                                                cmdBindIndexBuffer),
 +      VK_NULL_FUNC_ENTRY(vkCmdBindVertexBuffers,                                              cmdBindVertexBuffers),
 +      VK_NULL_FUNC_ENTRY(vkCmdDraw,                                                                   cmdDraw),
 +      VK_NULL_FUNC_ENTRY(vkCmdDrawIndexed,                                                    cmdDrawIndexed),
 +      VK_NULL_FUNC_ENTRY(vkCmdDrawIndirect,                                                   cmdDrawIndirect),
 +      VK_NULL_FUNC_ENTRY(vkCmdDrawIndexedIndirect,                                    cmdDrawIndexedIndirect),
 +      VK_NULL_FUNC_ENTRY(vkCmdDispatch,                                                               cmdDispatch),
 +      VK_NULL_FUNC_ENTRY(vkCmdDispatchIndirect,                                               cmdDispatchIndirect),
 +      VK_NULL_FUNC_ENTRY(vkCmdCopyBuffer,                                                             cmdCopyBuffer),
 +      VK_NULL_FUNC_ENTRY(vkCmdCopyImage,                                                              cmdCopyImage),
 +      VK_NULL_FUNC_ENTRY(vkCmdBlitImage,                                                              cmdBlitImage),
 +      VK_NULL_FUNC_ENTRY(vkCmdCopyBufferToImage,                                              cmdCopyBufferToImage),
 +      VK_NULL_FUNC_ENTRY(vkCmdCopyImageToBuffer,                                              cmdCopyImageToBuffer),
 +      VK_NULL_FUNC_ENTRY(vkCmdUpdateBuffer,                                                   cmdUpdateBuffer),
 +      VK_NULL_FUNC_ENTRY(vkCmdFillBuffer,                                                             cmdFillBuffer),
 +      VK_NULL_FUNC_ENTRY(vkCmdClearColorImage,                                                cmdClearColorImage),
 +      VK_NULL_FUNC_ENTRY(vkCmdClearDepthStencilImage,                                 cmdClearDepthStencilImage),
 +      VK_NULL_FUNC_ENTRY(vkCmdClearAttachments,                                               cmdClearAttachments),
 +      VK_NULL_FUNC_ENTRY(vkCmdResolveImage,                                                   cmdResolveImage),
 +      VK_NULL_FUNC_ENTRY(vkCmdSetEvent,                                                               cmdSetEvent),
 +      VK_NULL_FUNC_ENTRY(vkCmdResetEvent,                                                             cmdResetEvent),
 +      VK_NULL_FUNC_ENTRY(vkCmdWaitEvents,                                                             cmdWaitEvents),
 +      VK_NULL_FUNC_ENTRY(vkCmdPipelineBarrier,                                                cmdPipelineBarrier),
 +      VK_NULL_FUNC_ENTRY(vkCmdBeginQuery,                                                             cmdBeginQuery),
 +      VK_NULL_FUNC_ENTRY(vkCmdEndQuery,                                                               cmdEndQuery),
 +      VK_NULL_FUNC_ENTRY(vkCmdResetQueryPool,                                                 cmdResetQueryPool),
 +      VK_NULL_FUNC_ENTRY(vkCmdWriteTimestamp,                                                 cmdWriteTimestamp),
 +      VK_NULL_FUNC_ENTRY(vkCmdCopyQueryPoolResults,                                   cmdCopyQueryPoolResults),
 +      VK_NULL_FUNC_ENTRY(vkCmdPushConstants,                                                  cmdPushConstants),
 +      VK_NULL_FUNC_ENTRY(vkCmdBeginRenderPass,                                                cmdBeginRenderPass),
 +      VK_NULL_FUNC_ENTRY(vkCmdNextSubpass,                                                    cmdNextSubpass),
 +      VK_NULL_FUNC_ENTRY(vkCmdEndRenderPass,                                                  cmdEndRenderPass),
 +      VK_NULL_FUNC_ENTRY(vkCmdExecuteCommands,                                                cmdExecuteCommands),
-       VK_NULL_FUNC_ENTRY(vkGetImageSparseMemoryRequirements2,                 getImageSparseMemoryRequirements2),
 +      VK_NULL_FUNC_ENTRY(vkBindBufferMemory2,                                                 bindBufferMemory2),
 +      VK_NULL_FUNC_ENTRY(vkBindImageMemory2,                                                  bindImageMemory2),
 +      VK_NULL_FUNC_ENTRY(vkGetDeviceGroupPeerMemoryFeatures,                  getDeviceGroupPeerMemoryFeatures),
 +      VK_NULL_FUNC_ENTRY(vkCmdSetDeviceMask,                                                  cmdSetDeviceMask),
 +      VK_NULL_FUNC_ENTRY(vkCmdDispatchBase,                                                   cmdDispatchBase),
 +      VK_NULL_FUNC_ENTRY(vkGetImageMemoryRequirements2,                               getImageMemoryRequirements2),
 +      VK_NULL_FUNC_ENTRY(vkGetBufferMemoryRequirements2,                              getBufferMemoryRequirements2),
-       VK_NULL_FUNC_ENTRY(vkGetFaultDataKHR,                                                   getFaultDataKHR),
 +      VK_NULL_FUNC_ENTRY(vkGetDeviceQueue2,                                                   getDeviceQueue2),
 +      VK_NULL_FUNC_ENTRY(vkCreateSamplerYcbcrConversion,                              createSamplerYcbcrConversion),
 +      VK_NULL_FUNC_ENTRY(vkDestroySamplerYcbcrConversion,                             destroySamplerYcbcrConversion),
 +      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(vkGetCommandPoolMemoryConsumption,                   getCommandPoolMemoryConsumption),
++      VK_NULL_FUNC_ENTRY(vkGetFaultData,                                                              getFaultData),
 +      VK_NULL_FUNC_ENTRY(vkCreateSwapchainKHR,                                                createSwapchainKHR),
 +      VK_NULL_FUNC_ENTRY(vkGetSwapchainImagesKHR,                                             getSwapchainImagesKHR),
 +      VK_NULL_FUNC_ENTRY(vkAcquireNextImageKHR,                                               acquireNextImageKHR),
 +      VK_NULL_FUNC_ENTRY(vkQueuePresentKHR,                                                   queuePresentKHR),
 +      VK_NULL_FUNC_ENTRY(vkGetDeviceGroupPresentCapabilitiesKHR,              getDeviceGroupPresentCapabilitiesKHR),
 +      VK_NULL_FUNC_ENTRY(vkGetDeviceGroupSurfacePresentModesKHR,              getDeviceGroupSurfacePresentModesKHR),
 +      VK_NULL_FUNC_ENTRY(vkAcquireNextImage2KHR,                                              acquireNextImage2KHR),
 +      VK_NULL_FUNC_ENTRY(vkCreateSharedSwapchainsKHR,                                 createSharedSwapchainsKHR),
 +      VK_NULL_FUNC_ENTRY(vkGetMemoryFdKHR,                                                    getMemoryFdKHR),
 +      VK_NULL_FUNC_ENTRY(vkGetMemoryFdPropertiesKHR,                                  getMemoryFdPropertiesKHR),
 +      VK_NULL_FUNC_ENTRY(vkImportSemaphoreFdKHR,                                              importSemaphoreFdKHR),
 +      VK_NULL_FUNC_ENTRY(vkGetSemaphoreFdKHR,                                                 getSemaphoreFdKHR),
 +      VK_NULL_FUNC_ENTRY(vkGetSwapchainStatusKHR,                                             getSwapchainStatusKHR),
 +      VK_NULL_FUNC_ENTRY(vkImportFenceFdKHR,                                                  importFenceFdKHR),
 +      VK_NULL_FUNC_ENTRY(vkGetFenceFdKHR,                                                             getFenceFdKHR),
++      VK_NULL_FUNC_ENTRY(vkAcquireProfilingLockKHR,                                   acquireProfilingLockKHR),
++      VK_NULL_FUNC_ENTRY(vkReleaseProfilingLockKHR,                                   releaseProfilingLockKHR),
 +      VK_NULL_FUNC_ENTRY(vkCmdSetFragmentShadingRateKHR,                              cmdSetFragmentShadingRateKHR),
 +      VK_NULL_FUNC_ENTRY(vkCmdRefreshObjectsKHR,                                              cmdRefreshObjectsKHR),
++      VK_NULL_FUNC_ENTRY(vkCmdSetEvent2KHR,                                                   cmdSetEvent2KHR),
++      VK_NULL_FUNC_ENTRY(vkCmdResetEvent2KHR,                                                 cmdResetEvent2KHR),
++      VK_NULL_FUNC_ENTRY(vkCmdWaitEvents2KHR,                                                 cmdWaitEvents2KHR),
++      VK_NULL_FUNC_ENTRY(vkCmdPipelineBarrier2KHR,                                    cmdPipelineBarrier2KHR),
++      VK_NULL_FUNC_ENTRY(vkCmdWriteTimestamp2KHR,                                             cmdWriteTimestamp2KHR),
++      VK_NULL_FUNC_ENTRY(vkQueueSubmit2KHR,                                                   queueSubmit2KHR),
++      VK_NULL_FUNC_ENTRY(vkCmdWriteBufferMarker2AMD,                                  cmdWriteBufferMarker2AMD),
++      VK_NULL_FUNC_ENTRY(vkGetQueueCheckpointData2NV,                                 getQueueCheckpointData2NV),
 +      VK_NULL_FUNC_ENTRY(vkCmdCopyBuffer2KHR,                                                 cmdCopyBuffer2KHR),
 +      VK_NULL_FUNC_ENTRY(vkCmdCopyImage2KHR,                                                  cmdCopyImage2KHR),
 +      VK_NULL_FUNC_ENTRY(vkCmdCopyBufferToImage2KHR,                                  cmdCopyBufferToImage2KHR),
 +      VK_NULL_FUNC_ENTRY(vkCmdCopyImageToBuffer2KHR,                                  cmdCopyImageToBuffer2KHR),
 +      VK_NULL_FUNC_ENTRY(vkCmdBlitImage2KHR,                                                  cmdBlitImage2KHR),
 +      VK_NULL_FUNC_ENTRY(vkCmdResolveImage2KHR,                                               cmdResolveImage2KHR),
 +      VK_NULL_FUNC_ENTRY(vkDisplayPowerControlEXT,                                    displayPowerControlEXT),
 +      VK_NULL_FUNC_ENTRY(vkRegisterDeviceEventEXT,                                    registerDeviceEventEXT),
 +      VK_NULL_FUNC_ENTRY(vkRegisterDisplayEventEXT,                                   registerDisplayEventEXT),
 +      VK_NULL_FUNC_ENTRY(vkGetSwapchainCounterEXT,                                    getSwapchainCounterEXT),
 +      VK_NULL_FUNC_ENTRY(vkCmdSetDiscardRectangleEXT,                                 cmdSetDiscardRectangleEXT),
 +      VK_NULL_FUNC_ENTRY(vkSetHdrMetadataEXT,                                                 setHdrMetadataEXT),
++      VK_NULL_FUNC_ENTRY(vkSetDebugUtilsObjectNameEXT,                                setDebugUtilsObjectNameEXT),
++      VK_NULL_FUNC_ENTRY(vkSetDebugUtilsObjectTagEXT,                                 setDebugUtilsObjectTagEXT),
++      VK_NULL_FUNC_ENTRY(vkQueueBeginDebugUtilsLabelEXT,                              queueBeginDebugUtilsLabelEXT),
++      VK_NULL_FUNC_ENTRY(vkQueueEndDebugUtilsLabelEXT,                                queueEndDebugUtilsLabelEXT),
++      VK_NULL_FUNC_ENTRY(vkQueueInsertDebugUtilsLabelEXT,                             queueInsertDebugUtilsLabelEXT),
++      VK_NULL_FUNC_ENTRY(vkCmdBeginDebugUtilsLabelEXT,                                cmdBeginDebugUtilsLabelEXT),
++      VK_NULL_FUNC_ENTRY(vkCmdEndDebugUtilsLabelEXT,                                  cmdEndDebugUtilsLabelEXT),
++      VK_NULL_FUNC_ENTRY(vkCmdInsertDebugUtilsLabelEXT,                               cmdInsertDebugUtilsLabelEXT),
 +      VK_NULL_FUNC_ENTRY(vkCmdSetSampleLocationsEXT,                                  cmdSetSampleLocationsEXT),
 +      VK_NULL_FUNC_ENTRY(vkGetImageDrmFormatModifierPropertiesEXT,    getImageDrmFormatModifierPropertiesEXT),
 +      VK_NULL_FUNC_ENTRY(vkGetMemoryHostPointerPropertiesEXT,                 getMemoryHostPointerPropertiesEXT),
 +      VK_NULL_FUNC_ENTRY(vkGetCalibratedTimestampsEXT,                                getCalibratedTimestampsEXT),
 +      VK_NULL_FUNC_ENTRY(vkCmdSetLineStippleEXT,                                              cmdSetLineStippleEXT),
 +      VK_NULL_FUNC_ENTRY(vkCmdSetCullModeEXT,                                                 cmdSetCullModeEXT),
 +      VK_NULL_FUNC_ENTRY(vkCmdSetFrontFaceEXT,                                                cmdSetFrontFaceEXT),
 +      VK_NULL_FUNC_ENTRY(vkCmdSetPrimitiveTopologyEXT,                                cmdSetPrimitiveTopologyEXT),
 +      VK_NULL_FUNC_ENTRY(vkCmdSetViewportWithCountEXT,                                cmdSetViewportWithCountEXT),
 +      VK_NULL_FUNC_ENTRY(vkCmdSetScissorWithCountEXT,                                 cmdSetScissorWithCountEXT),
 +      VK_NULL_FUNC_ENTRY(vkCmdBindVertexBuffers2EXT,                                  cmdBindVertexBuffers2EXT),
 +      VK_NULL_FUNC_ENTRY(vkCmdSetDepthTestEnableEXT,                                  cmdSetDepthTestEnableEXT),
 +      VK_NULL_FUNC_ENTRY(vkCmdSetDepthWriteEnableEXT,                                 cmdSetDepthWriteEnableEXT),
 +      VK_NULL_FUNC_ENTRY(vkCmdSetDepthCompareOpEXT,                                   cmdSetDepthCompareOpEXT),
 +      VK_NULL_FUNC_ENTRY(vkCmdSetDepthBoundsTestEnableEXT,                    cmdSetDepthBoundsTestEnableEXT),
 +      VK_NULL_FUNC_ENTRY(vkCmdSetStencilTestEnableEXT,                                cmdSetStencilTestEnableEXT),
 +      VK_NULL_FUNC_ENTRY(vkCmdSetStencilOpEXT,                                                cmdSetStencilOpEXT),
++      VK_NULL_FUNC_ENTRY(vkCmdSetVertexInputEXT,                                              cmdSetVertexInputEXT),
++      VK_NULL_FUNC_ENTRY(vkCmdSetPatchControlPointsEXT,                               cmdSetPatchControlPointsEXT),
++      VK_NULL_FUNC_ENTRY(vkCmdSetRasterizerDiscardEnableEXT,                  cmdSetRasterizerDiscardEnableEXT),
++      VK_NULL_FUNC_ENTRY(vkCmdSetDepthBiasEnableEXT,                                  cmdSetDepthBiasEnableEXT),
++      VK_NULL_FUNC_ENTRY(vkCmdSetLogicOpEXT,                                                  cmdSetLogicOpEXT),
++      VK_NULL_FUNC_ENTRY(vkCmdSetPrimitiveRestartEnableEXT,                   cmdSetPrimitiveRestartEnableEXT),
++      VK_NULL_FUNC_ENTRY(vkCmdSetColorWriteEnableEXT,                                 cmdSetColorWriteEnableEXT),
 +};
 +
index 3e1aca4,0000000..cabe1f5
mode 100644,000000..100644
--- /dev/null
@@@ -1,37 -1,0 +1,38 @@@
 +/* WARNING: This is auto-generated file. Do not modify, since changes will
 + * be lost! Modify the generating script instead.
 + */
 +namespace vk
 +{
 +template<typename T> VkObjectType getObjectType       (void);
 +template<> inline VkObjectType        getObjectType<VkBuffer>                                 (void) { return VK_OBJECT_TYPE_BUFFER;                                          }
 +template<> inline VkObjectType        getObjectType<VkImage>                                  (void) { return VK_OBJECT_TYPE_IMAGE;                                           }
 +template<> inline VkObjectType        getObjectType<VkInstance>                               (void) { return VK_OBJECT_TYPE_INSTANCE;                                        }
 +template<> inline VkObjectType        getObjectType<VkPhysicalDevice>                 (void) { return VK_OBJECT_TYPE_PHYSICAL_DEVICE;                         }
 +template<> inline VkObjectType        getObjectType<VkDevice>                                 (void) { return VK_OBJECT_TYPE_DEVICE;                                          }
 +template<> inline VkObjectType        getObjectType<VkQueue>                                  (void) { return VK_OBJECT_TYPE_QUEUE;                                           }
 +template<> inline VkObjectType        getObjectType<VkSemaphore>                              (void) { return VK_OBJECT_TYPE_SEMAPHORE;                                       }
 +template<> inline VkObjectType        getObjectType<VkCommandBuffer>                  (void) { return VK_OBJECT_TYPE_COMMAND_BUFFER;                          }
 +template<> inline VkObjectType        getObjectType<VkFence>                                  (void) { return VK_OBJECT_TYPE_FENCE;                                           }
 +template<> inline VkObjectType        getObjectType<VkDeviceMemory>                   (void) { return VK_OBJECT_TYPE_DEVICE_MEMORY;                           }
 +template<> inline VkObjectType        getObjectType<VkEvent>                                  (void) { return VK_OBJECT_TYPE_EVENT;                                           }
 +template<> inline VkObjectType        getObjectType<VkQueryPool>                              (void) { return VK_OBJECT_TYPE_QUERY_POOL;                                      }
 +template<> inline VkObjectType        getObjectType<VkBufferView>                             (void) { return VK_OBJECT_TYPE_BUFFER_VIEW;                                     }
 +template<> inline VkObjectType        getObjectType<VkImageView>                              (void) { return VK_OBJECT_TYPE_IMAGE_VIEW;                                      }
 +template<> inline VkObjectType        getObjectType<VkShaderModule>                   (void) { return VK_OBJECT_TYPE_SHADER_MODULE;                           }
 +template<> inline VkObjectType        getObjectType<VkPipelineCache>                  (void) { return VK_OBJECT_TYPE_PIPELINE_CACHE;                          }
 +template<> inline VkObjectType        getObjectType<VkPipelineLayout>                 (void) { return VK_OBJECT_TYPE_PIPELINE_LAYOUT;                         }
 +template<> inline VkObjectType        getObjectType<VkPipeline>                               (void) { return VK_OBJECT_TYPE_PIPELINE;                                        }
 +template<> inline VkObjectType        getObjectType<VkRenderPass>                             (void) { return VK_OBJECT_TYPE_RENDER_PASS;                                     }
 +template<> inline VkObjectType        getObjectType<VkDescriptorSetLayout>    (void) { return VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT;           }
 +template<> inline VkObjectType        getObjectType<VkSampler>                                (void) { return VK_OBJECT_TYPE_SAMPLER;                                         }
 +template<> inline VkObjectType        getObjectType<VkDescriptorSet>                  (void) { return VK_OBJECT_TYPE_DESCRIPTOR_SET;                          }
 +template<> inline VkObjectType        getObjectType<VkDescriptorPool>                 (void) { return VK_OBJECT_TYPE_DESCRIPTOR_POOL;                         }
 +template<> inline VkObjectType        getObjectType<VkFramebuffer>                    (void) { return VK_OBJECT_TYPE_FRAMEBUFFER;                                     }
 +template<> inline VkObjectType        getObjectType<VkCommandPool>                    (void) { return VK_OBJECT_TYPE_COMMAND_POOL;                            }
 +template<> inline VkObjectType        getObjectType<VkSamplerYcbcrConversion> (void) { return VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION;        }
 +template<> inline VkObjectType        getObjectType<VkSurfaceKHR>                             (void) { return VK_OBJECT_TYPE_SURFACE_KHR;                                     }
 +template<> inline VkObjectType        getObjectType<VkSwapchainKHR>                   (void) { return VK_OBJECT_TYPE_SWAPCHAIN_KHR;                           }
 +template<> inline VkObjectType        getObjectType<VkDisplayKHR>                             (void) { return VK_OBJECT_TYPE_DISPLAY_KHR;                                     }
 +template<> inline VkObjectType        getObjectType<VkDisplayModeKHR>                 (void) { return VK_OBJECT_TYPE_DISPLAY_MODE_KHR;                        }
++template<> inline VkObjectType        getObjectType<VkDebugUtilsMessengerEXT> (void) { return VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT;       }
 +}
index b977990,0000000..9c18e71
mode 100644,000000..100644
--- /dev/null
@@@ -1,28 -1,0 +1,29 @@@
 +/* WARNING: This is auto-generated file. Do not modify, since changes will
 + * be lost! Modify the generating script instead.
 + */
 +Move<VkInstance>                              createInstance                                  (const PlatformInterface& vk, const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
 +Move<VkDevice>                                        createDevice                                    (const PlatformInterface& vkp, VkInstance instance, const InstanceInterface& vk, VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
 +Move<VkDeviceMemory>                  allocateMemory                                  (const DeviceInterface& vk, VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
 +Move<VkFence>                                 createFence                                             (const DeviceInterface& vk, VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
 +Move<VkSemaphore>                             createSemaphore                                 (const DeviceInterface& vk, VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
 +Move<VkEvent>                                 createEvent                                             (const DeviceInterface& vk, VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
 +Move<VkQueryPool>                             createQueryPool                                 (const DeviceInterface& vk, VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
 +Move<VkBuffer>                                        createBuffer                                    (const DeviceInterface& vk, VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
 +Move<VkBufferView>                            createBufferView                                (const DeviceInterface& vk, VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
 +Move<VkImage>                                 createImage                                             (const DeviceInterface& vk, VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
 +Move<VkImageView>                             createImageView                                 (const DeviceInterface& vk, VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
 +Move<VkPipelineCache>                 createPipelineCache                             (const DeviceInterface& vk, VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
 +Move<VkPipelineLayout>                        createPipelineLayout                    (const DeviceInterface& vk, VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
 +Move<VkSampler>                                       createSampler                                   (const DeviceInterface& vk, VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
 +Move<VkDescriptorSetLayout>           createDescriptorSetLayout               (const DeviceInterface& vk, VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
 +Move<VkDescriptorPool>                        createDescriptorPool                    (const DeviceInterface& vk, VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
 +Move<VkFramebuffer>                           createFramebuffer                               (const DeviceInterface& vk, VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
 +Move<VkRenderPass>                            createRenderPass                                (const DeviceInterface& vk, VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
 +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<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<VkDebugUtilsMessengerEXT>        createDebugUtilsMessengerEXT    (const InstanceInterface& vk, VkInstance instance, const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
 +Move<VkSurfaceKHR>                            createHeadlessSurfaceEXT                (const InstanceInterface& vk, VkInstance instance, const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
index 1bf0225,0000000..bf7ddc4
mode 100644,000000..100644
--- /dev/null
@@@ -1,273 -1,0 +1,280 @@@
 +/* WARNING: This is auto-generated file. Do not modify, since changes will
 + * be lost! Modify the generating script instead.
 + */
 +namespace refdetails
 +{
 +
 +template<>
 +void Deleter<VkFence>::operator() (VkFence obj) const
 +{
 +      m_deviceIface->destroyFence(m_device, obj, m_allocator);
 +}
 +
 +template<>
 +void Deleter<VkSemaphore>::operator() (VkSemaphore obj) const
 +{
 +      m_deviceIface->destroySemaphore(m_device, obj, m_allocator);
 +}
 +
 +template<>
 +void Deleter<VkEvent>::operator() (VkEvent obj) const
 +{
 +      m_deviceIface->destroyEvent(m_device, obj, m_allocator);
 +}
 +
 +template<>
 +void Deleter<VkBuffer>::operator() (VkBuffer obj) const
 +{
 +      m_deviceIface->destroyBuffer(m_device, obj, m_allocator);
 +}
 +
 +template<>
 +void Deleter<VkBufferView>::operator() (VkBufferView obj) const
 +{
 +      m_deviceIface->destroyBufferView(m_device, obj, m_allocator);
 +}
 +
 +template<>
 +void Deleter<VkImage>::operator() (VkImage obj) const
 +{
 +      m_deviceIface->destroyImage(m_device, obj, m_allocator);
 +}
 +
 +template<>
 +void Deleter<VkImageView>::operator() (VkImageView obj) const
 +{
 +      m_deviceIface->destroyImageView(m_device, obj, m_allocator);
 +}
 +
 +template<>
 +void Deleter<VkPipelineCache>::operator() (VkPipelineCache obj) const
 +{
 +      m_deviceIface->destroyPipelineCache(m_device, obj, m_allocator);
 +}
 +
 +template<>
 +void Deleter<VkPipeline>::operator() (VkPipeline obj) const
 +{
 +      m_deviceIface->destroyPipeline(m_device, obj, m_allocator);
 +}
 +
 +template<>
 +void Deleter<VkPipelineLayout>::operator() (VkPipelineLayout obj) const
 +{
 +      m_deviceIface->destroyPipelineLayout(m_device, obj, m_allocator);
 +}
 +
 +template<>
 +void Deleter<VkSampler>::operator() (VkSampler obj) const
 +{
 +      m_deviceIface->destroySampler(m_device, obj, m_allocator);
 +}
 +
 +template<>
 +void Deleter<VkDescriptorSetLayout>::operator() (VkDescriptorSetLayout obj) const
 +{
 +      m_deviceIface->destroyDescriptorSetLayout(m_device, obj, m_allocator);
 +}
 +
 +template<>
 +void Deleter<VkFramebuffer>::operator() (VkFramebuffer obj) const
 +{
 +      m_deviceIface->destroyFramebuffer(m_device, obj, m_allocator);
 +}
 +
 +template<>
 +void Deleter<VkRenderPass>::operator() (VkRenderPass obj) const
 +{
 +      m_deviceIface->destroyRenderPass(m_device, obj, m_allocator);
 +}
 +
 +template<>
 +void Deleter<VkSamplerYcbcrConversion>::operator() (VkSamplerYcbcrConversion obj) const
 +{
 +      m_deviceIface->destroySamplerYcbcrConversion(m_device, obj, m_allocator);
 +}
 +
 +} // refdetails
 +
 +Move<VkInstance> createInstance (const PlatformInterface& vk, const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator)
 +{
 +      VkInstance object = 0;
 +      VK_CHECK(vk.createInstance(pCreateInfo, pAllocator, &object));
 +      return Move<VkInstance>(check<VkInstance>(object), Deleter<VkInstance>(vk, object, pAllocator));
 +}
 +
 +Move<VkDevice> createDevice (const PlatformInterface& vkp, VkInstance instance, const InstanceInterface& vk, VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator)
 +{
 +      VkDevice object = 0;
 +      VK_CHECK(vk.createDevice(physicalDevice, pCreateInfo, pAllocator, &object));
 +      return Move<VkDevice>(check<VkDevice>(object), Deleter<VkDevice>(vkp, instance, object, pAllocator));
 +}
 +
 +Move<VkDeviceMemory> allocateMemory (const DeviceInterface& vk, VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator)
 +{
 +      VkDeviceMemory object = 0;
 +      VK_CHECK(vk.allocateMemory(device, pAllocateInfo, pAllocator, &object));
 +      return Move<VkDeviceMemory>(check<VkDeviceMemory>(object), Deleter<VkDeviceMemory>(vk, device, pAllocator));
 +}
 +
 +Move<VkFence> createFence (const DeviceInterface& vk, VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator)
 +{
 +      VkFence object = 0;
 +      VK_CHECK(vk.createFence(device, pCreateInfo, pAllocator, &object));
 +      return Move<VkFence>(check<VkFence>(object), Deleter<VkFence>(vk, device, pAllocator));
 +}
 +
 +Move<VkSemaphore> createSemaphore (const DeviceInterface& vk, VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator)
 +{
 +      VkSemaphore object = 0;
 +      VK_CHECK(vk.createSemaphore(device, pCreateInfo, pAllocator, &object));
 +      return Move<VkSemaphore>(check<VkSemaphore>(object), Deleter<VkSemaphore>(vk, device, pAllocator));
 +}
 +
 +Move<VkEvent> createEvent (const DeviceInterface& vk, VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator)
 +{
 +      VkEvent object = 0;
 +      VK_CHECK(vk.createEvent(device, pCreateInfo, pAllocator, &object));
 +      return Move<VkEvent>(check<VkEvent>(object), Deleter<VkEvent>(vk, device, pAllocator));
 +}
 +
 +Move<VkQueryPool> createQueryPool (const DeviceInterface& vk, VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator)
 +{
 +      VkQueryPool object = 0;
 +      VK_CHECK(vk.createQueryPool(device, pCreateInfo, pAllocator, &object));
 +      return Move<VkQueryPool>(check<VkQueryPool>(object), Deleter<VkQueryPool>(vk, device, pAllocator));
 +}
 +
 +Move<VkBuffer> createBuffer (const DeviceInterface& vk, VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator)
 +{
 +      VkBuffer object = 0;
 +      VK_CHECK(vk.createBuffer(device, pCreateInfo, pAllocator, &object));
 +      return Move<VkBuffer>(check<VkBuffer>(object), Deleter<VkBuffer>(vk, device, pAllocator));
 +}
 +
 +Move<VkBufferView> createBufferView (const DeviceInterface& vk, VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator)
 +{
 +      VkBufferView object = 0;
 +      VK_CHECK(vk.createBufferView(device, pCreateInfo, pAllocator, &object));
 +      return Move<VkBufferView>(check<VkBufferView>(object), Deleter<VkBufferView>(vk, device, pAllocator));
 +}
 +
 +Move<VkImage> createImage (const DeviceInterface& vk, VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator)
 +{
 +      VkImage object = 0;
 +      VK_CHECK(vk.createImage(device, pCreateInfo, pAllocator, &object));
 +      return Move<VkImage>(check<VkImage>(object), Deleter<VkImage>(vk, device, pAllocator));
 +}
 +
 +Move<VkImageView> createImageView (const DeviceInterface& vk, VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator)
 +{
 +      VkImageView object = 0;
 +      VK_CHECK(vk.createImageView(device, pCreateInfo, pAllocator, &object));
 +      return Move<VkImageView>(check<VkImageView>(object), Deleter<VkImageView>(vk, device, pAllocator));
 +}
 +
 +Move<VkPipelineCache> createPipelineCache (const DeviceInterface& vk, VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator)
 +{
 +      VkPipelineCache object = 0;
 +      VK_CHECK(vk.createPipelineCache(device, pCreateInfo, pAllocator, &object));
 +      return Move<VkPipelineCache>(check<VkPipelineCache>(object), Deleter<VkPipelineCache>(vk, device, pAllocator));
 +}
 +
 +Move<VkPipelineLayout> createPipelineLayout (const DeviceInterface& vk, VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator)
 +{
 +      VkPipelineLayout object = 0;
 +      VK_CHECK(vk.createPipelineLayout(device, pCreateInfo, pAllocator, &object));
 +      return Move<VkPipelineLayout>(check<VkPipelineLayout>(object), Deleter<VkPipelineLayout>(vk, device, pAllocator));
 +}
 +
 +Move<VkSampler> createSampler (const DeviceInterface& vk, VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator)
 +{
 +      VkSampler object = 0;
 +      VK_CHECK(vk.createSampler(device, pCreateInfo, pAllocator, &object));
 +      return Move<VkSampler>(check<VkSampler>(object), Deleter<VkSampler>(vk, device, pAllocator));
 +}
 +
 +Move<VkDescriptorSetLayout> createDescriptorSetLayout (const DeviceInterface& vk, VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator)
 +{
 +      VkDescriptorSetLayout object = 0;
 +      VK_CHECK(vk.createDescriptorSetLayout(device, pCreateInfo, pAllocator, &object));
 +      return Move<VkDescriptorSetLayout>(check<VkDescriptorSetLayout>(object), Deleter<VkDescriptorSetLayout>(vk, device, pAllocator));
 +}
 +
 +Move<VkDescriptorPool> createDescriptorPool (const DeviceInterface& vk, VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator)
 +{
 +      VkDescriptorPool object = 0;
 +      VK_CHECK(vk.createDescriptorPool(device, pCreateInfo, pAllocator, &object));
 +      return Move<VkDescriptorPool>(check<VkDescriptorPool>(object), Deleter<VkDescriptorPool>(vk, device, pAllocator));
 +}
 +
 +Move<VkFramebuffer> createFramebuffer (const DeviceInterface& vk, VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator)
 +{
 +      VkFramebuffer object = 0;
 +      VK_CHECK(vk.createFramebuffer(device, pCreateInfo, pAllocator, &object));
 +      return Move<VkFramebuffer>(check<VkFramebuffer>(object), Deleter<VkFramebuffer>(vk, device, pAllocator));
 +}
 +
 +Move<VkRenderPass> createRenderPass (const DeviceInterface& vk, VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator)
 +{
 +      VkRenderPass object = 0;
 +      VK_CHECK(vk.createRenderPass(device, pCreateInfo, pAllocator, &object));
 +      return Move<VkRenderPass>(check<VkRenderPass>(object), Deleter<VkRenderPass>(vk, device, pAllocator));
 +}
 +
 +Move<VkCommandPool> createCommandPool (const DeviceInterface& vk, VkDevice device, const VkCommandPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator)
 +{
 +      VkCommandPool object = 0;
 +      VK_CHECK(vk.createCommandPool(device, pCreateInfo, pAllocator, &object));
 +      return Move<VkCommandPool>(check<VkCommandPool>(object), Deleter<VkCommandPool>(vk, device, pAllocator));
 +}
 +
 +Move<VkSamplerYcbcrConversion> createSamplerYcbcrConversion (const DeviceInterface& vk, VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator)
 +{
 +      VkSamplerYcbcrConversion object = 0;
 +      VK_CHECK(vk.createSamplerYcbcrConversion(device, pCreateInfo, pAllocator, &object));
 +      return Move<VkSamplerYcbcrConversion>(check<VkSamplerYcbcrConversion>(object), Deleter<VkSamplerYcbcrConversion>(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;
 +      VK_CHECK(vk.createSwapchainKHR(device, pCreateInfo, pAllocator, &object));
 +      return Move<VkSwapchainKHR>(check<VkSwapchainKHR>(object), Deleter<VkSwapchainKHR>(vk, device, pAllocator));
 +}
 +
 +Move<VkSurfaceKHR> createDisplayPlaneSurfaceKHR (const InstanceInterface& vk, VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator)
 +{
 +      VkSurfaceKHR object = 0;
 +      VK_CHECK(vk.createDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, &object));
 +      return Move<VkSurfaceKHR>(check<VkSurfaceKHR>(object), Deleter<VkSurfaceKHR>(vk, instance, pAllocator));
 +}
 +
 +Move<VkSwapchainKHR> createSharedSwapchainsKHR (const DeviceInterface& vk, VkDevice device, deUint32 swapchainCount, const VkSwapchainCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator)
 +{
 +      VkSwapchainKHR object = 0;
 +      VK_CHECK(vk.createSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, &object));
 +      return Move<VkSwapchainKHR>(check<VkSwapchainKHR>(object), Deleter<VkSwapchainKHR>(vk, device, pAllocator));
 +}
 +
++Move<VkDebugUtilsMessengerEXT> createDebugUtilsMessengerEXT (const InstanceInterface& vk, VkInstance instance, const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator)
++{
++      VkDebugUtilsMessengerEXT object = 0;
++      VK_CHECK(vk.createDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, &object));
++      return Move<VkDebugUtilsMessengerEXT>(check<VkDebugUtilsMessengerEXT>(object), Deleter<VkDebugUtilsMessengerEXT>(vk, instance, pAllocator));
++}
++
 +Move<VkSurfaceKHR> createHeadlessSurfaceEXT (const InstanceInterface& vk, VkInstance instance, const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator)
 +{
 +      VkSurfaceKHR object = 0;
 +      VK_CHECK(vk.createHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, &object));
 +      return Move<VkSurfaceKHR>(check<VkSurfaceKHR>(object), Deleter<VkSurfaceKHR>(vk, instance, pAllocator));
 +}
 +
index b47b094,0000000..0f44f6c
mode 100644,000000..100644
--- /dev/null
@@@ -1,640 -1,0 +1,677 @@@
- const char*   getFaultLevelName                                               (VkFaultLevel value);
- const char*   getFaultTypeName                                                (VkFaultType value);
- const char*   getFaultQueryBehaviorName                               (VkFaultQueryBehavior value);
- const char*   getPipelineMatchControlName                             (VkPipelineMatchControl value);
 +/* WARNING: This is auto-generated file. Do not modify, since changes will
 + * be lost! Modify the generating script instead.
 + */
 +const char*   getResultName                                                   (VkResult value);
 +const char*   getStructureTypeName                                    (VkStructureType value);
 +const char*   getImageLayoutName                                              (VkImageLayout value);
 +const char*   getObjectTypeName                                               (VkObjectType value);
 +const char*   getVendorIdName                                                 (VkVendorId value);
 +const char*   getPipelineCacheHeaderVersionName               (VkPipelineCacheHeaderVersion value);
 +const char*   getSystemAllocationScopeName                    (VkSystemAllocationScope value);
 +const char*   getInternalAllocationTypeName                   (VkInternalAllocationType value);
 +const char*   getFormatName                                                   (VkFormat value);
 +const char*   getImageTilingName                                              (VkImageTiling value);
 +const char*   getImageTypeName                                                (VkImageType value);
 +const char*   getPhysicalDeviceTypeName                               (VkPhysicalDeviceType value);
 +const char*   getQueryTypeName                                                (VkQueryType value);
 +const char*   getSharingModeName                                              (VkSharingMode value);
 +const char*   getComponentSwizzleName                                 (VkComponentSwizzle value);
 +const char*   getImageViewTypeName                                    (VkImageViewType value);
 +const char*   getBlendFactorName                                              (VkBlendFactor value);
 +const char*   getBlendOpName                                                  (VkBlendOp value);
 +const char*   getCompareOpName                                                (VkCompareOp value);
 +const char*   getDynamicStateName                                             (VkDynamicState value);
 +const char*   getFrontFaceName                                                (VkFrontFace value);
 +const char*   getVertexInputRateName                                  (VkVertexInputRate value);
 +const char*   getPrimitiveTopologyName                                (VkPrimitiveTopology value);
 +const char*   getPolygonModeName                                              (VkPolygonMode value);
 +const char*   getStencilOpName                                                (VkStencilOp value);
 +const char*   getLogicOpName                                                  (VkLogicOp value);
 +const char*   getBorderColorName                                              (VkBorderColor value);
 +const char*   getFilterName                                                   (VkFilter value);
 +const char*   getSamplerAddressModeName                               (VkSamplerAddressMode value);
 +const char*   getSamplerMipmapModeName                                (VkSamplerMipmapMode value);
 +const char*   getDescriptorTypeName                                   (VkDescriptorType value);
 +const char*   getAttachmentLoadOpName                                 (VkAttachmentLoadOp value);
 +const char*   getAttachmentStoreOpName                                (VkAttachmentStoreOp value);
 +const char*   getPipelineBindPointName                                (VkPipelineBindPoint value);
 +const char*   getCommandBufferLevelName                               (VkCommandBufferLevel value);
 +const char*   getIndexTypeName                                                (VkIndexType value);
 +const char*   getSubpassContentsName                                  (VkSubpassContents value);
- inline tcu::Format::Enum<VkFaultLevel>                                                        getFaultLevelStr                                                (VkFaultLevel value)                                            { return tcu::Format::Enum<VkFaultLevel>(getFaultLevelName, value);                                                                                             }
- inline tcu::Format::Enum<VkFaultType>                                                 getFaultTypeStr                                                 (VkFaultType value)                                                     { return tcu::Format::Enum<VkFaultType>(getFaultTypeName, value);                                                                                               }
- inline tcu::Format::Enum<VkFaultQueryBehavior>                                        getFaultQueryBehaviorStr                                (VkFaultQueryBehavior value)                            { return tcu::Format::Enum<VkFaultQueryBehavior>(getFaultQueryBehaviorName, value);                                                             }
- inline tcu::Format::Enum<VkPipelineMatchControl>                              getPipelineMatchControlStr                              (VkPipelineMatchControl value)                          { return tcu::Format::Enum<VkPipelineMatchControl>(getPipelineMatchControlName, value);                                                 }
 +const char*   getPointClippingBehaviorName                    (VkPointClippingBehavior value);
 +const char*   getTessellationDomainOriginName                 (VkTessellationDomainOrigin value);
 +const char*   getSamplerYcbcrModelConversionName              (VkSamplerYcbcrModelConversion value);
 +const char*   getSamplerYcbcrRangeName                                (VkSamplerYcbcrRange value);
 +const char*   getChromaLocationName                                   (VkChromaLocation value);
 +const char*   getDriverIdName                                                 (VkDriverId value);
 +const char*   getShaderFloatControlsIndependenceName  (VkShaderFloatControlsIndependence value);
 +const char*   getSamplerReductionModeName                             (VkSamplerReductionMode value);
 +const char*   getSemaphoreTypeName                                    (VkSemaphoreType value);
++const char*   getFaultLevelName                                               (VkFaultLevel value);
++const char*   getFaultTypeName                                                (VkFaultType value);
++const char*   getFaultQueryBehaviorName                               (VkFaultQueryBehavior value);
++const char*   getPipelineMatchControlName                             (VkPipelineMatchControl value);
 +const char*   getPresentModeKHRName                                   (VkPresentModeKHR value);
 +const char*   getColorSpaceKHRName                                    (VkColorSpaceKHR value);
++const char*   getPerformanceCounterUnitKHRName                (VkPerformanceCounterUnitKHR value);
++const char*   getPerformanceCounterScopeKHRName               (VkPerformanceCounterScopeKHR value);
++const char*   getPerformanceCounterStorageKHRName             (VkPerformanceCounterStorageKHR value);
 +const char*   getFragmentShadingRateCombinerOpKHRName (VkFragmentShadingRateCombinerOpKHR value);
 +const char*   getDisplayPowerStateEXTName                             (VkDisplayPowerStateEXT value);
 +const char*   getDeviceEventTypeEXTName                               (VkDeviceEventTypeEXT value);
 +const char*   getDisplayEventTypeEXTName                              (VkDisplayEventTypeEXT value);
 +const char*   getDiscardRectangleModeEXTName                  (VkDiscardRectangleModeEXT value);
 +const char*   getConservativeRasterizationModeEXTName (VkConservativeRasterizationModeEXT value);
 +const char*   getBlendOverlapEXTName                                  (VkBlendOverlapEXT value);
 +const char*   getQueueGlobalPriorityEXTName                   (VkQueueGlobalPriorityEXT value);
 +const char*   getTimeDomainEXTName                                    (VkTimeDomainEXT value);
++const char*   getValidationFeatureEnableEXTName               (VkValidationFeatureEnableEXT value);
++const char*   getValidationFeatureDisableEXTName              (VkValidationFeatureDisableEXT value);
 +const char*   getLineRasterizationModeEXTName                 (VkLineRasterizationModeEXT value);
 +
 +inline tcu::Format::Enum<VkResult>                                                            getResultStr                                                    (VkResult value)                                                        { return tcu::Format::Enum<VkResult>(getResultName, value);                                                                                                             }
 +inline tcu::Format::Enum<VkStructureType>                                             getStructureTypeStr                                             (VkStructureType value)                                         { return tcu::Format::Enum<VkStructureType>(getStructureTypeName, value);                                                                               }
 +inline tcu::Format::Enum<VkImageLayout>                                                       getImageLayoutStr                                               (VkImageLayout value)                                           { return tcu::Format::Enum<VkImageLayout>(getImageLayoutName, value);                                                                                   }
 +inline tcu::Format::Enum<VkObjectType>                                                        getObjectTypeStr                                                (VkObjectType value)                                            { return tcu::Format::Enum<VkObjectType>(getObjectTypeName, value);                                                                                             }
 +inline tcu::Format::Enum<VkVendorId>                                                  getVendorIdStr                                                  (VkVendorId value)                                                      { return tcu::Format::Enum<VkVendorId>(getVendorIdName, value);                                                                                                 }
 +inline tcu::Format::Enum<VkPipelineCacheHeaderVersion>                        getPipelineCacheHeaderVersionStr                (VkPipelineCacheHeaderVersion value)            { return tcu::Format::Enum<VkPipelineCacheHeaderVersion>(getPipelineCacheHeaderVersionName, value);                             }
 +inline tcu::Format::Enum<VkSystemAllocationScope>                             getSystemAllocationScopeStr                             (VkSystemAllocationScope value)                         { return tcu::Format::Enum<VkSystemAllocationScope>(getSystemAllocationScopeName, value);                                               }
 +inline tcu::Format::Enum<VkInternalAllocationType>                            getInternalAllocationTypeStr                    (VkInternalAllocationType value)                        { return tcu::Format::Enum<VkInternalAllocationType>(getInternalAllocationTypeName, value);                                             }
 +inline tcu::Format::Enum<VkFormat>                                                            getFormatStr                                                    (VkFormat value)                                                        { return tcu::Format::Enum<VkFormat>(getFormatName, value);                                                                                                             }
 +inline tcu::Format::Enum<VkImageTiling>                                                       getImageTilingStr                                               (VkImageTiling value)                                           { return tcu::Format::Enum<VkImageTiling>(getImageTilingName, value);                                                                                   }
 +inline tcu::Format::Enum<VkImageType>                                                 getImageTypeStr                                                 (VkImageType value)                                                     { return tcu::Format::Enum<VkImageType>(getImageTypeName, value);                                                                                               }
 +inline tcu::Format::Enum<VkPhysicalDeviceType>                                        getPhysicalDeviceTypeStr                                (VkPhysicalDeviceType value)                            { return tcu::Format::Enum<VkPhysicalDeviceType>(getPhysicalDeviceTypeName, value);                                                             }
 +inline tcu::Format::Enum<VkQueryType>                                                 getQueryTypeStr                                                 (VkQueryType value)                                                     { return tcu::Format::Enum<VkQueryType>(getQueryTypeName, value);                                                                                               }
 +inline tcu::Format::Enum<VkSharingMode>                                                       getSharingModeStr                                               (VkSharingMode value)                                           { return tcu::Format::Enum<VkSharingMode>(getSharingModeName, value);                                                                                   }
 +inline tcu::Format::Enum<VkComponentSwizzle>                                  getComponentSwizzleStr                                  (VkComponentSwizzle value)                                      { return tcu::Format::Enum<VkComponentSwizzle>(getComponentSwizzleName, value);                                                                 }
 +inline tcu::Format::Enum<VkImageViewType>                                             getImageViewTypeStr                                             (VkImageViewType value)                                         { return tcu::Format::Enum<VkImageViewType>(getImageViewTypeName, value);                                                                               }
 +inline tcu::Format::Enum<VkBlendFactor>                                                       getBlendFactorStr                                               (VkBlendFactor value)                                           { return tcu::Format::Enum<VkBlendFactor>(getBlendFactorName, value);                                                                                   }
 +inline tcu::Format::Enum<VkBlendOp>                                                           getBlendOpStr                                                   (VkBlendOp value)                                                       { return tcu::Format::Enum<VkBlendOp>(getBlendOpName, value);                                                                                                   }
 +inline tcu::Format::Enum<VkCompareOp>                                                 getCompareOpStr                                                 (VkCompareOp value)                                                     { return tcu::Format::Enum<VkCompareOp>(getCompareOpName, value);                                                                                               }
 +inline tcu::Format::Enum<VkDynamicState>                                              getDynamicStateStr                                              (VkDynamicState value)                                          { return tcu::Format::Enum<VkDynamicState>(getDynamicStateName, value);                                                                                 }
 +inline tcu::Format::Enum<VkFrontFace>                                                 getFrontFaceStr                                                 (VkFrontFace value)                                                     { return tcu::Format::Enum<VkFrontFace>(getFrontFaceName, value);                                                                                               }
 +inline tcu::Format::Enum<VkVertexInputRate>                                           getVertexInputRateStr                                   (VkVertexInputRate value)                                       { return tcu::Format::Enum<VkVertexInputRate>(getVertexInputRateName, value);                                                                   }
 +inline tcu::Format::Enum<VkPrimitiveTopology>                                 getPrimitiveTopologyStr                                 (VkPrimitiveTopology value)                                     { return tcu::Format::Enum<VkPrimitiveTopology>(getPrimitiveTopologyName, value);                                                               }
 +inline tcu::Format::Enum<VkPolygonMode>                                                       getPolygonModeStr                                               (VkPolygonMode value)                                           { return tcu::Format::Enum<VkPolygonMode>(getPolygonModeName, value);                                                                                   }
 +inline tcu::Format::Enum<VkStencilOp>                                                 getStencilOpStr                                                 (VkStencilOp value)                                                     { return tcu::Format::Enum<VkStencilOp>(getStencilOpName, value);                                                                                               }
 +inline tcu::Format::Enum<VkLogicOp>                                                           getLogicOpStr                                                   (VkLogicOp value)                                                       { return tcu::Format::Enum<VkLogicOp>(getLogicOpName, value);                                                                                                   }
 +inline tcu::Format::Enum<VkBorderColor>                                                       getBorderColorStr                                               (VkBorderColor value)                                           { return tcu::Format::Enum<VkBorderColor>(getBorderColorName, value);                                                                                   }
 +inline tcu::Format::Enum<VkFilter>                                                            getFilterStr                                                    (VkFilter value)                                                        { return tcu::Format::Enum<VkFilter>(getFilterName, value);                                                                                                             }
 +inline tcu::Format::Enum<VkSamplerAddressMode>                                        getSamplerAddressModeStr                                (VkSamplerAddressMode value)                            { return tcu::Format::Enum<VkSamplerAddressMode>(getSamplerAddressModeName, value);                                                             }
 +inline tcu::Format::Enum<VkSamplerMipmapMode>                                 getSamplerMipmapModeStr                                 (VkSamplerMipmapMode value)                                     { return tcu::Format::Enum<VkSamplerMipmapMode>(getSamplerMipmapModeName, value);                                                               }
 +inline tcu::Format::Enum<VkDescriptorType>                                            getDescriptorTypeStr                                    (VkDescriptorType value)                                        { return tcu::Format::Enum<VkDescriptorType>(getDescriptorTypeName, value);                                                                             }
 +inline tcu::Format::Enum<VkAttachmentLoadOp>                                  getAttachmentLoadOpStr                                  (VkAttachmentLoadOp value)                                      { return tcu::Format::Enum<VkAttachmentLoadOp>(getAttachmentLoadOpName, value);                                                                 }
 +inline tcu::Format::Enum<VkAttachmentStoreOp>                                 getAttachmentStoreOpStr                                 (VkAttachmentStoreOp value)                                     { return tcu::Format::Enum<VkAttachmentStoreOp>(getAttachmentStoreOpName, value);                                                               }
 +inline tcu::Format::Enum<VkPipelineBindPoint>                                 getPipelineBindPointStr                                 (VkPipelineBindPoint value)                                     { return tcu::Format::Enum<VkPipelineBindPoint>(getPipelineBindPointName, value);                                                               }
 +inline tcu::Format::Enum<VkCommandBufferLevel>                                        getCommandBufferLevelStr                                (VkCommandBufferLevel value)                            { return tcu::Format::Enum<VkCommandBufferLevel>(getCommandBufferLevelName, value);                                                             }
 +inline tcu::Format::Enum<VkIndexType>                                                 getIndexTypeStr                                                 (VkIndexType value)                                                     { return tcu::Format::Enum<VkIndexType>(getIndexTypeName, value);                                                                                               }
 +inline tcu::Format::Enum<VkSubpassContents>                                           getSubpassContentsStr                                   (VkSubpassContents value)                                       { return tcu::Format::Enum<VkSubpassContents>(getSubpassContentsName, value);                                                                   }
- inline std::ostream&  operator<<      (std::ostream& s, VkFaultLevel value)                                           { return s << getFaultLevelStr(value);                                                  }
- inline std::ostream&  operator<<      (std::ostream& s, VkFaultType value)                                            { return s << getFaultTypeStr(value);                                                   }
- inline std::ostream&  operator<<      (std::ostream& s, VkFaultQueryBehavior value)                           { return s << getFaultQueryBehaviorStr(value);                                  }
- inline std::ostream&  operator<<      (std::ostream& s, VkPipelineMatchControl value)                         { return s << getPipelineMatchControlStr(value);                                }
 +inline tcu::Format::Enum<VkPointClippingBehavior>                             getPointClippingBehaviorStr                             (VkPointClippingBehavior value)                         { return tcu::Format::Enum<VkPointClippingBehavior>(getPointClippingBehaviorName, value);                                               }
 +inline tcu::Format::Enum<VkTessellationDomainOrigin>                  getTessellationDomainOriginStr                  (VkTessellationDomainOrigin value)                      { return tcu::Format::Enum<VkTessellationDomainOrigin>(getTessellationDomainOriginName, value);                                 }
 +inline tcu::Format::Enum<VkSamplerYcbcrModelConversion>                       getSamplerYcbcrModelConversionStr               (VkSamplerYcbcrModelConversion value)           { return tcu::Format::Enum<VkSamplerYcbcrModelConversion>(getSamplerYcbcrModelConversionName, value);                   }
 +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<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<VkFaultLevel>                                                        getFaultLevelStr                                                (VkFaultLevel value)                                            { return tcu::Format::Enum<VkFaultLevel>(getFaultLevelName, value);                                                                                             }
++inline tcu::Format::Enum<VkFaultType>                                                 getFaultTypeStr                                                 (VkFaultType value)                                                     { return tcu::Format::Enum<VkFaultType>(getFaultTypeName, value);                                                                                               }
++inline tcu::Format::Enum<VkFaultQueryBehavior>                                        getFaultQueryBehaviorStr                                (VkFaultQueryBehavior value)                            { return tcu::Format::Enum<VkFaultQueryBehavior>(getFaultQueryBehaviorName, value);                                                             }
++inline tcu::Format::Enum<VkPipelineMatchControl>                              getPipelineMatchControlStr                              (VkPipelineMatchControl value)                          { return tcu::Format::Enum<VkPipelineMatchControl>(getPipelineMatchControlName, value);                                                 }
 +inline tcu::Format::Enum<VkPresentModeKHR>                                            getPresentModeKHRStr                                    (VkPresentModeKHR value)                                        { return tcu::Format::Enum<VkPresentModeKHR>(getPresentModeKHRName, value);                                                                             }
 +inline tcu::Format::Enum<VkColorSpaceKHR>                                             getColorSpaceKHRStr                                             (VkColorSpaceKHR value)                                         { return tcu::Format::Enum<VkColorSpaceKHR>(getColorSpaceKHRName, 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<VkFragmentShadingRateCombinerOpKHR>  getFragmentShadingRateCombinerOpKHRStr  (VkFragmentShadingRateCombinerOpKHR value)      { return tcu::Format::Enum<VkFragmentShadingRateCombinerOpKHR>(getFragmentShadingRateCombinerOpKHRName, value); }
 +inline tcu::Format::Enum<VkDisplayPowerStateEXT>                              getDisplayPowerStateEXTStr                              (VkDisplayPowerStateEXT value)                          { return tcu::Format::Enum<VkDisplayPowerStateEXT>(getDisplayPowerStateEXTName, value);                                                 }
 +inline tcu::Format::Enum<VkDeviceEventTypeEXT>                                        getDeviceEventTypeEXTStr                                (VkDeviceEventTypeEXT value)                            { return tcu::Format::Enum<VkDeviceEventTypeEXT>(getDeviceEventTypeEXTName, value);                                                             }
 +inline tcu::Format::Enum<VkDisplayEventTypeEXT>                                       getDisplayEventTypeEXTStr                               (VkDisplayEventTypeEXT value)                           { return tcu::Format::Enum<VkDisplayEventTypeEXT>(getDisplayEventTypeEXTName, 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<VkBlendOverlapEXT>                                           getBlendOverlapEXTStr                                   (VkBlendOverlapEXT value)                                       { return tcu::Format::Enum<VkBlendOverlapEXT>(getBlendOverlapEXTName, value);                                                                   }
 +inline tcu::Format::Enum<VkQueueGlobalPriorityEXT>                            getQueueGlobalPriorityEXTStr                    (VkQueueGlobalPriorityEXT value)                        { return tcu::Format::Enum<VkQueueGlobalPriorityEXT>(getQueueGlobalPriorityEXTName, value);                                             }
 +inline tcu::Format::Enum<VkTimeDomainEXT>                                             getTimeDomainEXTStr                                             (VkTimeDomainEXT value)                                         { return tcu::Format::Enum<VkTimeDomainEXT>(getTimeDomainEXTName, value);                                                                               }
++inline tcu::Format::Enum<VkValidationFeatureEnableEXT>                        getValidationFeatureEnableEXTStr                (VkValidationFeatureEnableEXT value)            { return tcu::Format::Enum<VkValidationFeatureEnableEXT>(getValidationFeatureEnableEXTName, value);                             }
++inline tcu::Format::Enum<VkValidationFeatureDisableEXT>                       getValidationFeatureDisableEXTStr               (VkValidationFeatureDisableEXT value)           { return tcu::Format::Enum<VkValidationFeatureDisableEXT>(getValidationFeatureDisableEXTName, value);                   }
 +inline tcu::Format::Enum<VkLineRasterizationModeEXT>                  getLineRasterizationModeEXTStr                  (VkLineRasterizationModeEXT value)                      { return tcu::Format::Enum<VkLineRasterizationModeEXT>(getLineRasterizationModeEXTName, value);                                 }
 +
 +inline std::ostream&  operator<<      (std::ostream& s, VkResult value)                                                       { return s << getResultStr(value);                                                              }
 +inline std::ostream&  operator<<      (std::ostream& s, VkStructureType value)                                        { return s << getStructureTypeStr(value);                                               }
 +inline std::ostream&  operator<<      (std::ostream& s, VkImageLayout value)                                          { return s << getImageLayoutStr(value);                                                 }
 +inline std::ostream&  operator<<      (std::ostream& s, VkObjectType value)                                           { return s << getObjectTypeStr(value);                                                  }
 +inline std::ostream&  operator<<      (std::ostream& s, VkVendorId value)                                                     { return s << getVendorIdStr(value);                                                    }
 +inline std::ostream&  operator<<      (std::ostream& s, VkPipelineCacheHeaderVersion value)           { return s << getPipelineCacheHeaderVersionStr(value);                  }
 +inline std::ostream&  operator<<      (std::ostream& s, VkSystemAllocationScope value)                        { return s << getSystemAllocationScopeStr(value);                               }
 +inline std::ostream&  operator<<      (std::ostream& s, VkInternalAllocationType value)                       { return s << getInternalAllocationTypeStr(value);                              }
 +inline std::ostream&  operator<<      (std::ostream& s, VkFormat value)                                                       { return s << getFormatStr(value);                                                              }
 +inline std::ostream&  operator<<      (std::ostream& s, VkImageTiling value)                                          { return s << getImageTilingStr(value);                                                 }
 +inline std::ostream&  operator<<      (std::ostream& s, VkImageType value)                                            { return s << getImageTypeStr(value);                                                   }
 +inline std::ostream&  operator<<      (std::ostream& s, VkPhysicalDeviceType value)                           { return s << getPhysicalDeviceTypeStr(value);                                  }
 +inline std::ostream&  operator<<      (std::ostream& s, VkQueryType value)                                            { return s << getQueryTypeStr(value);                                                   }
 +inline std::ostream&  operator<<      (std::ostream& s, VkSharingMode value)                                          { return s << getSharingModeStr(value);                                                 }
 +inline std::ostream&  operator<<      (std::ostream& s, VkComponentSwizzle value)                                     { return s << getComponentSwizzleStr(value);                                    }
 +inline std::ostream&  operator<<      (std::ostream& s, VkImageViewType value)                                        { return s << getImageViewTypeStr(value);                                               }
 +inline std::ostream&  operator<<      (std::ostream& s, VkBlendFactor value)                                          { return s << getBlendFactorStr(value);                                                 }
 +inline std::ostream&  operator<<      (std::ostream& s, VkBlendOp value)                                                      { return s << getBlendOpStr(value);                                                             }
 +inline std::ostream&  operator<<      (std::ostream& s, VkCompareOp value)                                            { return s << getCompareOpStr(value);                                                   }
 +inline std::ostream&  operator<<      (std::ostream& s, VkDynamicState value)                                         { return s << getDynamicStateStr(value);                                                }
 +inline std::ostream&  operator<<      (std::ostream& s, VkFrontFace value)                                            { return s << getFrontFaceStr(value);                                                   }
 +inline std::ostream&  operator<<      (std::ostream& s, VkVertexInputRate value)                                      { return s << getVertexInputRateStr(value);                                             }
 +inline std::ostream&  operator<<      (std::ostream& s, VkPrimitiveTopology value)                            { return s << getPrimitiveTopologyStr(value);                                   }
 +inline std::ostream&  operator<<      (std::ostream& s, VkPolygonMode value)                                          { return s << getPolygonModeStr(value);                                                 }
 +inline std::ostream&  operator<<      (std::ostream& s, VkStencilOp value)                                            { return s << getStencilOpStr(value);                                                   }
 +inline std::ostream&  operator<<      (std::ostream& s, VkLogicOp value)                                                      { return s << getLogicOpStr(value);                                                             }
 +inline std::ostream&  operator<<      (std::ostream& s, VkBorderColor value)                                          { return s << getBorderColorStr(value);                                                 }
 +inline std::ostream&  operator<<      (std::ostream& s, VkFilter value)                                                       { return s << getFilterStr(value);                                                              }
 +inline std::ostream&  operator<<      (std::ostream& s, VkSamplerAddressMode value)                           { return s << getSamplerAddressModeStr(value);                                  }
 +inline std::ostream&  operator<<      (std::ostream& s, VkSamplerMipmapMode value)                            { return s << getSamplerMipmapModeStr(value);                                   }
 +inline std::ostream&  operator<<      (std::ostream& s, VkDescriptorType value)                                       { return s << getDescriptorTypeStr(value);                                              }
 +inline std::ostream&  operator<<      (std::ostream& s, VkAttachmentLoadOp value)                                     { return s << getAttachmentLoadOpStr(value);                                    }
 +inline std::ostream&  operator<<      (std::ostream& s, VkAttachmentStoreOp value)                            { return s << getAttachmentStoreOpStr(value);                                   }
 +inline std::ostream&  operator<<      (std::ostream& s, VkPipelineBindPoint value)                            { return s << getPipelineBindPointStr(value);                                   }
 +inline std::ostream&  operator<<      (std::ostream& s, VkCommandBufferLevel value)                           { return s << getCommandBufferLevelStr(value);                                  }
 +inline std::ostream&  operator<<      (std::ostream& s, VkIndexType value)                                            { return s << getIndexTypeStr(value);                                                   }
 +inline std::ostream&  operator<<      (std::ostream& s, VkSubpassContents value)                                      { return s << getSubpassContentsStr(value);                                             }
- tcu::Format::Bitfield<32>     getSparseMemoryBindFlagsStr                                                                     (VkSparseMemoryBindFlags value);
- tcu::Format::Bitfield<32>     getSparseImageFormatFlagsStr                                                            (VkSparseImageFormatFlags value);
 +inline std::ostream&  operator<<      (std::ostream& s, VkPointClippingBehavior value)                        { return s << getPointClippingBehaviorStr(value);                               }
 +inline std::ostream&  operator<<      (std::ostream& s, VkTessellationDomainOrigin value)                     { return s << getTessellationDomainOriginStr(value);                    }
 +inline std::ostream&  operator<<      (std::ostream& s, VkSamplerYcbcrModelConversion value)          { return s << getSamplerYcbcrModelConversionStr(value);                 }
 +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, 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, VkFaultLevel value)                                           { return s << getFaultLevelStr(value);                                                  }
++inline std::ostream&  operator<<      (std::ostream& s, VkFaultType value)                                            { return s << getFaultTypeStr(value);                                                   }
++inline std::ostream&  operator<<      (std::ostream& s, VkFaultQueryBehavior value)                           { return s << getFaultQueryBehaviorStr(value);                                  }
++inline std::ostream&  operator<<      (std::ostream& s, VkPipelineMatchControl value)                         { return s << getPipelineMatchControlStr(value);                                }
 +inline std::ostream&  operator<<      (std::ostream& s, VkPresentModeKHR value)                                       { return s << getPresentModeKHRStr(value);                                              }
 +inline std::ostream&  operator<<      (std::ostream& s, VkColorSpaceKHR value)                                        { return s << getColorSpaceKHRStr(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, VkFragmentShadingRateCombinerOpKHR value)     { return s << getFragmentShadingRateCombinerOpKHRStr(value);    }
 +inline std::ostream&  operator<<      (std::ostream& s, VkDisplayPowerStateEXT value)                         { return s << getDisplayPowerStateEXTStr(value);                                }
 +inline std::ostream&  operator<<      (std::ostream& s, VkDeviceEventTypeEXT value)                           { return s << getDeviceEventTypeEXTStr(value);                                  }
 +inline std::ostream&  operator<<      (std::ostream& s, VkDisplayEventTypeEXT value)                          { return s << getDisplayEventTypeEXTStr(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, VkBlendOverlapEXT value)                                      { return s << getBlendOverlapEXTStr(value);                                             }
 +inline std::ostream&  operator<<      (std::ostream& s, VkQueueGlobalPriorityEXT value)                       { return s << getQueueGlobalPriorityEXTStr(value);                              }
 +inline std::ostream&  operator<<      (std::ostream& s, VkTimeDomainEXT value)                                        { return s << getTimeDomainEXTStr(value);                                               }
++inline std::ostream&  operator<<      (std::ostream& s, VkValidationFeatureEnableEXT value)           { return s << getValidationFeatureEnableEXTStr(value);                  }
++inline std::ostream&  operator<<      (std::ostream& s, VkValidationFeatureDisableEXT value)          { return s << getValidationFeatureDisableEXTStr(value);                 }
 +inline std::ostream&  operator<<      (std::ostream& s, VkLineRasterizationModeEXT value)                     { return s << getLineRasterizationModeEXTStr(value);                    }
 +
 +tcu::Format::Bitfield<32>     getAccessFlagsStr                                                                                       (VkAccessFlags value);
 +tcu::Format::Bitfield<32>     getImageAspectFlagsStr                                                                          (VkImageAspectFlags value);
 +tcu::Format::Bitfield<32>     getFormatFeatureFlagsStr                                                                        (VkFormatFeatureFlags value);
 +tcu::Format::Bitfield<32>     getImageCreateFlagsStr                                                                          (VkImageCreateFlags value);
 +tcu::Format::Bitfield<32>     getSampleCountFlagsStr                                                                          (VkSampleCountFlags value);
 +tcu::Format::Bitfield<32>     getImageUsageFlagsStr                                                                           (VkImageUsageFlags value);
 +tcu::Format::Bitfield<32>     getMemoryHeapFlagsStr                                                                           (VkMemoryHeapFlags value);
 +tcu::Format::Bitfield<32>     getMemoryPropertyFlagsStr                                                                       (VkMemoryPropertyFlags value);
 +tcu::Format::Bitfield<32>     getQueueFlagsStr                                                                                        (VkQueueFlags value);
 +tcu::Format::Bitfield<32>     getDeviceQueueCreateFlagsStr                                                            (VkDeviceQueueCreateFlags value);
 +tcu::Format::Bitfield<32>     getPipelineStageFlagsStr                                                                        (VkPipelineStageFlags value);
- tcu::Format::Bitfield<32>     getEventCreateFlagsStr                                                                          (VkEventCreateFlags value);
 +tcu::Format::Bitfield<32>     getFenceCreateFlagsStr                                                                          (VkFenceCreateFlags value);
++tcu::Format::Bitfield<32>     getEventCreateFlagsStr                                                                          (VkEventCreateFlags value);
 +tcu::Format::Bitfield<32>     getQueryPipelineStatisticFlagsStr                                                       (VkQueryPipelineStatisticFlags value);
 +tcu::Format::Bitfield<32>     getQueryResultFlagsStr                                                                          (VkQueryResultFlags value);
 +tcu::Format::Bitfield<32>     getBufferCreateFlagsStr                                                                         (VkBufferCreateFlags value);
 +tcu::Format::Bitfield<32>     getBufferUsageFlagsStr                                                                          (VkBufferUsageFlags value);
 +tcu::Format::Bitfield<32>     getImageViewCreateFlagsStr                                                                      (VkImageViewCreateFlags value);
 +tcu::Format::Bitfield<32>     getPipelineCacheCreateFlagsStr                                                          (VkPipelineCacheCreateFlags value);
 +tcu::Format::Bitfield<32>     getColorComponentFlagsStr                                                                       (VkColorComponentFlags value);
 +tcu::Format::Bitfield<32>     getPipelineCreateFlagsStr                                                                       (VkPipelineCreateFlags value);
 +tcu::Format::Bitfield<32>     getPipelineShaderStageCreateFlagsStr                                            (VkPipelineShaderStageCreateFlags value);
 +tcu::Format::Bitfield<32>     getShaderStageFlagsStr                                                                          (VkShaderStageFlags value);
 +tcu::Format::Bitfield<32>     getCullModeFlagsStr                                                                                     (VkCullModeFlags value);
 +tcu::Format::Bitfield<32>     getSamplerCreateFlagsStr                                                                        (VkSamplerCreateFlags value);
 +tcu::Format::Bitfield<32>     getDescriptorPoolCreateFlagsStr                                                         (VkDescriptorPoolCreateFlags value);
 +tcu::Format::Bitfield<32>     getDescriptorSetLayoutCreateFlagsStr                                            (VkDescriptorSetLayoutCreateFlags value);
 +tcu::Format::Bitfield<32>     getAttachmentDescriptionFlagsStr                                                        (VkAttachmentDescriptionFlags value);
 +tcu::Format::Bitfield<32>     getDependencyFlagsStr                                                                           (VkDependencyFlags value);
 +tcu::Format::Bitfield<32>     getFramebufferCreateFlagsStr                                                            (VkFramebufferCreateFlags value);
 +tcu::Format::Bitfield<32>     getRenderPassCreateFlagsStr                                                                     (VkRenderPassCreateFlags value);
 +tcu::Format::Bitfield<32>     getSubpassDescriptionFlagsStr                                                           (VkSubpassDescriptionFlags value);
 +tcu::Format::Bitfield<32>     getCommandPoolCreateFlagsStr                                                            (VkCommandPoolCreateFlags value);
 +tcu::Format::Bitfield<32>     getCommandPoolResetFlagsStr                                                                     (VkCommandPoolResetFlags value);
 +tcu::Format::Bitfield<32>     getCommandBufferUsageFlagsStr                                                           (VkCommandBufferUsageFlags value);
 +tcu::Format::Bitfield<32>     getQueryControlFlagsStr                                                                         (VkQueryControlFlags value);
 +tcu::Format::Bitfield<32>     getCommandBufferResetFlagsStr                                                           (VkCommandBufferResetFlags value);
 +tcu::Format::Bitfield<32>     getStencilFaceFlagsStr                                                                          (VkStencilFaceFlags value);
 +tcu::Format::Bitfield<32>     getSubgroupFeatureFlagsStr                                                                      (VkSubgroupFeatureFlags value);
 +tcu::Format::Bitfield<32>     getPeerMemoryFeatureFlagsStr                                                            (VkPeerMemoryFeatureFlags value);
 +tcu::Format::Bitfield<32>     getMemoryAllocateFlagsStr                                                                       (VkMemoryAllocateFlags value);
 +tcu::Format::Bitfield<32>     getExternalMemoryHandleTypeFlagsStr                                                     (VkExternalMemoryHandleTypeFlags value);
 +tcu::Format::Bitfield<32>     getExternalMemoryFeatureFlagsStr                                                        (VkExternalMemoryFeatureFlags value);
 +tcu::Format::Bitfield<32>     getExternalFenceHandleTypeFlagsStr                                                      (VkExternalFenceHandleTypeFlags value);
 +tcu::Format::Bitfield<32>     getExternalFenceFeatureFlagsStr                                                         (VkExternalFenceFeatureFlags value);
 +tcu::Format::Bitfield<32>     getFenceImportFlagsStr                                                                          (VkFenceImportFlags value);
 +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);
 +tcu::Format::Bitfield<32>     getDeviceGroupPresentModeFlagsKHRStr                                            (VkDeviceGroupPresentModeFlagsKHR value);
 +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>     getRefreshObjectFlagsKHRStr                                                                     (VkRefreshObjectFlagsKHR value);
++tcu::Format::Bitfield<32>     getSubmitFlagsKHRStr                                                                            (VkSubmitFlagsKHR value);
 +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>     getInstanceCreateFlagsStr                                                                       (VkInstanceCreateFlags value);
 +tcu::Format::Bitfield<32>     getDeviceCreateFlagsStr                                                                         (VkDeviceCreateFlags value);
 +tcu::Format::Bitfield<32>     getMemoryMapFlagsStr                                                                            (VkMemoryMapFlags value);
 +tcu::Format::Bitfield<32>     getSemaphoreCreateFlagsStr                                                                      (VkSemaphoreCreateFlags value);
- std::ostream& operator<<      (std::ostream& s, const VkSparseMemoryBind& value);
- std::ostream& operator<<      (std::ostream& s, const VkSparseBufferMemoryBindInfo& value);
- std::ostream& operator<<      (std::ostream& s, const VkSparseImageOpaqueMemoryBindInfo& value);
 +tcu::Format::Bitfield<32>     getQueryPoolCreateFlagsStr                                                                      (VkQueryPoolCreateFlags value);
 +tcu::Format::Bitfield<32>     getBufferViewCreateFlagsStr                                                                     (VkBufferViewCreateFlags value);
 +tcu::Format::Bitfield<32>     getPipelineVertexInputStateCreateFlagsStr                                       (VkPipelineVertexInputStateCreateFlags value);
 +tcu::Format::Bitfield<32>     getPipelineInputAssemblyStateCreateFlagsStr                                     (VkPipelineInputAssemblyStateCreateFlags value);
 +tcu::Format::Bitfield<32>     getPipelineTessellationStateCreateFlagsStr                                      (VkPipelineTessellationStateCreateFlags value);
 +tcu::Format::Bitfield<32>     getPipelineViewportStateCreateFlagsStr                                          (VkPipelineViewportStateCreateFlags value);
 +tcu::Format::Bitfield<32>     getPipelineRasterizationStateCreateFlagsStr                                     (VkPipelineRasterizationStateCreateFlags value);
 +tcu::Format::Bitfield<32>     getPipelineMultisampleStateCreateFlagsStr                                       (VkPipelineMultisampleStateCreateFlags value);
 +tcu::Format::Bitfield<32>     getPipelineDepthStencilStateCreateFlagsStr                                      (VkPipelineDepthStencilStateCreateFlags value);
 +tcu::Format::Bitfield<32>     getPipelineColorBlendStateCreateFlagsStr                                        (VkPipelineColorBlendStateCreateFlags value);
 +tcu::Format::Bitfield<32>     getPipelineDynamicStateCreateFlagsStr                                           (VkPipelineDynamicStateCreateFlags value);
 +tcu::Format::Bitfield<32>     getPipelineLayoutCreateFlagsStr                                                         (VkPipelineLayoutCreateFlags value);
 +tcu::Format::Bitfield<32>     getDescriptorPoolResetFlagsStr                                                          (VkDescriptorPoolResetFlags value);
 +tcu::Format::Bitfield<32>     getDisplayModeCreateFlagsKHRStr                                                         (VkDisplayModeCreateFlagsKHR value);
 +tcu::Format::Bitfield<32>     getDisplaySurfaceCreateFlagsKHRStr                                                      (VkDisplaySurfaceCreateFlagsKHR value);
 +tcu::Format::Bitfield<32>     getPipelineDiscardRectangleStateCreateFlagsEXTStr                       (VkPipelineDiscardRectangleStateCreateFlagsEXT value);
 +tcu::Format::Bitfield<32>     getPipelineRasterizationConservativeStateCreateFlagsEXTStr      (VkPipelineRasterizationConservativeStateCreateFlagsEXT value);
 +tcu::Format::Bitfield<32>     getPipelineRasterizationDepthClipStateCreateFlagsEXTStr         (VkPipelineRasterizationDepthClipStateCreateFlagsEXT value);
++tcu::Format::Bitfield<32>     getDebugUtilsMessengerCallbackDataFlagsEXTStr                           (VkDebugUtilsMessengerCallbackDataFlagsEXT value);
++tcu::Format::Bitfield<32>     getDebugUtilsMessengerCreateFlagsEXTStr                                         (VkDebugUtilsMessengerCreateFlagsEXT value);
 +tcu::Format::Bitfield<32>     getHeadlessSurfaceCreateFlagsEXTStr                                                     (VkHeadlessSurfaceCreateFlagsEXT value);
 +
 +std::ostream& operator<<      (std::ostream& s, const VkExtent2D& value);
 +std::ostream& operator<<      (std::ostream& s, const VkExtent3D& value);
 +std::ostream& operator<<      (std::ostream& s, const VkOffset2D& value);
 +std::ostream& operator<<      (std::ostream& s, const VkOffset3D& value);
 +std::ostream& operator<<      (std::ostream& s, const VkRect2D& value);
 +std::ostream& operator<<      (std::ostream& s, const VkBaseInStructure& value);
 +std::ostream& operator<<      (std::ostream& s, const VkBaseOutStructure& value);
 +std::ostream& operator<<      (std::ostream& s, const VkBufferMemoryBarrier& value);
 +std::ostream& operator<<      (std::ostream& s, const VkDispatchIndirectCommand& value);
 +std::ostream& operator<<      (std::ostream& s, const VkDrawIndexedIndirectCommand& value);
 +std::ostream& operator<<      (std::ostream& s, const VkDrawIndirectCommand& value);
 +std::ostream& operator<<      (std::ostream& s, const VkImageSubresourceRange& value);
 +std::ostream& operator<<      (std::ostream& s, const VkImageMemoryBarrier& value);
 +std::ostream& operator<<      (std::ostream& s, const VkMemoryBarrier& value);
 +std::ostream& operator<<      (std::ostream& s, const VkAllocationCallbacks& value);
 +std::ostream& operator<<      (std::ostream& s, const VkApplicationInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkFormatProperties& value);
 +std::ostream& operator<<      (std::ostream& s, const VkImageFormatProperties& value);
 +std::ostream& operator<<      (std::ostream& s, const VkInstanceCreateInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkMemoryHeap& value);
 +std::ostream& operator<<      (std::ostream& s, const VkMemoryType& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceFeatures& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceLimits& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceMemoryProperties& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceSparseProperties& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceProperties& value);
 +std::ostream& operator<<      (std::ostream& s, const VkQueueFamilyProperties& value);
 +std::ostream& operator<<      (std::ostream& s, const VkDeviceQueueCreateInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkDeviceCreateInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkExtensionProperties& value);
 +std::ostream& operator<<      (std::ostream& s, const VkLayerProperties& value);
 +std::ostream& operator<<      (std::ostream& s, const VkSubmitInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkMappedMemoryRange& value);
 +std::ostream& operator<<      (std::ostream& s, const VkMemoryAllocateInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkMemoryRequirements& value);
- std::ostream& operator<<      (std::ostream& s, const VkSparseImageMemoryBind& value);
- std::ostream& operator<<      (std::ostream& s, const VkSparseImageMemoryBindInfo& value);
- std::ostream& operator<<      (std::ostream& s, const VkBindSparseInfo& value);
- std::ostream& operator<<      (std::ostream& s, const VkSparseImageFormatProperties& value);
- std::ostream& operator<<      (std::ostream& s, const VkSparseImageMemoryRequirements& value);
 +std::ostream& operator<<      (std::ostream& s, const VkImageSubresource& value);
- std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceVulkanSC10Features& value);
- std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceVulkanSC10Properties& value);
- std::ostream& operator<<      (std::ostream& s, const VkPipelinePoolSize& value);
- std::ostream& operator<<      (std::ostream& s, const VkDeviceMemoryReservationCreateInfo& value);
- std::ostream& operator<<      (std::ostream& s, const VkCommandPoolMemoryReservationCreateInfo& value);
- std::ostream& operator<<      (std::ostream& s, const VkCommandPoolMemoryConsumption& value);
- std::ostream& operator<<      (std::ostream& s, const VkPipelinePoolEntrySizeCreateInfo& value);
- std::ostream& operator<<      (std::ostream& s, const VkFaultData& value);
- std::ostream& operator<<      (std::ostream& s, const VkFaultCallbackInfo& value);
- std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceFaultHandlingProperties& value);
- std::ostream& operator<<      (std::ostream& s, const VkPhysicalDevicePipelineIdentifierFeatures& value);
- std::ostream& operator<<      (std::ostream& s, const VkPipelineIdentifierInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkFenceCreateInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkSemaphoreCreateInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkEventCreateInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkQueryPoolCreateInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkBufferCreateInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkBufferViewCreateInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkImageCreateInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkSubresourceLayout& value);
 +std::ostream& operator<<      (std::ostream& s, const VkComponentMapping& value);
 +std::ostream& operator<<      (std::ostream& s, const VkImageViewCreateInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPipelineCacheCreateInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkSpecializationMapEntry& value);
 +std::ostream& operator<<      (std::ostream& s, const VkSpecializationInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPipelineShaderStageCreateInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkComputePipelineCreateInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkVertexInputBindingDescription& value);
 +std::ostream& operator<<      (std::ostream& s, const VkVertexInputAttributeDescription& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPipelineVertexInputStateCreateInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPipelineInputAssemblyStateCreateInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPipelineTessellationStateCreateInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkViewport& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPipelineViewportStateCreateInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPipelineRasterizationStateCreateInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPipelineMultisampleStateCreateInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkStencilOpState& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPipelineDepthStencilStateCreateInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPipelineColorBlendAttachmentState& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPipelineColorBlendStateCreateInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPipelineDynamicStateCreateInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkGraphicsPipelineCreateInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPushConstantRange& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPipelineLayoutCreateInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkSamplerCreateInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkCopyDescriptorSet& value);
 +std::ostream& operator<<      (std::ostream& s, const VkDescriptorBufferInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkDescriptorImageInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkDescriptorPoolSize& value);
 +std::ostream& operator<<      (std::ostream& s, const VkDescriptorPoolCreateInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkDescriptorSetAllocateInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkDescriptorSetLayoutBinding& value);
 +std::ostream& operator<<      (std::ostream& s, const VkDescriptorSetLayoutCreateInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkWriteDescriptorSet& value);
 +std::ostream& operator<<      (std::ostream& s, const VkAttachmentDescription& value);
 +std::ostream& operator<<      (std::ostream& s, const VkAttachmentReference& value);
 +std::ostream& operator<<      (std::ostream& s, const VkFramebufferCreateInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkSubpassDescription& value);
 +std::ostream& operator<<      (std::ostream& s, const VkSubpassDependency& value);
 +std::ostream& operator<<      (std::ostream& s, const VkRenderPassCreateInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkCommandPoolCreateInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkCommandBufferAllocateInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkCommandBufferInheritanceInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkCommandBufferBeginInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkBufferCopy& value);
 +std::ostream& operator<<      (std::ostream& s, const VkImageSubresourceLayers& value);
 +std::ostream& operator<<      (std::ostream& s, const VkBufferImageCopy& value);
 +std::ostream& operator<<      (std::ostream& s, const VkClearColorValue& value);
 +std::ostream& operator<<      (std::ostream& s, const VkClearDepthStencilValue& value);
 +std::ostream& operator<<      (std::ostream& s, const VkClearValue& value);
 +std::ostream& operator<<      (std::ostream& s, const VkClearAttachment& value);
 +std::ostream& operator<<      (std::ostream& s, const VkClearRect& value);
 +std::ostream& operator<<      (std::ostream& s, const VkImageBlit& value);
 +std::ostream& operator<<      (std::ostream& s, const VkImageCopy& value);
 +std::ostream& operator<<      (std::ostream& s, const VkImageResolve& value);
 +std::ostream& operator<<      (std::ostream& s, const VkRenderPassBeginInfo& value);
- std::ostream& operator<<      (std::ostream& s, const VkDeviceGroupBindSparseInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceSubgroupProperties& value);
 +std::ostream& operator<<      (std::ostream& s, const VkBindBufferMemoryInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkBindImageMemoryInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDevice16BitStorageFeatures& value);
 +std::ostream& operator<<      (std::ostream& s, const VkMemoryDedicatedRequirements& value);
 +std::ostream& operator<<      (std::ostream& s, const VkMemoryDedicatedAllocateInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkMemoryAllocateFlagsInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkDeviceGroupRenderPassBeginInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkDeviceGroupCommandBufferBeginInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkDeviceGroupSubmitInfo& value);
- std::ostream& operator<<      (std::ostream& s, const VkImageSparseMemoryRequirementsInfo2& value);
 +std::ostream& operator<<      (std::ostream& s, const VkBindBufferMemoryDeviceGroupInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkBindImageMemoryDeviceGroupInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceGroupProperties& value);
 +std::ostream& operator<<      (std::ostream& s, const VkDeviceGroupDeviceCreateInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkBufferMemoryRequirementsInfo2& value);
 +std::ostream& operator<<      (std::ostream& s, const VkImageMemoryRequirementsInfo2& value);
- std::ostream& operator<<      (std::ostream& s, const VkSparseImageMemoryRequirements2& value);
 +std::ostream& operator<<      (std::ostream& s, const VkMemoryRequirements2& value);
- std::ostream& operator<<      (std::ostream& s, const VkSparseImageFormatProperties2& value);
- std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceSparseImageFormatInfo2& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceFeatures2& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceProperties2& value);
 +std::ostream& operator<<      (std::ostream& s, const VkFormatProperties2& value);
 +std::ostream& operator<<      (std::ostream& s, const VkImageFormatProperties2& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceImageFormatInfo2& value);
 +std::ostream& operator<<      (std::ostream& s, const VkQueueFamilyProperties2& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceMemoryProperties2& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDevicePointClippingProperties& value);
 +std::ostream& operator<<      (std::ostream& s, const VkInputAttachmentAspectReference& value);
 +std::ostream& operator<<      (std::ostream& s, const VkRenderPassInputAttachmentAspectCreateInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkImageViewUsageCreateInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPipelineTessellationDomainOriginStateCreateInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkRenderPassMultiviewCreateInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceMultiviewFeatures& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceMultiviewProperties& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceVariablePointersFeatures& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceProtectedMemoryFeatures& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceProtectedMemoryProperties& value);
 +std::ostream& operator<<      (std::ostream& s, const VkDeviceQueueInfo2& value);
 +std::ostream& operator<<      (std::ostream& s, const VkProtectedSubmitInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkSamplerYcbcrConversionCreateInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkSamplerYcbcrConversionInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkBindImagePlaneMemoryInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkImagePlaneMemoryRequirementsInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceSamplerYcbcrConversionFeatures& value);
 +std::ostream& operator<<      (std::ostream& s, const VkSamplerYcbcrConversionImageFormatProperties& value);
 +std::ostream& operator<<      (std::ostream& s, const VkExternalMemoryProperties& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceExternalImageFormatInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkExternalImageFormatProperties& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceExternalBufferInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkExternalBufferProperties& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceIDProperties& value);
 +std::ostream& operator<<      (std::ostream& s, const VkExternalMemoryImageCreateInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkExternalMemoryBufferCreateInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkExportMemoryAllocateInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceExternalFenceInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkExternalFenceProperties& value);
 +std::ostream& operator<<      (std::ostream& s, const VkExportFenceCreateInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkExportSemaphoreCreateInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceExternalSemaphoreInfo& value);
 +std::ostream& operator<<      (std::ostream& s, const VkExternalSemaphoreProperties& value);
 +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 VkPhysicalDeviceVulkanSC10Features& value);
++std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceVulkanSC10Properties& value);
++std::ostream& operator<<      (std::ostream& s, const VkPipelinePoolSize& value);
++std::ostream& operator<<      (std::ostream& s, const VkDeviceObjectReservationCreateInfo& value);
++std::ostream& operator<<      (std::ostream& s, const VkCommandPoolMemoryReservationCreateInfo& value);
++std::ostream& operator<<      (std::ostream& s, const VkCommandPoolMemoryConsumption& value);
++std::ostream& operator<<      (std::ostream& s, const VkPipelinePoolEntrySizeCreateInfo& value);
++std::ostream& operator<<      (std::ostream& s, const VkFaultData& value);
++std::ostream& operator<<      (std::ostream& s, const VkFaultCallbackInfo& value);
++std::ostream& operator<<      (std::ostream& s, const VkPipelineIdentifierInfo& 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);
 +std::ostream& operator<<      (std::ostream& s, const VkPresentInfoKHR& value);
 +std::ostream& operator<<      (std::ostream& s, const VkImageSwapchainCreateInfoKHR& value);
 +std::ostream& operator<<      (std::ostream& s, const VkBindImageMemorySwapchainInfoKHR& value);
 +std::ostream& operator<<      (std::ostream& s, const VkAcquireNextImageInfoKHR& value);
 +std::ostream& operator<<      (std::ostream& s, const VkDeviceGroupPresentCapabilitiesKHR& value);
 +std::ostream& operator<<      (std::ostream& s, const VkDeviceGroupPresentInfoKHR& value);
 +std::ostream& operator<<      (std::ostream& s, const VkDeviceGroupSwapchainCreateInfoKHR& value);
 +std::ostream& operator<<      (std::ostream& s, const VkDisplayModeParametersKHR& value);
 +std::ostream& operator<<      (std::ostream& s, const VkDisplayModeCreateInfoKHR& value);
 +std::ostream& operator<<      (std::ostream& s, const VkDisplayModePropertiesKHR& value);
 +std::ostream& operator<<      (std::ostream& s, const VkDisplayPlaneCapabilitiesKHR& value);
 +std::ostream& operator<<      (std::ostream& s, const VkDisplayPlanePropertiesKHR& value);
 +std::ostream& operator<<      (std::ostream& s, const VkDisplayPropertiesKHR& value);
 +std::ostream& operator<<      (std::ostream& s, const VkDisplaySurfaceCreateInfoKHR& value);
 +std::ostream& operator<<      (std::ostream& s, const VkDisplayPresentInfoKHR& value);
 +std::ostream& operator<<      (std::ostream& s, const VkImportMemoryFdInfoKHR& value);
 +std::ostream& operator<<      (std::ostream& s, const VkMemoryFdPropertiesKHR& value);
 +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 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 VkSharedPresentSurfaceCapabilitiesKHR& value);
 +std::ostream& operator<<      (std::ostream& s, const VkImportFenceFdInfoKHR& value);
 +std::ostream& operator<<      (std::ostream& s, const VkFenceGetFdInfoKHR& value);
++std::ostream& operator<<      (std::ostream& s, const VkPhysicalDevicePerformanceQueryFeaturesKHR& value);
++std::ostream& operator<<      (std::ostream& s, const VkPhysicalDevicePerformanceQueryPropertiesKHR& value);
++std::ostream& operator<<      (std::ostream& s, const VkPerformanceCounterKHR& value);
++std::ostream& operator<<      (std::ostream& s, const VkPerformanceCounterDescriptionKHR& value);
++std::ostream& operator<<      (std::ostream& s, const VkQueryPoolPerformanceCreateInfoKHR& value);
++std::ostream& operator<<      (std::ostream& s, const VkPerformanceCounterResultKHR& value);
++std::ostream& operator<<      (std::ostream& s, const VkAcquireProfilingLockInfoKHR& value);
++std::ostream& operator<<      (std::ostream& s, const VkPerformanceQuerySubmitInfoKHR& value);
++std::ostream& operator<<      (std::ostream& s, const VkPerformanceQueryReservationInfoKHR& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceSurfaceInfo2KHR& value);
 +std::ostream& operator<<      (std::ostream& s, const VkSurfaceCapabilities2KHR& value);
 +std::ostream& operator<<      (std::ostream& s, const VkSurfaceFormat2KHR& value);
 +std::ostream& operator<<      (std::ostream& s, const VkDisplayProperties2KHR& value);
 +std::ostream& operator<<      (std::ostream& s, const VkDisplayPlaneProperties2KHR& value);
 +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 VkPhysicalDeviceShaderClockFeaturesKHR& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR& value);
 +std::ostream& operator<<      (std::ostream& s, const VkFragmentShadingRateAttachmentInfoKHR& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPipelineFragmentShadingRateStateCreateInfoKHR& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceFragmentShadingRateFeaturesKHR& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceFragmentShadingRatePropertiesKHR& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceFragmentShadingRateKHR& value);
 +std::ostream& operator<<      (std::ostream& s, const VkRefreshObjectKHR& value);
 +std::ostream& operator<<      (std::ostream& s, const VkRefreshObjectListKHR& value);
++std::ostream& operator<<      (std::ostream& s, const VkMemoryBarrier2KHR& value);
++std::ostream& operator<<      (std::ostream& s, const VkBufferMemoryBarrier2KHR& value);
++std::ostream& operator<<      (std::ostream& s, const VkImageMemoryBarrier2KHR& value);
++std::ostream& operator<<      (std::ostream& s, const VkDependencyInfoKHR& value);
++std::ostream& operator<<      (std::ostream& s, const VkSemaphoreSubmitInfoKHR& value);
++std::ostream& operator<<      (std::ostream& s, const VkCommandBufferSubmitInfoKHR& value);
++std::ostream& operator<<      (std::ostream& s, const VkSubmitInfo2KHR& value);
++std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceSynchronization2FeaturesKHR& value);
++std::ostream& operator<<      (std::ostream& s, const VkQueueFamilyCheckpointProperties2NV& value);
++std::ostream& operator<<      (std::ostream& s, const VkCheckpointData2NV& value);
 +std::ostream& operator<<      (std::ostream& s, const VkBufferCopy2KHR& value);
 +std::ostream& operator<<      (std::ostream& s, const VkCopyBufferInfo2KHR& value);
 +std::ostream& operator<<      (std::ostream& s, const VkImageCopy2KHR& value);
 +std::ostream& operator<<      (std::ostream& s, const VkCopyImageInfo2KHR& value);
 +std::ostream& operator<<      (std::ostream& s, const VkBufferImageCopy2KHR& value);
 +std::ostream& operator<<      (std::ostream& s, const VkCopyBufferToImageInfo2KHR& value);
 +std::ostream& operator<<      (std::ostream& s, const VkCopyImageToBufferInfo2KHR& value);
 +std::ostream& operator<<      (std::ostream& s, const VkImageBlit2KHR& value);
 +std::ostream& operator<<      (std::ostream& s, const VkBlitImageInfo2KHR& value);
 +std::ostream& operator<<      (std::ostream& s, const VkImageResolve2KHR& value);
 +std::ostream& operator<<      (std::ostream& s, const VkResolveImageInfo2KHR& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkImageViewASTCDecodeModeEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceASTCDecodeFeaturesEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkSurfaceCapabilities2EXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkDisplayPowerInfoEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkDeviceEventInfoEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkDisplayEventInfoEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkSwapchainCounterCreateInfoEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceDiscardRectanglePropertiesEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPipelineDiscardRectangleStateCreateInfoEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceConservativeRasterizationPropertiesEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPipelineRasterizationConservativeStateCreateInfoEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceDepthClipEnableFeaturesEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPipelineRasterizationDepthClipStateCreateInfoEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkXYColorEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkHdrMetadataEXT& value);
++std::ostream& operator<<      (std::ostream& s, const VkDebugUtilsLabelEXT& value);
++std::ostream& operator<<      (std::ostream& s, const VkDebugUtilsObjectNameInfoEXT& 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 VkDebugUtilsObjectTagInfoEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkSampleLocationEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkSampleLocationsInfoEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkAttachmentSampleLocationsEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkSubpassSampleLocationsEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkRenderPassSampleLocationsBeginInfoEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPipelineSampleLocationsStateCreateInfoEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceSampleLocationsPropertiesEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkMultisamplePropertiesEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPipelineColorBlendAdvancedStateCreateInfoEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkDrmFormatModifierPropertiesEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkDrmFormatModifierPropertiesListEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceImageDrmFormatModifierInfoEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkImageDrmFormatModifierListCreateInfoEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkImageDrmFormatModifierExplicitCreateInfoEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkImageDrmFormatModifierPropertiesEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceImageViewImageFormatInfoEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkFilterCubicImageViewImageFormatPropertiesEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkDeviceQueueGlobalPriorityCreateInfoEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkImportMemoryHostPointerInfoEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkMemoryHostPointerPropertiesEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceExternalMemoryHostPropertiesEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkCalibratedTimestampInfoEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkVertexInputBindingDivisorDescriptionEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPipelineVertexInputDivisorStateCreateInfoEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDevicePCIBusInfoPropertiesEXT& 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);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceMemoryBudgetPropertiesEXT& value);
++std::ostream& operator<<      (std::ostream& s, const VkValidationFeaturesEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceYcbcrImageArraysFeaturesEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkHeadlessSurfaceCreateInfoEXT& value);
 +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 VkPhysicalDeviceShaderAtomicFloatFeaturesEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceIndexTypeUint8FeaturesEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceExtendedDynamicStateFeaturesEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceRobustness2FeaturesEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceRobustness2PropertiesEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkSamplerCustomBorderColorCreateInfoEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceCustomBorderColorPropertiesEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceCustomBorderColorFeaturesEXT& value);
++std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceImageRobustnessFeaturesEXT& value);
 +std::ostream& operator<<      (std::ostream& s, const VkPhysicalDevice4444FormatsFeaturesEXT& value);
++std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT& value);
++std::ostream& operator<<      (std::ostream& s, const VkVertexInputBindingDescription2EXT& value);
++std::ostream& operator<<      (std::ostream& s, const VkVertexInputAttributeDescription2EXT& value);
++std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceExtendedDynamicState2FeaturesEXT& value);
++std::ostream& operator<<      (std::ostream& s, const VkPhysicalDeviceColorWriteEnableFeaturesEXT& value);
++std::ostream& operator<<      (std::ostream& s, const VkPipelineColorWriteCreateInfoEXT& value);
index 419329f,0000000..bb3e8e1
mode 100644,000000..100644
--- /dev/null
@@@ -1,7149 -1,0 +1,7556 @@@
-               case VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO:                                                                   return "VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO";
 +/* WARNING: This is auto-generated file. Do not modify, since changes will
 + * be lost! Modify the generating script instead.
 + */
 +template<> const char*        getTypeName<VkBuffer>                                   (void) { return "VkBuffer";                                     }
 +template<> const char*        getTypeName<VkImage>                                    (void) { return "VkImage";                                      }
 +template<> const char*        getTypeName<VkInstance>                                 (void) { return "VkInstance";                           }
 +template<> const char*        getTypeName<VkPhysicalDevice>                   (void) { return "VkPhysicalDevice";                     }
 +template<> const char*        getTypeName<VkDevice>                                   (void) { return "VkDevice";                                     }
 +template<> const char*        getTypeName<VkQueue>                                    (void) { return "VkQueue";                                      }
 +template<> const char*        getTypeName<VkSemaphore>                                (void) { return "VkSemaphore";                          }
 +template<> const char*        getTypeName<VkCommandBuffer>                    (void) { return "VkCommandBuffer";                      }
 +template<> const char*        getTypeName<VkFence>                                    (void) { return "VkFence";                                      }
 +template<> const char*        getTypeName<VkDeviceMemory>                             (void) { return "VkDeviceMemory";                       }
 +template<> const char*        getTypeName<VkEvent>                                    (void) { return "VkEvent";                                      }
 +template<> const char*        getTypeName<VkQueryPool>                                (void) { return "VkQueryPool";                          }
 +template<> const char*        getTypeName<VkBufferView>                               (void) { return "VkBufferView";                         }
 +template<> const char*        getTypeName<VkImageView>                                (void) { return "VkImageView";                          }
 +template<> const char*        getTypeName<VkShaderModule>                             (void) { return "VkShaderModule";                       }
 +template<> const char*        getTypeName<VkPipelineCache>                    (void) { return "VkPipelineCache";                      }
 +template<> const char*        getTypeName<VkPipelineLayout>                   (void) { return "VkPipelineLayout";                     }
 +template<> const char*        getTypeName<VkPipeline>                                 (void) { return "VkPipeline";                           }
 +template<> const char*        getTypeName<VkRenderPass>                               (void) { return "VkRenderPass";                         }
 +template<> const char*        getTypeName<VkDescriptorSetLayout>              (void) { return "VkDescriptorSetLayout";        }
 +template<> const char*        getTypeName<VkSampler>                                  (void) { return "VkSampler";                            }
 +template<> const char*        getTypeName<VkDescriptorSet>                    (void) { return "VkDescriptorSet";                      }
 +template<> const char*        getTypeName<VkDescriptorPool>                   (void) { return "VkDescriptorPool";                     }
 +template<> const char*        getTypeName<VkFramebuffer>                              (void) { return "VkFramebuffer";                        }
 +template<> const char*        getTypeName<VkCommandPool>                              (void) { return "VkCommandPool";                        }
 +template<> const char*        getTypeName<VkSamplerYcbcrConversion>   (void) { return "VkSamplerYcbcrConversion";     }
 +template<> const char*        getTypeName<VkSurfaceKHR>                               (void) { return "VkSurfaceKHR";                         }
 +template<> const char*        getTypeName<VkSwapchainKHR>                             (void) { return "VkSwapchainKHR";                       }
 +template<> const char*        getTypeName<VkDisplayKHR>                               (void) { return "VkDisplayKHR";                         }
 +template<> const char*        getTypeName<VkDisplayModeKHR>                   (void) { return "VkDisplayModeKHR";                     }
++template<> const char*        getTypeName<VkDebugUtilsMessengerEXT>   (void) { return "VkDebugUtilsMessengerEXT";     }
 +
 +namespace pt
 +{
 +std::ostream& operator<< (std::ostream& s, XlibDisplayPtr                             v) { return s << tcu::toHex(v.internal); }
 +std::ostream& operator<< (std::ostream& s, XlibWindow                                 v) { return s << tcu::toHex(v.internal); }
 +std::ostream& operator<< (std::ostream& s, XlibVisualID                                       v) { return s << tcu::toHex(v.internal); }
 +std::ostream& operator<< (std::ostream& s, XcbConnectionPtr                           v) { return s << tcu::toHex(v.internal); }
 +std::ostream& operator<< (std::ostream& s, XcbWindow                                  v) { return s << tcu::toHex(v.internal); }
 +std::ostream& operator<< (std::ostream& s, XcbVisualid                                        v) { return s << tcu::toHex(v.internal); }
 +std::ostream& operator<< (std::ostream& s, WaylandDisplayPtr                  v) { return s << tcu::toHex(v.internal); }
 +std::ostream& operator<< (std::ostream& s, WaylandSurfacePtr                  v) { return s << tcu::toHex(v.internal); }
 +std::ostream& operator<< (std::ostream& s, MirConnectionPtr                           v) { return s << tcu::toHex(v.internal); }
 +std::ostream& operator<< (std::ostream& s, MirSurfacePtr                              v) { return s << tcu::toHex(v.internal); }
 +std::ostream& operator<< (std::ostream& s, AndroidNativeWindowPtr             v) { return s << tcu::toHex(v.internal); }
 +std::ostream& operator<< (std::ostream& s, Win32InstanceHandle                        v) { return s << tcu::toHex(v.internal); }
 +std::ostream& operator<< (std::ostream& s, Win32WindowHandle                  v) { return s << tcu::toHex(v.internal); }
 +std::ostream& operator<< (std::ostream& s, Win32Handle                                        v) { return s << tcu::toHex(v.internal); }
 +std::ostream& operator<< (std::ostream& s, Win32SecurityAttributesPtr v) { return s << tcu::toHex(v.internal); }
 +std::ostream& operator<< (std::ostream& s, AndroidHardwareBufferPtr           v) { return s << tcu::toHex(v.internal); }
 +std::ostream& operator<< (std::ostream& s, Win32MonitorHandle                 v) { return s << tcu::toHex(v.internal); }
 +std::ostream& operator<< (std::ostream& s, Win32LPCWSTR                                       v) { return s << tcu::toHex(v.internal); }
 +std::ostream& operator<< (std::ostream& s, RROutput                                           v) { return s << tcu::toHex(v.internal); }
 +std::ostream& operator<< (std::ostream& s, zx_handle_t                                        v) { return s << tcu::toHex(v.internal); }
 +std::ostream& operator<< (std::ostream& s, GgpFrameToken                              v) { return s << tcu::toHex(v.internal); }
 +std::ostream& operator<< (std::ostream& s, GgpStreamDescriptor                        v) { return s << tcu::toHex(v.internal); }
 +std::ostream& operator<< (std::ostream& s, CAMetalLayer                                       v) { return s << tcu::toHex(v.internal); }
 +}
 +
 +const char* getResultName (VkResult value)
 +{
 +      switch (value)
 +      {
 +              case VK_SUCCESS:                                                                                        return "VK_SUCCESS";
 +              case VK_NOT_READY:                                                                                      return "VK_NOT_READY";
 +              case VK_TIMEOUT:                                                                                        return "VK_TIMEOUT";
 +              case VK_EVENT_SET:                                                                                      return "VK_EVENT_SET";
 +              case VK_EVENT_RESET:                                                                            return "VK_EVENT_RESET";
 +              case VK_INCOMPLETE:                                                                                     return "VK_INCOMPLETE";
 +              case VK_ERROR_OUT_OF_HOST_MEMORY:                                                       return "VK_ERROR_OUT_OF_HOST_MEMORY";
 +              case VK_ERROR_OUT_OF_DEVICE_MEMORY:                                                     return "VK_ERROR_OUT_OF_DEVICE_MEMORY";
 +              case VK_ERROR_INITIALIZATION_FAILED:                                            return "VK_ERROR_INITIALIZATION_FAILED";
 +              case VK_ERROR_DEVICE_LOST:                                                                      return "VK_ERROR_DEVICE_LOST";
 +              case VK_ERROR_MEMORY_MAP_FAILED:                                                        return "VK_ERROR_MEMORY_MAP_FAILED";
 +              case VK_ERROR_LAYER_NOT_PRESENT:                                                        return "VK_ERROR_LAYER_NOT_PRESENT";
 +              case VK_ERROR_EXTENSION_NOT_PRESENT:                                            return "VK_ERROR_EXTENSION_NOT_PRESENT";
 +              case VK_ERROR_FEATURE_NOT_PRESENT:                                                      return "VK_ERROR_FEATURE_NOT_PRESENT";
 +              case VK_ERROR_INCOMPATIBLE_DRIVER:                                                      return "VK_ERROR_INCOMPATIBLE_DRIVER";
 +              case VK_ERROR_TOO_MANY_OBJECTS:                                                         return "VK_ERROR_TOO_MANY_OBJECTS";
 +              case VK_ERROR_FORMAT_NOT_SUPPORTED:                                                     return "VK_ERROR_FORMAT_NOT_SUPPORTED";
 +              case VK_ERROR_FRAGMENTED_POOL:                                                          return "VK_ERROR_FRAGMENTED_POOL";
 +              case VK_ERROR_UNKNOWN:                                                                          return "VK_ERROR_UNKNOWN";
 +              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_INVALID_PIPELINE_CACHE_DATA:                                      return "VK_ERROR_INVALID_PIPELINE_CACHE_DATA";
 +              case VK_ERROR_NO_PIPELINE_MATCH:                                                        return "VK_ERROR_NO_PIPELINE_MATCH";
 +              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";
 +              case VK_ERROR_OUT_OF_DATE_KHR:                                                          return "VK_ERROR_OUT_OF_DATE_KHR";
 +              case VK_ERROR_INCOMPATIBLE_DISPLAY_KHR:                                         return "VK_ERROR_INCOMPATIBLE_DISPLAY_KHR";
 +              case VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT:     return "VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT";
 +              case VK_ERROR_NOT_PERMITTED_EXT:                                                        return "VK_ERROR_NOT_PERMITTED_EXT";
 +              case VK_RESULT_MAX_ENUM:                                                                        return "VK_RESULT_MAX_ENUM";
 +              default:                                                                                                        return DE_NULL;
 +      }
 +}
 +
 +const char* getStructureTypeName (VkStructureType value)
 +{
 +      switch (value)
 +      {
 +              case VK_STRUCTURE_TYPE_APPLICATION_INFO:                                                                                                return "VK_STRUCTURE_TYPE_APPLICATION_INFO";
 +              case VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO:                                                                                    return "VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO";
 +              case VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO:                                                                                return "VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO";
 +              case VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO:                                                                                              return "VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO";
 +              case VK_STRUCTURE_TYPE_SUBMIT_INFO:                                                                                                             return "VK_STRUCTURE_TYPE_SUBMIT_INFO";
 +              case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO:                                                                                    return "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO";
 +              case VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE:                                                                                             return "VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE";
 +              case VK_STRUCTURE_TYPE_BIND_SPARSE_INFO:                                                                                                return "VK_STRUCTURE_TYPE_BIND_SPARSE_INFO";
 +              case VK_STRUCTURE_TYPE_FENCE_CREATE_INFO:                                                                                               return "VK_STRUCTURE_TYPE_FENCE_CREATE_INFO";
 +              case VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO:                                                                                   return "VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO";
 +              case VK_STRUCTURE_TYPE_EVENT_CREATE_INFO:                                                                                               return "VK_STRUCTURE_TYPE_EVENT_CREATE_INFO";
 +              case VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO:                                                                                  return "VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO";
 +              case VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO:                                                                                              return "VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO";
 +              case VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO:                                                                                 return "VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO";
 +              case VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO:                                                                                               return "VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO";
 +              case VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO:                                                                                  return "VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO";
 +              case VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO:                                                                               return "VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO";
 +              case VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO:                                                                              return "VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO";
 +              case VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO:                                                               return "VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO";
 +              case VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO:                                                 return "VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO";
 +              case VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO:                                               return "VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO";
 +              case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO:                                                 return "VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO";
 +              case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO:                                                             return "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO";
 +              case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO:                                                return "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO";
 +              case VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO:                                                  return "VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO";
 +              case VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO:                                                return "VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO";
 +              case VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO:                                                  return "VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO";
 +              case VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO:                                                              return "VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO";
 +              case VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO:                                                                   return "VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO";
 +              case VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO:                                                                    return "VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO";
 +              case VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO:                                                                             return "VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO";
 +              case VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO:                                                                                             return "VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO";
 +              case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO:                                                               return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO";
 +              case VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO:                                                                             return "VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO";
 +              case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO:                                                                    return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO";
 +              case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET:                                                                                    return "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET";
 +              case VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET:                                                                                             return "VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET";
 +              case VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO:                                                                                 return "VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO";
 +              case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO:                                                                                 return "VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO";
 +              case VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO:                                                                                return "VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO";
 +              case VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO:                                                                    return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO";
 +              case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO:                                                                 return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO";
 +              case VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO:                                                                               return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO";
 +              case VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO:                                                                                  return "VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO";
 +              case VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER:                                                                                   return "VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER";
 +              case VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER:                                                                                    return "VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER";
 +              case VK_STRUCTURE_TYPE_MEMORY_BARRIER:                                                                                                  return "VK_STRUCTURE_TYPE_MEMORY_BARRIER";
 +              case VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO:                                                                             return "VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO";
 +              case VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO:                                                                               return "VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO";
 +              case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES:                                                             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES";
 +              case VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO:                                                                                 return "VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO";
 +              case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO:                                                                                  return "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO";
 +              case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES:                                                  return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES";
 +              case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS:                                                                   return "VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS";
 +              case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO:                                                                  return "VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO";
 +              case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO:                                                                              return "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO";
 +              case VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO:                                                             return "VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO";
 +              case VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO:                                                  return "VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO";
 +              case VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO:                                                                                return "VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO";
-               case VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2:                                                 return "VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2";
 +              case VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO:                                                    return "VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO";
 +              case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO:                                                             return "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO";
 +              case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES:                                                                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES";
 +              case VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO:                                                                 return "VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO";
 +              case VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2:                                                               return "VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2";
 +              case VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2:                                                                return "VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2";
-               case VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2:                                                              return "VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2";
 +              case VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2:                                                                                   return "VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2";
-               case VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2:                                                                return "VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2";
-               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2:                                              return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2";
 +              case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2:                                                                              return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2";
 +              case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2:                                                                    return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2";
 +              case VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2:                                                                                             return "VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2";
 +              case VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2:                                                                               return "VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2";
 +              case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2:                                                             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2";
 +              case VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2:                                                                               return "VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2";
 +              case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2:                                                             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2";
-               case VK_STRUCTURE_TYPE_DEVICE_MEMORY_RESERVATION_CREATE_INFO:                                                   return "VK_STRUCTURE_TYPE_DEVICE_MEMORY_RESERVATION_CREATE_INFO";
 +              case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES:                                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES";
 +              case VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO:                                 return "VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO";
 +              case VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO:                                                                    return "VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO";
 +              case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO:                   return "VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO";
 +              case VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO:                                                               return "VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO";
 +              case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES:                                                              return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES";
 +              case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES:                                                    return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES";
 +              case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES:                                              return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES";
 +              case VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO:                                                                                   return "VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO";
 +              case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES:                                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES";
 +              case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES:                                             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES";
 +              case VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2:                                                                                             return "VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2";
 +              case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO:                                                    return "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO";
 +              case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO:                                                                   return "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO";
 +              case VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO:                                                                    return "VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO";
 +              case VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO:                                                    return "VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO";
 +              case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES:                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES";
 +              case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES:                                return "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES";
 +              case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO:                                              return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO";
 +              case VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES:                                                                return "VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES";
 +              case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO:                                                    return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO";
 +              case VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES:                                                                              return "VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES";
 +              case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES:                                                                   return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES";
 +              case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO:                                                              return "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO";
 +              case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO:                                                               return "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO";
 +              case VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO:                                                                             return "VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO";
 +              case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO:                                                             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO";
 +              case VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES:                                                                               return "VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES";
 +              case VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO:                                                                                return "VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO";
 +              case VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO:                                                                    return "VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO";
 +              case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO:                                                 return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO";
 +              case VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES:                                                                   return "VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES";
 +              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_PHYSICAL_DEVICE_VULKAN_SC_1_0_FEATURES:                                                  return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_FEATURES";
 +              case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_PROPERTIES:                                                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_PROPERTIES";
-               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_FEATURES:                                                  return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_FEATURES";
++              case VK_STRUCTURE_TYPE_DEVICE_OBJECT_RESERVATION_CREATE_INFO:                                                   return "VK_STRUCTURE_TYPE_DEVICE_OBJECT_RESERVATION_CREATE_INFO";
 +              case VK_STRUCTURE_TYPE_COMMAND_POOL_MEMORY_RESERVATION_CREATE_INFO:                                             return "VK_STRUCTURE_TYPE_COMMAND_POOL_MEMORY_RESERVATION_CREATE_INFO";
 +              case VK_STRUCTURE_TYPE_COMMAND_POOL_MEMORY_CONSUMPTION:                                                                 return "VK_STRUCTURE_TYPE_COMMAND_POOL_MEMORY_CONSUMPTION";
 +              case VK_STRUCTURE_TYPE_PIPELINE_POOL_SIZE:                                                                                              return "VK_STRUCTURE_TYPE_PIPELINE_POOL_SIZE";
 +              case VK_STRUCTURE_TYPE_PIPELINE_POOL_ENTRY_SIZE_CREATE_INFO:                                                    return "VK_STRUCTURE_TYPE_PIPELINE_POOL_ENTRY_SIZE_CREATE_INFO";
-               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_HANDLING_PROPERTIES:                                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_HANDLING_PROPERTIES";
-               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_IDENTIFIER_FEATURES:                                    return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_IDENTIFIER_FEATURES";
 +              case VK_STRUCTURE_TYPE_FAULT_DATA:                                                                                                              return "VK_STRUCTURE_TYPE_FAULT_DATA";
 +              case VK_STRUCTURE_TYPE_FAULT_CALLBACK_INFO:                                                                                             return "VK_STRUCTURE_TYPE_FAULT_CALLBACK_INFO";
-               case VK_FORMAT_UNDEFINED:                                                                       return "VK_FORMAT_UNDEFINED";
-               case VK_FORMAT_R4G4_UNORM_PACK8:                                                        return "VK_FORMAT_R4G4_UNORM_PACK8";
-               case VK_FORMAT_R4G4B4A4_UNORM_PACK16:                                           return "VK_FORMAT_R4G4B4A4_UNORM_PACK16";
-               case VK_FORMAT_B4G4R4A4_UNORM_PACK16:                                           return "VK_FORMAT_B4G4R4A4_UNORM_PACK16";
-               case VK_FORMAT_R5G6B5_UNORM_PACK16:                                                     return "VK_FORMAT_R5G6B5_UNORM_PACK16";
-               case VK_FORMAT_B5G6R5_UNORM_PACK16:                                                     return "VK_FORMAT_B5G6R5_UNORM_PACK16";
-               case VK_FORMAT_R5G5B5A1_UNORM_PACK16:                                           return "VK_FORMAT_R5G5B5A1_UNORM_PACK16";
-               case VK_FORMAT_B5G5R5A1_UNORM_PACK16:                                           return "VK_FORMAT_B5G5R5A1_UNORM_PACK16";
-               case VK_FORMAT_A1R5G5B5_UNORM_PACK16:                                           return "VK_FORMAT_A1R5G5B5_UNORM_PACK16";
-               case VK_FORMAT_R8_UNORM:                                                                        return "VK_FORMAT_R8_UNORM";
-               case VK_FORMAT_R8_SNORM:                                                                        return "VK_FORMAT_R8_SNORM";
-               case VK_FORMAT_R8_USCALED:                                                                      return "VK_FORMAT_R8_USCALED";
-               case VK_FORMAT_R8_SSCALED:                                                                      return "VK_FORMAT_R8_SSCALED";
-               case VK_FORMAT_R8_UINT:                                                                         return "VK_FORMAT_R8_UINT";
-               case VK_FORMAT_R8_SINT:                                                                         return "VK_FORMAT_R8_SINT";
-               case VK_FORMAT_R8_SRGB:                                                                         return "VK_FORMAT_R8_SRGB";
-               case VK_FORMAT_R8G8_UNORM:                                                                      return "VK_FORMAT_R8G8_UNORM";
-               case VK_FORMAT_R8G8_SNORM:                                                                      return "VK_FORMAT_R8G8_SNORM";
-               case VK_FORMAT_R8G8_USCALED:                                                            return "VK_FORMAT_R8G8_USCALED";
-               case VK_FORMAT_R8G8_SSCALED:                                                            return "VK_FORMAT_R8G8_SSCALED";
-               case VK_FORMAT_R8G8_UINT:                                                                       return "VK_FORMAT_R8G8_UINT";
-               case VK_FORMAT_R8G8_SINT:                                                                       return "VK_FORMAT_R8G8_SINT";
-               case VK_FORMAT_R8G8_SRGB:                                                                       return "VK_FORMAT_R8G8_SRGB";
-               case VK_FORMAT_R8G8B8_UNORM:                                                            return "VK_FORMAT_R8G8B8_UNORM";
-               case VK_FORMAT_R8G8B8_SNORM:                                                            return "VK_FORMAT_R8G8B8_SNORM";
-               case VK_FORMAT_R8G8B8_USCALED:                                                          return "VK_FORMAT_R8G8B8_USCALED";
-               case VK_FORMAT_R8G8B8_SSCALED:                                                          return "VK_FORMAT_R8G8B8_SSCALED";
-               case VK_FORMAT_R8G8B8_UINT:                                                                     return "VK_FORMAT_R8G8B8_UINT";
-               case VK_FORMAT_R8G8B8_SINT:                                                                     return "VK_FORMAT_R8G8B8_SINT";
-               case VK_FORMAT_R8G8B8_SRGB:                                                                     return "VK_FORMAT_R8G8B8_SRGB";
-               case VK_FORMAT_B8G8R8_UNORM:                                                            return "VK_FORMAT_B8G8R8_UNORM";
-               case VK_FORMAT_B8G8R8_SNORM:                                                            return "VK_FORMAT_B8G8R8_SNORM";
-               case VK_FORMAT_B8G8R8_USCALED:                                                          return "VK_FORMAT_B8G8R8_USCALED";
-               case VK_FORMAT_B8G8R8_SSCALED:                                                          return "VK_FORMAT_B8G8R8_SSCALED";
-               case VK_FORMAT_B8G8R8_UINT:                                                                     return "VK_FORMAT_B8G8R8_UINT";
-               case VK_FORMAT_B8G8R8_SINT:                                                                     return "VK_FORMAT_B8G8R8_SINT";
-               case VK_FORMAT_B8G8R8_SRGB:                                                                     return "VK_FORMAT_B8G8R8_SRGB";
-               case VK_FORMAT_R8G8B8A8_UNORM:                                                          return "VK_FORMAT_R8G8B8A8_UNORM";
-               case VK_FORMAT_R8G8B8A8_SNORM:                                                          return "VK_FORMAT_R8G8B8A8_SNORM";
-               case VK_FORMAT_R8G8B8A8_USCALED:                                                        return "VK_FORMAT_R8G8B8A8_USCALED";
-               case VK_FORMAT_R8G8B8A8_SSCALED:                                                        return "VK_FORMAT_R8G8B8A8_SSCALED";
-               case VK_FORMAT_R8G8B8A8_UINT:                                                           return "VK_FORMAT_R8G8B8A8_UINT";
-               case VK_FORMAT_R8G8B8A8_SINT:                                                           return "VK_FORMAT_R8G8B8A8_SINT";
-               case VK_FORMAT_R8G8B8A8_SRGB:                                                           return "VK_FORMAT_R8G8B8A8_SRGB";
-               case VK_FORMAT_B8G8R8A8_UNORM:                                                          return "VK_FORMAT_B8G8R8A8_UNORM";
-               case VK_FORMAT_B8G8R8A8_SNORM:                                                          return "VK_FORMAT_B8G8R8A8_SNORM";
-               case VK_FORMAT_B8G8R8A8_USCALED:                                                        return "VK_FORMAT_B8G8R8A8_USCALED";
-               case VK_FORMAT_B8G8R8A8_SSCALED:                                                        return "VK_FORMAT_B8G8R8A8_SSCALED";
-               case VK_FORMAT_B8G8R8A8_UINT:                                                           return "VK_FORMAT_B8G8R8A8_UINT";
-               case VK_FORMAT_B8G8R8A8_SINT:                                                           return "VK_FORMAT_B8G8R8A8_SINT";
-               case VK_FORMAT_B8G8R8A8_SRGB:                                                           return "VK_FORMAT_B8G8R8A8_SRGB";
-               case VK_FORMAT_A8B8G8R8_UNORM_PACK32:                                           return "VK_FORMAT_A8B8G8R8_UNORM_PACK32";
-               case VK_FORMAT_A8B8G8R8_SNORM_PACK32:                                           return "VK_FORMAT_A8B8G8R8_SNORM_PACK32";
-               case VK_FORMAT_A8B8G8R8_USCALED_PACK32:                                         return "VK_FORMAT_A8B8G8R8_USCALED_PACK32";
-               case VK_FORMAT_A8B8G8R8_SSCALED_PACK32:                                         return "VK_FORMAT_A8B8G8R8_SSCALED_PACK32";
-               case VK_FORMAT_A8B8G8R8_UINT_PACK32:                                            return "VK_FORMAT_A8B8G8R8_UINT_PACK32";
-               case VK_FORMAT_A8B8G8R8_SINT_PACK32:                                            return "VK_FORMAT_A8B8G8R8_SINT_PACK32";
-               case VK_FORMAT_A8B8G8R8_SRGB_PACK32:                                            return "VK_FORMAT_A8B8G8R8_SRGB_PACK32";
-               case VK_FORMAT_A2R10G10B10_UNORM_PACK32:                                        return "VK_FORMAT_A2R10G10B10_UNORM_PACK32";
-               case VK_FORMAT_A2R10G10B10_SNORM_PACK32:                                        return "VK_FORMAT_A2R10G10B10_SNORM_PACK32";
-               case VK_FORMAT_A2R10G10B10_USCALED_PACK32:                                      return "VK_FORMAT_A2R10G10B10_USCALED_PACK32";
-               case VK_FORMAT_A2R10G10B10_SSCALED_PACK32:                                      return "VK_FORMAT_A2R10G10B10_SSCALED_PACK32";
-               case VK_FORMAT_A2R10G10B10_UINT_PACK32:                                         return "VK_FORMAT_A2R10G10B10_UINT_PACK32";
-               case VK_FORMAT_A2R10G10B10_SINT_PACK32:                                         return "VK_FORMAT_A2R10G10B10_SINT_PACK32";
-               case VK_FORMAT_A2B10G10R10_UNORM_PACK32:                                        return "VK_FORMAT_A2B10G10R10_UNORM_PACK32";
-               case VK_FORMAT_A2B10G10R10_SNORM_PACK32:                                        return "VK_FORMAT_A2B10G10R10_SNORM_PACK32";
-               case VK_FORMAT_A2B10G10R10_USCALED_PACK32:                                      return "VK_FORMAT_A2B10G10R10_USCALED_PACK32";
-               case VK_FORMAT_A2B10G10R10_SSCALED_PACK32:                                      return "VK_FORMAT_A2B10G10R10_SSCALED_PACK32";
-               case VK_FORMAT_A2B10G10R10_UINT_PACK32:                                         return "VK_FORMAT_A2B10G10R10_UINT_PACK32";
-               case VK_FORMAT_A2B10G10R10_SINT_PACK32:                                         return "VK_FORMAT_A2B10G10R10_SINT_PACK32";
-               case VK_FORMAT_R16_UNORM:                                                                       return "VK_FORMAT_R16_UNORM";
-               case VK_FORMAT_R16_SNORM:                                                                       return "VK_FORMAT_R16_SNORM";
-               case VK_FORMAT_R16_USCALED:                                                                     return "VK_FORMAT_R16_USCALED";
-               case VK_FORMAT_R16_SSCALED:                                                                     return "VK_FORMAT_R16_SSCALED";
-               case VK_FORMAT_R16_UINT:                                                                        return "VK_FORMAT_R16_UINT";
-               case VK_FORMAT_R16_SINT:                                                                        return "VK_FORMAT_R16_SINT";
-               case VK_FORMAT_R16_SFLOAT:                                                                      return "VK_FORMAT_R16_SFLOAT";
-               case VK_FORMAT_R16G16_UNORM:                                                            return "VK_FORMAT_R16G16_UNORM";
-               case VK_FORMAT_R16G16_SNORM:                                                            return "VK_FORMAT_R16G16_SNORM";
-               case VK_FORMAT_R16G16_USCALED:                                                          return "VK_FORMAT_R16G16_USCALED";
-               case VK_FORMAT_R16G16_SSCALED:                                                          return "VK_FORMAT_R16G16_SSCALED";
-               case VK_FORMAT_R16G16_UINT:                                                                     return "VK_FORMAT_R16G16_UINT";
-               case VK_FORMAT_R16G16_SINT:                                                                     return "VK_FORMAT_R16G16_SINT";
-               case VK_FORMAT_R16G16_SFLOAT:                                                           return "VK_FORMAT_R16G16_SFLOAT";
-               case VK_FORMAT_R16G16B16_UNORM:                                                         return "VK_FORMAT_R16G16B16_UNORM";
-               case VK_FORMAT_R16G16B16_SNORM:                                                         return "VK_FORMAT_R16G16B16_SNORM";
-               case VK_FORMAT_R16G16B16_USCALED:                                                       return "VK_FORMAT_R16G16B16_USCALED";
-               case VK_FORMAT_R16G16B16_SSCALED:                                                       return "VK_FORMAT_R16G16B16_SSCALED";
-               case VK_FORMAT_R16G16B16_UINT:                                                          return "VK_FORMAT_R16G16B16_UINT";
-               case VK_FORMAT_R16G16B16_SINT:                                                          return "VK_FORMAT_R16G16B16_SINT";
-               case VK_FORMAT_R16G16B16_SFLOAT:                                                        return "VK_FORMAT_R16G16B16_SFLOAT";
-               case VK_FORMAT_R16G16B16A16_UNORM:                                                      return "VK_FORMAT_R16G16B16A16_UNORM";
-               case VK_FORMAT_R16G16B16A16_SNORM:                                                      return "VK_FORMAT_R16G16B16A16_SNORM";
-               case VK_FORMAT_R16G16B16A16_USCALED:                                            return "VK_FORMAT_R16G16B16A16_USCALED";
-               case VK_FORMAT_R16G16B16A16_SSCALED:                                            return "VK_FORMAT_R16G16B16A16_SSCALED";
-               case VK_FORMAT_R16G16B16A16_UINT:                                                       return "VK_FORMAT_R16G16B16A16_UINT";
-               case VK_FORMAT_R16G16B16A16_SINT:                                                       return "VK_FORMAT_R16G16B16A16_SINT";
-               case VK_FORMAT_R16G16B16A16_SFLOAT:                                                     return "VK_FORMAT_R16G16B16A16_SFLOAT";
-               case VK_FORMAT_R32_UINT:                                                                        return "VK_FORMAT_R32_UINT";
-               case VK_FORMAT_R32_SINT:                                                                        return "VK_FORMAT_R32_SINT";
-               case VK_FORMAT_R32_SFLOAT:                                                                      return "VK_FORMAT_R32_SFLOAT";
-               case VK_FORMAT_R32G32_UINT:                                                                     return "VK_FORMAT_R32G32_UINT";
-               case VK_FORMAT_R32G32_SINT:                                                                     return "VK_FORMAT_R32G32_SINT";
-               case VK_FORMAT_R32G32_SFLOAT:                                                           return "VK_FORMAT_R32G32_SFLOAT";
-               case VK_FORMAT_R32G32B32_UINT:                                                          return "VK_FORMAT_R32G32B32_UINT";
-               case VK_FORMAT_R32G32B32_SINT:                                                          return "VK_FORMAT_R32G32B32_SINT";
-               case VK_FORMAT_R32G32B32_SFLOAT:                                                        return "VK_FORMAT_R32G32B32_SFLOAT";
-               case VK_FORMAT_R32G32B32A32_UINT:                                                       return "VK_FORMAT_R32G32B32A32_UINT";
-               case VK_FORMAT_R32G32B32A32_SINT:                                                       return "VK_FORMAT_R32G32B32A32_SINT";
-               case VK_FORMAT_R32G32B32A32_SFLOAT:                                                     return "VK_FORMAT_R32G32B32A32_SFLOAT";
-               case VK_FORMAT_R64_UINT:                                                                        return "VK_FORMAT_R64_UINT";
-               case VK_FORMAT_R64_SINT:                                                                        return "VK_FORMAT_R64_SINT";
-               case VK_FORMAT_R64_SFLOAT:                                                                      return "VK_FORMAT_R64_SFLOAT";
-               case VK_FORMAT_R64G64_UINT:                                                                     return "VK_FORMAT_R64G64_UINT";
-               case VK_FORMAT_R64G64_SINT:                                                                     return "VK_FORMAT_R64G64_SINT";
-               case VK_FORMAT_R64G64_SFLOAT:                                                           return "VK_FORMAT_R64G64_SFLOAT";
-               case VK_FORMAT_R64G64B64_UINT:                                                          return "VK_FORMAT_R64G64B64_UINT";
-               case VK_FORMAT_R64G64B64_SINT:                                                          return "VK_FORMAT_R64G64B64_SINT";
-               case VK_FORMAT_R64G64B64_SFLOAT:                                                        return "VK_FORMAT_R64G64B64_SFLOAT";
-               case VK_FORMAT_R64G64B64A64_UINT:                                                       return "VK_FORMAT_R64G64B64A64_UINT";
-               case VK_FORMAT_R64G64B64A64_SINT:                                                       return "VK_FORMAT_R64G64B64A64_SINT";
-               case VK_FORMAT_R64G64B64A64_SFLOAT:                                                     return "VK_FORMAT_R64G64B64A64_SFLOAT";
-               case VK_FORMAT_B10G11R11_UFLOAT_PACK32:                                         return "VK_FORMAT_B10G11R11_UFLOAT_PACK32";
-               case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:                                          return "VK_FORMAT_E5B9G9R9_UFLOAT_PACK32";
-               case VK_FORMAT_D16_UNORM:                                                                       return "VK_FORMAT_D16_UNORM";
-               case VK_FORMAT_X8_D24_UNORM_PACK32:                                                     return "VK_FORMAT_X8_D24_UNORM_PACK32";
-               case VK_FORMAT_D32_SFLOAT:                                                                      return "VK_FORMAT_D32_SFLOAT";
-               case VK_FORMAT_S8_UINT:                                                                         return "VK_FORMAT_S8_UINT";
-               case VK_FORMAT_D16_UNORM_S8_UINT:                                                       return "VK_FORMAT_D16_UNORM_S8_UINT";
-               case VK_FORMAT_D24_UNORM_S8_UINT:                                                       return "VK_FORMAT_D24_UNORM_S8_UINT";
-               case VK_FORMAT_D32_SFLOAT_S8_UINT:                                                      return "VK_FORMAT_D32_SFLOAT_S8_UINT";
-               case VK_FORMAT_BC1_RGB_UNORM_BLOCK:                                                     return "VK_FORMAT_BC1_RGB_UNORM_BLOCK";
-               case VK_FORMAT_BC1_RGB_SRGB_BLOCK:                                                      return "VK_FORMAT_BC1_RGB_SRGB_BLOCK";
-               case VK_FORMAT_BC1_RGBA_UNORM_BLOCK:                                            return "VK_FORMAT_BC1_RGBA_UNORM_BLOCK";
-               case VK_FORMAT_BC1_RGBA_SRGB_BLOCK:                                                     return "VK_FORMAT_BC1_RGBA_SRGB_BLOCK";
-               case VK_FORMAT_BC2_UNORM_BLOCK:                                                         return "VK_FORMAT_BC2_UNORM_BLOCK";
-               case VK_FORMAT_BC2_SRGB_BLOCK:                                                          return "VK_FORMAT_BC2_SRGB_BLOCK";
-               case VK_FORMAT_BC3_UNORM_BLOCK:                                                         return "VK_FORMAT_BC3_UNORM_BLOCK";
-               case VK_FORMAT_BC3_SRGB_BLOCK:                                                          return "VK_FORMAT_BC3_SRGB_BLOCK";
-               case VK_FORMAT_BC4_UNORM_BLOCK:                                                         return "VK_FORMAT_BC4_UNORM_BLOCK";
-               case VK_FORMAT_BC4_SNORM_BLOCK:                                                         return "VK_FORMAT_BC4_SNORM_BLOCK";
-               case VK_FORMAT_BC5_UNORM_BLOCK:                                                         return "VK_FORMAT_BC5_UNORM_BLOCK";
-               case VK_FORMAT_BC5_SNORM_BLOCK:                                                         return "VK_FORMAT_BC5_SNORM_BLOCK";
-               case VK_FORMAT_BC6H_UFLOAT_BLOCK:                                                       return "VK_FORMAT_BC6H_UFLOAT_BLOCK";
-               case VK_FORMAT_BC6H_SFLOAT_BLOCK:                                                       return "VK_FORMAT_BC6H_SFLOAT_BLOCK";
-               case VK_FORMAT_BC7_UNORM_BLOCK:                                                         return "VK_FORMAT_BC7_UNORM_BLOCK";
-               case VK_FORMAT_BC7_SRGB_BLOCK:                                                          return "VK_FORMAT_BC7_SRGB_BLOCK";
-               case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:                                         return "VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK";
-               case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:                                          return "VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK";
-               case VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:                                       return "VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK";
-               case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:                                        return "VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK";
-               case VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:                                       return "VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK";
-               case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:                                        return "VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK";
-               case VK_FORMAT_EAC_R11_UNORM_BLOCK:                                                     return "VK_FORMAT_EAC_R11_UNORM_BLOCK";
-               case VK_FORMAT_EAC_R11_SNORM_BLOCK:                                                     return "VK_FORMAT_EAC_R11_SNORM_BLOCK";
-               case VK_FORMAT_EAC_R11G11_UNORM_BLOCK:                                          return "VK_FORMAT_EAC_R11G11_UNORM_BLOCK";
-               case VK_FORMAT_EAC_R11G11_SNORM_BLOCK:                                          return "VK_FORMAT_EAC_R11G11_SNORM_BLOCK";
-               case VK_FORMAT_ASTC_4x4_UNORM_BLOCK:                                            return "VK_FORMAT_ASTC_4x4_UNORM_BLOCK";
-               case VK_FORMAT_ASTC_4x4_SRGB_BLOCK:                                                     return "VK_FORMAT_ASTC_4x4_SRGB_BLOCK";
-               case VK_FORMAT_ASTC_5x4_UNORM_BLOCK:                                            return "VK_FORMAT_ASTC_5x4_UNORM_BLOCK";
-               case VK_FORMAT_ASTC_5x4_SRGB_BLOCK:                                                     return "VK_FORMAT_ASTC_5x4_SRGB_BLOCK";
-               case VK_FORMAT_ASTC_5x5_UNORM_BLOCK:                                            return "VK_FORMAT_ASTC_5x5_UNORM_BLOCK";
-               case VK_FORMAT_ASTC_5x5_SRGB_BLOCK:                                                     return "VK_FORMAT_ASTC_5x5_SRGB_BLOCK";
-               case VK_FORMAT_ASTC_6x5_UNORM_BLOCK:                                            return "VK_FORMAT_ASTC_6x5_UNORM_BLOCK";
-               case VK_FORMAT_ASTC_6x5_SRGB_BLOCK:                                                     return "VK_FORMAT_ASTC_6x5_SRGB_BLOCK";
-               case VK_FORMAT_ASTC_6x6_UNORM_BLOCK:                                            return "VK_FORMAT_ASTC_6x6_UNORM_BLOCK";
-               case VK_FORMAT_ASTC_6x6_SRGB_BLOCK:                                                     return "VK_FORMAT_ASTC_6x6_SRGB_BLOCK";
-               case VK_FORMAT_ASTC_8x5_UNORM_BLOCK:                                            return "VK_FORMAT_ASTC_8x5_UNORM_BLOCK";
-               case VK_FORMAT_ASTC_8x5_SRGB_BLOCK:                                                     return "VK_FORMAT_ASTC_8x5_SRGB_BLOCK";
-               case VK_FORMAT_ASTC_8x6_UNORM_BLOCK:                                            return "VK_FORMAT_ASTC_8x6_UNORM_BLOCK";
-               case VK_FORMAT_ASTC_8x6_SRGB_BLOCK:                                                     return "VK_FORMAT_ASTC_8x6_SRGB_BLOCK";
-               case VK_FORMAT_ASTC_8x8_UNORM_BLOCK:                                            return "VK_FORMAT_ASTC_8x8_UNORM_BLOCK";
-               case VK_FORMAT_ASTC_8x8_SRGB_BLOCK:                                                     return "VK_FORMAT_ASTC_8x8_SRGB_BLOCK";
-               case VK_FORMAT_ASTC_10x5_UNORM_BLOCK:                                           return "VK_FORMAT_ASTC_10x5_UNORM_BLOCK";
-               case VK_FORMAT_ASTC_10x5_SRGB_BLOCK:                                            return "VK_FORMAT_ASTC_10x5_SRGB_BLOCK";
-               case VK_FORMAT_ASTC_10x6_UNORM_BLOCK:                                           return "VK_FORMAT_ASTC_10x6_UNORM_BLOCK";
-               case VK_FORMAT_ASTC_10x6_SRGB_BLOCK:                                            return "VK_FORMAT_ASTC_10x6_SRGB_BLOCK";
-               case VK_FORMAT_ASTC_10x8_UNORM_BLOCK:                                           return "VK_FORMAT_ASTC_10x8_UNORM_BLOCK";
-               case VK_FORMAT_ASTC_10x8_SRGB_BLOCK:                                            return "VK_FORMAT_ASTC_10x8_SRGB_BLOCK";
-               case VK_FORMAT_ASTC_10x10_UNORM_BLOCK:                                          return "VK_FORMAT_ASTC_10x10_UNORM_BLOCK";
-               case VK_FORMAT_ASTC_10x10_SRGB_BLOCK:                                           return "VK_FORMAT_ASTC_10x10_SRGB_BLOCK";
-               case VK_FORMAT_ASTC_12x10_UNORM_BLOCK:                                          return "VK_FORMAT_ASTC_12x10_UNORM_BLOCK";
-               case VK_FORMAT_ASTC_12x10_SRGB_BLOCK:                                           return "VK_FORMAT_ASTC_12x10_SRGB_BLOCK";
-               case VK_FORMAT_ASTC_12x12_UNORM_BLOCK:                                          return "VK_FORMAT_ASTC_12x12_UNORM_BLOCK";
-               case VK_FORMAT_ASTC_12x12_SRGB_BLOCK:                                           return "VK_FORMAT_ASTC_12x12_SRGB_BLOCK";
-               case VK_FORMAT_G8B8G8R8_422_UNORM:                                                      return "VK_FORMAT_G8B8G8R8_422_UNORM";
-               case VK_FORMAT_B8G8R8G8_422_UNORM:                                                      return "VK_FORMAT_B8G8R8G8_422_UNORM";
-               case VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM:                                       return "VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM";
-               case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:                                        return "VK_FORMAT_G8_B8R8_2PLANE_420_UNORM";
-               case VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM:                                       return "VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM";
-               case VK_FORMAT_G8_B8R8_2PLANE_422_UNORM:                                        return "VK_FORMAT_G8_B8R8_2PLANE_422_UNORM";
-               case VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM:                                       return "VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM";
-               case VK_FORMAT_R10X6_UNORM_PACK16:                                                      return "VK_FORMAT_R10X6_UNORM_PACK16";
-               case VK_FORMAT_R10X6G10X6_UNORM_2PACK16:                                        return "VK_FORMAT_R10X6G10X6_UNORM_2PACK16";
-               case VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16:                      return "VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16";
-               case VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16:          return "VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16";
-               case VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16:          return "VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16";
-               case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16:      return "VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16";
-               case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16:       return "VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16";
-               case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16:      return "VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16";
-               case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16:       return "VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16";
-               case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16:      return "VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16";
-               case VK_FORMAT_R12X4_UNORM_PACK16:                                                      return "VK_FORMAT_R12X4_UNORM_PACK16";
-               case VK_FORMAT_R12X4G12X4_UNORM_2PACK16:                                        return "VK_FORMAT_R12X4G12X4_UNORM_2PACK16";
-               case VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16:                      return "VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16";
-               case VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16:          return "VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16";
-               case VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16:          return "VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16";
-               case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16:      return "VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16";
-               case VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16:       return "VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16";
-               case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16:      return "VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16";
-               case VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16:       return "VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16";
-               case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16:      return "VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16";
-               case VK_FORMAT_G16B16G16R16_422_UNORM:                                          return "VK_FORMAT_G16B16G16R16_422_UNORM";
-               case VK_FORMAT_B16G16R16G16_422_UNORM:                                          return "VK_FORMAT_B16G16R16G16_422_UNORM";
-               case VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM:                            return "VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM";
-               case VK_FORMAT_G16_B16R16_2PLANE_420_UNORM:                                     return "VK_FORMAT_G16_B16R16_2PLANE_420_UNORM";
-               case VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM:                            return "VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM";
-               case VK_FORMAT_G16_B16R16_2PLANE_422_UNORM:                                     return "VK_FORMAT_G16_B16R16_2PLANE_422_UNORM";
-               case VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM:                            return "VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM";
-               case VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT:                                       return "VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT";
-               case VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT:                                       return "VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT";
-               case VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT:                                       return "VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT";
-               case VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT:                                       return "VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT";
-               case VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT:                                       return "VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT";
-               case VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT:                                       return "VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT";
-               case VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT:                                       return "VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT";
-               case VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT:                                       return "VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT";
-               case VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT:                                      return "VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT";
-               case VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT:                                      return "VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT";
-               case VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT:                                      return "VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT";
-               case VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT:                                     return "VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT";
-               case VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT:                                     return "VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT";
-               case VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT:                                     return "VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT";
-               case VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT:                                       return "VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT";
-               case VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT:                                       return "VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT";
-               case VK_FORMAT_MAX_ENUM:                                                                        return "VK_FORMAT_MAX_ENUM";
-               default:                                                                                                        return DE_NULL;
 +              case VK_STRUCTURE_TYPE_PIPELINE_IDENTIFIER_INFO:                                                                                return "VK_STRUCTURE_TYPE_PIPELINE_IDENTIFIER_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";
 +              case VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR:                                                                 return "VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR";
 +              case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR:                                                    return "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR";
 +              case VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR:                                                                             return "VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR";
 +              case VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR:                                                                   return "VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR";
 +              case VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR:                                                  return "VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR";
 +              case VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR:                                                                    return "VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR";
 +              case VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR:                                                                 return "VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR";
 +              case VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR:                                                                                return "VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR";
 +              case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT:               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT";
 +              case VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT:                                                                 return "VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT";
 +              case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT:                                                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT";
 +              case VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR:                                                                               return "VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR";
 +              case VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR:                                                                                return "VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR";
 +              case VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR:                                                                                  return "VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR";
 +              case VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR:                                                                    return "VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR";
 +              case VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR:                                                                               return "VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR";
 +              case VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR:                                                                                             return "VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR";
 +              case VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT:                                                                              return "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT";
 +              case VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT:                                                                                  return "VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT";
 +              case VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT:                                                                                   return "VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT";
 +              case VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT:                                                                                  return "VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT";
 +              case VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT:                                                               return "VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT";
 +              case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT:                                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT";
 +              case VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT:                                return "VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT";
 +              case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT:               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT";
 +              case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT:               return "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT";
 +              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_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR:                                                 return "VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR";
 +              case VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR:                                                                                return "VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR";
 +              case VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR:                                                                                   return "VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR";
++              case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR:                                  return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR";
++              case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR:                                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR";
++              case VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR:                                                  return "VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR";
++              case VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR:                                                               return "VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR";
++              case VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR:                                                                 return "VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR";
++              case VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR:                                                                                 return "VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR";
++              case VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR:                                                             return "VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR";
++              case VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_RESERVATION_INFO_KHR:                                                  return "VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_RESERVATION_INFO_KHR";
 +              case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR:                                                              return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR";
 +              case VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR:                                                                              return "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR";
 +              case VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR:                                                                                    return "VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR";
 +              case VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR:                                                                                return "VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR";
 +              case VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR:                                                                  return "VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR";
 +              case VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR:                                                                   return "VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR";
 +              case VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR:                                                                                return "VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR";
 +              case VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR:                                                                return "VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR";
++              case VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT:                                                                return "VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT";
++              case VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT:                                                                 return "VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT";
++              case VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT:                                                                                   return "VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT";
++              case VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT:                                                 return "VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT";
++              case VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT:                                                   return "VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT";
 +              case VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT:                                                                               return "VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT";
 +              case VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT:                                             return "VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT";
 +              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_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";
 +              case VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT:                                                 return "VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT";
 +              case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT:                              return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT";
 +              case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT:                                  return "VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT";
 +              case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT:                              return "VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT";
 +              case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT:                                                return "VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT";
 +              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_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_CLOCK_FEATURES_KHR:                                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR";
 +              case VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT:                                                                   return "VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT";
 +              case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT:                 return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT";
 +              case VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT:                             return "VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT";
 +              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_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT:                                             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT";
 +              case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR:                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR";
 +              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";
 +              case VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR:                                               return "VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR";
 +              case VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR:                    return "VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR";
 +              case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR:                    return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR";
 +              case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR:                              return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR";
 +              case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR:                                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR";
 +              case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT:                  return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT";
 +              case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT:                                    return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT";
++              case VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT:                                                                                 return "VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT";
 +              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_HEADLESS_SURFACE_CREATE_INFO_EXT:                                                                return "VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT";
 +              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_SHADER_ATOMIC_FLOAT_FEATURES_EXT:                                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_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_EXTENDED_DYNAMIC_STATE_FEATURES_EXT:                             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT";
 +              case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT";
 +              case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT:                             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT";
 +              case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT:                   return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT";
 +              case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT:                                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT";
 +              case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT:                                             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT";
 +              case VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT:                                             return "VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT";
 +              case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT:                              return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT";
 +              case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT:                                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT";
 +              case VK_STRUCTURE_TYPE_REFRESH_OBJECT_LIST_KHR:                                                                                 return "VK_STRUCTURE_TYPE_REFRESH_OBJECT_LIST_KHR";
++              case VK_STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR:                                                                                    return "VK_STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR";
++              case VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2_KHR:                                                                             return "VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2_KHR";
++              case VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2_KHR:                                                                              return "VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2_KHR";
++              case VK_STRUCTURE_TYPE_DEPENDENCY_INFO_KHR:                                                                                             return "VK_STRUCTURE_TYPE_DEPENDENCY_INFO_KHR";
++              case VK_STRUCTURE_TYPE_SUBMIT_INFO_2_KHR:                                                                                               return "VK_STRUCTURE_TYPE_SUBMIT_INFO_2_KHR";
++              case VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO_KHR:                                                                               return "VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO_KHR";
++              case VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO_KHR:                                                                  return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO_KHR";
++              case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR:                                  return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR";
++              case VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV:                                                 return "VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV";
++              case VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV:                                                                                    return "VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV";
++              case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT:                  return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT";
 +              case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT:                                   return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT";
 +              case VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR:                                                                                  return "VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR";
 +              case VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR:                                                                                   return "VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR";
 +              case VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR:                                                                 return "VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR";
 +              case VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR:                                                                 return "VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR";
 +              case VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR:                                                                                   return "VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR";
 +              case VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR:                                                                                return "VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR";
 +              case VK_STRUCTURE_TYPE_BUFFER_COPY_2_KHR:                                                                                               return "VK_STRUCTURE_TYPE_BUFFER_COPY_2_KHR";
 +              case VK_STRUCTURE_TYPE_IMAGE_COPY_2_KHR:                                                                                                return "VK_STRUCTURE_TYPE_IMAGE_COPY_2_KHR";
 +              case VK_STRUCTURE_TYPE_IMAGE_BLIT_2_KHR:                                                                                                return "VK_STRUCTURE_TYPE_IMAGE_BLIT_2_KHR";
 +              case VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR:                                                                                 return "VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR";
 +              case VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR:                                                                                             return "VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR";
 +              case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT:                                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT";
++              case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT:                 return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT";
++              case VK_STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT:                                                  return "VK_STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT";
++              case VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT:                                                return "VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT";
++              case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT:                   return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT";
++              case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT:                                 return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT";
++              case VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT:                                                    return "VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT";
 +              case VK_STRUCTURE_TYPE_MAX_ENUM:                                                                                                                return "VK_STRUCTURE_TYPE_MAX_ENUM";
 +              default:                                                                                                                                                                return DE_NULL;
 +      }
 +}
 +
 +const char* getImageLayoutName (VkImageLayout value)
 +{
 +      switch (value)
 +      {
 +              case VK_IMAGE_LAYOUT_UNDEFINED:                                                                         return "VK_IMAGE_LAYOUT_UNDEFINED";
 +              case VK_IMAGE_LAYOUT_GENERAL:                                                                           return "VK_IMAGE_LAYOUT_GENERAL";
 +              case VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL:                                          return "VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL";
 +              case VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL:                          return "VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL";
 +              case VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL:                           return "VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL";
 +              case VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL:                                          return "VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL";
 +              case VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL:                                                      return "VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL";
 +              case VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL:                                                      return "VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL";
 +              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_READ_ONLY_OPTIMAL_KHR:                                                     return "VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR";
++              case VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR:                                            return "VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR";
 +              case VK_IMAGE_LAYOUT_MAX_ENUM:                                                                          return "VK_IMAGE_LAYOUT_MAX_ENUM";
 +              default:                                                                                                                        return DE_NULL;
 +      }
 +}
 +
 +const char* getObjectTypeName (VkObjectType value)
 +{
 +      switch (value)
 +      {
 +              case VK_OBJECT_TYPE_UNKNOWN:                                    return "VK_OBJECT_TYPE_UNKNOWN";
 +              case VK_OBJECT_TYPE_INSTANCE:                                   return "VK_OBJECT_TYPE_INSTANCE";
 +              case VK_OBJECT_TYPE_PHYSICAL_DEVICE:                    return "VK_OBJECT_TYPE_PHYSICAL_DEVICE";
 +              case VK_OBJECT_TYPE_DEVICE:                                             return "VK_OBJECT_TYPE_DEVICE";
 +              case VK_OBJECT_TYPE_QUEUE:                                              return "VK_OBJECT_TYPE_QUEUE";
 +              case VK_OBJECT_TYPE_SEMAPHORE:                                  return "VK_OBJECT_TYPE_SEMAPHORE";
 +              case VK_OBJECT_TYPE_COMMAND_BUFFER:                             return "VK_OBJECT_TYPE_COMMAND_BUFFER";
 +              case VK_OBJECT_TYPE_FENCE:                                              return "VK_OBJECT_TYPE_FENCE";
 +              case VK_OBJECT_TYPE_DEVICE_MEMORY:                              return "VK_OBJECT_TYPE_DEVICE_MEMORY";
 +              case VK_OBJECT_TYPE_BUFFER:                                             return "VK_OBJECT_TYPE_BUFFER";
 +              case VK_OBJECT_TYPE_IMAGE:                                              return "VK_OBJECT_TYPE_IMAGE";
 +              case VK_OBJECT_TYPE_EVENT:                                              return "VK_OBJECT_TYPE_EVENT";
 +              case VK_OBJECT_TYPE_QUERY_POOL:                                 return "VK_OBJECT_TYPE_QUERY_POOL";
 +              case VK_OBJECT_TYPE_BUFFER_VIEW:                                return "VK_OBJECT_TYPE_BUFFER_VIEW";
 +              case VK_OBJECT_TYPE_IMAGE_VIEW:                                 return "VK_OBJECT_TYPE_IMAGE_VIEW";
 +              case VK_OBJECT_TYPE_SHADER_MODULE:                              return "VK_OBJECT_TYPE_SHADER_MODULE";
 +              case VK_OBJECT_TYPE_PIPELINE_CACHE:                             return "VK_OBJECT_TYPE_PIPELINE_CACHE";
 +              case VK_OBJECT_TYPE_PIPELINE_LAYOUT:                    return "VK_OBJECT_TYPE_PIPELINE_LAYOUT";
 +              case VK_OBJECT_TYPE_RENDER_PASS:                                return "VK_OBJECT_TYPE_RENDER_PASS";
 +              case VK_OBJECT_TYPE_PIPELINE:                                   return "VK_OBJECT_TYPE_PIPELINE";
 +              case VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT:              return "VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT";
 +              case VK_OBJECT_TYPE_SAMPLER:                                    return "VK_OBJECT_TYPE_SAMPLER";
 +              case VK_OBJECT_TYPE_DESCRIPTOR_POOL:                    return "VK_OBJECT_TYPE_DESCRIPTOR_POOL";
 +              case VK_OBJECT_TYPE_DESCRIPTOR_SET:                             return "VK_OBJECT_TYPE_DESCRIPTOR_SET";
 +              case VK_OBJECT_TYPE_FRAMEBUFFER:                                return "VK_OBJECT_TYPE_FRAMEBUFFER";
 +              case VK_OBJECT_TYPE_COMMAND_POOL:                               return "VK_OBJECT_TYPE_COMMAND_POOL";
 +              case VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION:   return "VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION";
 +              case VK_OBJECT_TYPE_SURFACE_KHR:                                return "VK_OBJECT_TYPE_SURFACE_KHR";
 +              case VK_OBJECT_TYPE_SWAPCHAIN_KHR:                              return "VK_OBJECT_TYPE_SWAPCHAIN_KHR";
 +              case VK_OBJECT_TYPE_DISPLAY_KHR:                                return "VK_OBJECT_TYPE_DISPLAY_KHR";
 +              case VK_OBJECT_TYPE_DISPLAY_MODE_KHR:                   return "VK_OBJECT_TYPE_DISPLAY_MODE_KHR";
++              case VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT:  return "VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT";
 +              case VK_OBJECT_TYPE_MAX_ENUM:                                   return "VK_OBJECT_TYPE_MAX_ENUM";
 +              default:                                                                                return DE_NULL;
 +      }
 +}
 +
 +const char* getVendorIdName (VkVendorId value)
 +{
 +      switch (value)
 +      {
 +              case VK_VENDOR_ID_VIV:          return "VK_VENDOR_ID_VIV";
 +              case VK_VENDOR_ID_VSI:          return "VK_VENDOR_ID_VSI";
 +              case VK_VENDOR_ID_KAZAN:        return "VK_VENDOR_ID_KAZAN";
 +              case VK_VENDOR_ID_CODEPLAY:     return "VK_VENDOR_ID_CODEPLAY";
 +              case VK_VENDOR_ID_MESA:         return "VK_VENDOR_ID_MESA";
 +              case VK_VENDOR_ID_POCL:         return "VK_VENDOR_ID_POCL";
 +              case VK_VENDOR_ID_MAX_ENUM:     return "VK_VENDOR_ID_MAX_ENUM";
 +              default:                                        return DE_NULL;
 +      }
 +}
 +
 +const char* getPipelineCacheHeaderVersionName (VkPipelineCacheHeaderVersion value)
 +{
 +      switch (value)
 +      {
 +              case VK_PIPELINE_CACHE_HEADER_VERSION_ONE:              return "VK_PIPELINE_CACHE_HEADER_VERSION_ONE";
 +              case VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM: return "VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM";
 +              default:                                                                                return DE_NULL;
 +      }
 +}
 +
 +const char* getSystemAllocationScopeName (VkSystemAllocationScope value)
 +{
 +      switch (value)
 +      {
 +              case VK_SYSTEM_ALLOCATION_SCOPE_COMMAND:        return "VK_SYSTEM_ALLOCATION_SCOPE_COMMAND";
 +              case VK_SYSTEM_ALLOCATION_SCOPE_OBJECT:         return "VK_SYSTEM_ALLOCATION_SCOPE_OBJECT";
 +              case VK_SYSTEM_ALLOCATION_SCOPE_CACHE:          return "VK_SYSTEM_ALLOCATION_SCOPE_CACHE";
 +              case VK_SYSTEM_ALLOCATION_SCOPE_DEVICE:         return "VK_SYSTEM_ALLOCATION_SCOPE_DEVICE";
 +              case VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE:       return "VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE";
 +              case VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM:       return "VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM";
 +              default:                                                                        return DE_NULL;
 +      }
 +}
 +
 +const char* getInternalAllocationTypeName (VkInternalAllocationType value)
 +{
 +      switch (value)
 +      {
 +              case VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE:    return "VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE";
 +              case VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM:              return "VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM";
 +              default:                                                                                return DE_NULL;
 +      }
 +}
 +
 +const char* getFormatName (VkFormat value)
 +{
 +      switch (value)
 +      {
-               case VK_QUERY_TYPE_OCCLUSION:                   return "VK_QUERY_TYPE_OCCLUSION";
-               case VK_QUERY_TYPE_PIPELINE_STATISTICS: return "VK_QUERY_TYPE_PIPELINE_STATISTICS";
-               case VK_QUERY_TYPE_TIMESTAMP:                   return "VK_QUERY_TYPE_TIMESTAMP";
-               case VK_QUERY_TYPE_MAX_ENUM:                    return "VK_QUERY_TYPE_MAX_ENUM";
-               default:                                                                return DE_NULL;
++              case VK_FORMAT_UNDEFINED:                                                                               return "VK_FORMAT_UNDEFINED";
++              case VK_FORMAT_R4G4_UNORM_PACK8:                                                                return "VK_FORMAT_R4G4_UNORM_PACK8";
++              case VK_FORMAT_R4G4B4A4_UNORM_PACK16:                                                   return "VK_FORMAT_R4G4B4A4_UNORM_PACK16";
++              case VK_FORMAT_B4G4R4A4_UNORM_PACK16:                                                   return "VK_FORMAT_B4G4R4A4_UNORM_PACK16";
++              case VK_FORMAT_R5G6B5_UNORM_PACK16:                                                             return "VK_FORMAT_R5G6B5_UNORM_PACK16";
++              case VK_FORMAT_B5G6R5_UNORM_PACK16:                                                             return "VK_FORMAT_B5G6R5_UNORM_PACK16";
++              case VK_FORMAT_R5G5B5A1_UNORM_PACK16:                                                   return "VK_FORMAT_R5G5B5A1_UNORM_PACK16";
++              case VK_FORMAT_B5G5R5A1_UNORM_PACK16:                                                   return "VK_FORMAT_B5G5R5A1_UNORM_PACK16";
++              case VK_FORMAT_A1R5G5B5_UNORM_PACK16:                                                   return "VK_FORMAT_A1R5G5B5_UNORM_PACK16";
++              case VK_FORMAT_R8_UNORM:                                                                                return "VK_FORMAT_R8_UNORM";
++              case VK_FORMAT_R8_SNORM:                                                                                return "VK_FORMAT_R8_SNORM";
++              case VK_FORMAT_R8_USCALED:                                                                              return "VK_FORMAT_R8_USCALED";
++              case VK_FORMAT_R8_SSCALED:                                                                              return "VK_FORMAT_R8_SSCALED";
++              case VK_FORMAT_R8_UINT:                                                                                 return "VK_FORMAT_R8_UINT";
++              case VK_FORMAT_R8_SINT:                                                                                 return "VK_FORMAT_R8_SINT";
++              case VK_FORMAT_R8_SRGB:                                                                                 return "VK_FORMAT_R8_SRGB";
++              case VK_FORMAT_R8G8_UNORM:                                                                              return "VK_FORMAT_R8G8_UNORM";
++              case VK_FORMAT_R8G8_SNORM:                                                                              return "VK_FORMAT_R8G8_SNORM";
++              case VK_FORMAT_R8G8_USCALED:                                                                    return "VK_FORMAT_R8G8_USCALED";
++              case VK_FORMAT_R8G8_SSCALED:                                                                    return "VK_FORMAT_R8G8_SSCALED";
++              case VK_FORMAT_R8G8_UINT:                                                                               return "VK_FORMAT_R8G8_UINT";
++              case VK_FORMAT_R8G8_SINT:                                                                               return "VK_FORMAT_R8G8_SINT";
++              case VK_FORMAT_R8G8_SRGB:                                                                               return "VK_FORMAT_R8G8_SRGB";
++              case VK_FORMAT_R8G8B8_UNORM:                                                                    return "VK_FORMAT_R8G8B8_UNORM";
++              case VK_FORMAT_R8G8B8_SNORM:                                                                    return "VK_FORMAT_R8G8B8_SNORM";
++              case VK_FORMAT_R8G8B8_USCALED:                                                                  return "VK_FORMAT_R8G8B8_USCALED";
++              case VK_FORMAT_R8G8B8_SSCALED:                                                                  return "VK_FORMAT_R8G8B8_SSCALED";
++              case VK_FORMAT_R8G8B8_UINT:                                                                             return "VK_FORMAT_R8G8B8_UINT";
++              case VK_FORMAT_R8G8B8_SINT:                                                                             return "VK_FORMAT_R8G8B8_SINT";
++              case VK_FORMAT_R8G8B8_SRGB:                                                                             return "VK_FORMAT_R8G8B8_SRGB";
++              case VK_FORMAT_B8G8R8_UNORM:                                                                    return "VK_FORMAT_B8G8R8_UNORM";
++              case VK_FORMAT_B8G8R8_SNORM:                                                                    return "VK_FORMAT_B8G8R8_SNORM";
++              case VK_FORMAT_B8G8R8_USCALED:                                                                  return "VK_FORMAT_B8G8R8_USCALED";
++              case VK_FORMAT_B8G8R8_SSCALED:                                                                  return "VK_FORMAT_B8G8R8_SSCALED";
++              case VK_FORMAT_B8G8R8_UINT:                                                                             return "VK_FORMAT_B8G8R8_UINT";
++              case VK_FORMAT_B8G8R8_SINT:                                                                             return "VK_FORMAT_B8G8R8_SINT";
++              case VK_FORMAT_B8G8R8_SRGB:                                                                             return "VK_FORMAT_B8G8R8_SRGB";
++              case VK_FORMAT_R8G8B8A8_UNORM:                                                                  return "VK_FORMAT_R8G8B8A8_UNORM";
++              case VK_FORMAT_R8G8B8A8_SNORM:                                                                  return "VK_FORMAT_R8G8B8A8_SNORM";
++              case VK_FORMAT_R8G8B8A8_USCALED:                                                                return "VK_FORMAT_R8G8B8A8_USCALED";
++              case VK_FORMAT_R8G8B8A8_SSCALED:                                                                return "VK_FORMAT_R8G8B8A8_SSCALED";
++              case VK_FORMAT_R8G8B8A8_UINT:                                                                   return "VK_FORMAT_R8G8B8A8_UINT";
++              case VK_FORMAT_R8G8B8A8_SINT:                                                                   return "VK_FORMAT_R8G8B8A8_SINT";
++              case VK_FORMAT_R8G8B8A8_SRGB:                                                                   return "VK_FORMAT_R8G8B8A8_SRGB";
++              case VK_FORMAT_B8G8R8A8_UNORM:                                                                  return "VK_FORMAT_B8G8R8A8_UNORM";
++              case VK_FORMAT_B8G8R8A8_SNORM:                                                                  return "VK_FORMAT_B8G8R8A8_SNORM";
++              case VK_FORMAT_B8G8R8A8_USCALED:                                                                return "VK_FORMAT_B8G8R8A8_USCALED";
++              case VK_FORMAT_B8G8R8A8_SSCALED:                                                                return "VK_FORMAT_B8G8R8A8_SSCALED";
++              case VK_FORMAT_B8G8R8A8_UINT:                                                                   return "VK_FORMAT_B8G8R8A8_UINT";
++              case VK_FORMAT_B8G8R8A8_SINT:                                                                   return "VK_FORMAT_B8G8R8A8_SINT";
++              case VK_FORMAT_B8G8R8A8_SRGB:                                                                   return "VK_FORMAT_B8G8R8A8_SRGB";
++              case VK_FORMAT_A8B8G8R8_UNORM_PACK32:                                                   return "VK_FORMAT_A8B8G8R8_UNORM_PACK32";
++              case VK_FORMAT_A8B8G8R8_SNORM_PACK32:                                                   return "VK_FORMAT_A8B8G8R8_SNORM_PACK32";
++              case VK_FORMAT_A8B8G8R8_USCALED_PACK32:                                                 return "VK_FORMAT_A8B8G8R8_USCALED_PACK32";
++              case VK_FORMAT_A8B8G8R8_SSCALED_PACK32:                                                 return "VK_FORMAT_A8B8G8R8_SSCALED_PACK32";
++              case VK_FORMAT_A8B8G8R8_UINT_PACK32:                                                    return "VK_FORMAT_A8B8G8R8_UINT_PACK32";
++              case VK_FORMAT_A8B8G8R8_SINT_PACK32:                                                    return "VK_FORMAT_A8B8G8R8_SINT_PACK32";
++              case VK_FORMAT_A8B8G8R8_SRGB_PACK32:                                                    return "VK_FORMAT_A8B8G8R8_SRGB_PACK32";
++              case VK_FORMAT_A2R10G10B10_UNORM_PACK32:                                                return "VK_FORMAT_A2R10G10B10_UNORM_PACK32";
++              case VK_FORMAT_A2R10G10B10_SNORM_PACK32:                                                return "VK_FORMAT_A2R10G10B10_SNORM_PACK32";
++              case VK_FORMAT_A2R10G10B10_USCALED_PACK32:                                              return "VK_FORMAT_A2R10G10B10_USCALED_PACK32";
++              case VK_FORMAT_A2R10G10B10_SSCALED_PACK32:                                              return "VK_FORMAT_A2R10G10B10_SSCALED_PACK32";
++              case VK_FORMAT_A2R10G10B10_UINT_PACK32:                                                 return "VK_FORMAT_A2R10G10B10_UINT_PACK32";
++              case VK_FORMAT_A2R10G10B10_SINT_PACK32:                                                 return "VK_FORMAT_A2R10G10B10_SINT_PACK32";
++              case VK_FORMAT_A2B10G10R10_UNORM_PACK32:                                                return "VK_FORMAT_A2B10G10R10_UNORM_PACK32";
++              case VK_FORMAT_A2B10G10R10_SNORM_PACK32:                                                return "VK_FORMAT_A2B10G10R10_SNORM_PACK32";
++              case VK_FORMAT_A2B10G10R10_USCALED_PACK32:                                              return "VK_FORMAT_A2B10G10R10_USCALED_PACK32";
++              case VK_FORMAT_A2B10G10R10_SSCALED_PACK32:                                              return "VK_FORMAT_A2B10G10R10_SSCALED_PACK32";
++              case VK_FORMAT_A2B10G10R10_UINT_PACK32:                                                 return "VK_FORMAT_A2B10G10R10_UINT_PACK32";
++              case VK_FORMAT_A2B10G10R10_SINT_PACK32:                                                 return "VK_FORMAT_A2B10G10R10_SINT_PACK32";
++              case VK_FORMAT_R16_UNORM:                                                                               return "VK_FORMAT_R16_UNORM";
++              case VK_FORMAT_R16_SNORM:                                                                               return "VK_FORMAT_R16_SNORM";
++              case VK_FORMAT_R16_USCALED:                                                                             return "VK_FORMAT_R16_USCALED";
++              case VK_FORMAT_R16_SSCALED:                                                                             return "VK_FORMAT_R16_SSCALED";
++              case VK_FORMAT_R16_UINT:                                                                                return "VK_FORMAT_R16_UINT";
++              case VK_FORMAT_R16_SINT:                                                                                return "VK_FORMAT_R16_SINT";
++              case VK_FORMAT_R16_SFLOAT:                                                                              return "VK_FORMAT_R16_SFLOAT";
++              case VK_FORMAT_R16G16_UNORM:                                                                    return "VK_FORMAT_R16G16_UNORM";
++              case VK_FORMAT_R16G16_SNORM:                                                                    return "VK_FORMAT_R16G16_SNORM";
++              case VK_FORMAT_R16G16_USCALED:                                                                  return "VK_FORMAT_R16G16_USCALED";
++              case VK_FORMAT_R16G16_SSCALED:                                                                  return "VK_FORMAT_R16G16_SSCALED";
++              case VK_FORMAT_R16G16_UINT:                                                                             return "VK_FORMAT_R16G16_UINT";
++              case VK_FORMAT_R16G16_SINT:                                                                             return "VK_FORMAT_R16G16_SINT";
++              case VK_FORMAT_R16G16_SFLOAT:                                                                   return "VK_FORMAT_R16G16_SFLOAT";
++              case VK_FORMAT_R16G16B16_UNORM:                                                                 return "VK_FORMAT_R16G16B16_UNORM";
++              case VK_FORMAT_R16G16B16_SNORM:                                                                 return "VK_FORMAT_R16G16B16_SNORM";
++              case VK_FORMAT_R16G16B16_USCALED:                                                               return "VK_FORMAT_R16G16B16_USCALED";
++              case VK_FORMAT_R16G16B16_SSCALED:                                                               return "VK_FORMAT_R16G16B16_SSCALED";
++              case VK_FORMAT_R16G16B16_UINT:                                                                  return "VK_FORMAT_R16G16B16_UINT";
++              case VK_FORMAT_R16G16B16_SINT:                                                                  return "VK_FORMAT_R16G16B16_SINT";
++              case VK_FORMAT_R16G16B16_SFLOAT:                                                                return "VK_FORMAT_R16G16B16_SFLOAT";
++              case VK_FORMAT_R16G16B16A16_UNORM:                                                              return "VK_FORMAT_R16G16B16A16_UNORM";
++              case VK_FORMAT_R16G16B16A16_SNORM:                                                              return "VK_FORMAT_R16G16B16A16_SNORM";
++              case VK_FORMAT_R16G16B16A16_USCALED:                                                    return "VK_FORMAT_R16G16B16A16_USCALED";
++              case VK_FORMAT_R16G16B16A16_SSCALED:                                                    return "VK_FORMAT_R16G16B16A16_SSCALED";
++              case VK_FORMAT_R16G16B16A16_UINT:                                                               return "VK_FORMAT_R16G16B16A16_UINT";
++              case VK_FORMAT_R16G16B16A16_SINT:                                                               return "VK_FORMAT_R16G16B16A16_SINT";
++              case VK_FORMAT_R16G16B16A16_SFLOAT:                                                             return "VK_FORMAT_R16G16B16A16_SFLOAT";
++              case VK_FORMAT_R32_UINT:                                                                                return "VK_FORMAT_R32_UINT";
++              case VK_FORMAT_R32_SINT:                                                                                return "VK_FORMAT_R32_SINT";
++              case VK_FORMAT_R32_SFLOAT:                                                                              return "VK_FORMAT_R32_SFLOAT";
++              case VK_FORMAT_R32G32_UINT:                                                                             return "VK_FORMAT_R32G32_UINT";
++              case VK_FORMAT_R32G32_SINT:                                                                             return "VK_FORMAT_R32G32_SINT";
++              case VK_FORMAT_R32G32_SFLOAT:                                                                   return "VK_FORMAT_R32G32_SFLOAT";
++              case VK_FORMAT_R32G32B32_UINT:                                                                  return "VK_FORMAT_R32G32B32_UINT";
++              case VK_FORMAT_R32G32B32_SINT:                                                                  return "VK_FORMAT_R32G32B32_SINT";
++              case VK_FORMAT_R32G32B32_SFLOAT:                                                                return "VK_FORMAT_R32G32B32_SFLOAT";
++              case VK_FORMAT_R32G32B32A32_UINT:                                                               return "VK_FORMAT_R32G32B32A32_UINT";
++              case VK_FORMAT_R32G32B32A32_SINT:                                                               return "VK_FORMAT_R32G32B32A32_SINT";
++              case VK_FORMAT_R32G32B32A32_SFLOAT:                                                             return "VK_FORMAT_R32G32B32A32_SFLOAT";
++              case VK_FORMAT_R64_UINT:                                                                                return "VK_FORMAT_R64_UINT";
++              case VK_FORMAT_R64_SINT:                                                                                return "VK_FORMAT_R64_SINT";
++              case VK_FORMAT_R64_SFLOAT:                                                                              return "VK_FORMAT_R64_SFLOAT";
++              case VK_FORMAT_R64G64_UINT:                                                                             return "VK_FORMAT_R64G64_UINT";
++              case VK_FORMAT_R64G64_SINT:                                                                             return "VK_FORMAT_R64G64_SINT";
++              case VK_FORMAT_R64G64_SFLOAT:                                                                   return "VK_FORMAT_R64G64_SFLOAT";
++              case VK_FORMAT_R64G64B64_UINT:                                                                  return "VK_FORMAT_R64G64B64_UINT";
++              case VK_FORMAT_R64G64B64_SINT:                                                                  return "VK_FORMAT_R64G64B64_SINT";
++              case VK_FORMAT_R64G64B64_SFLOAT:                                                                return "VK_FORMAT_R64G64B64_SFLOAT";
++              case VK_FORMAT_R64G64B64A64_UINT:                                                               return "VK_FORMAT_R64G64B64A64_UINT";
++              case VK_FORMAT_R64G64B64A64_SINT:                                                               return "VK_FORMAT_R64G64B64A64_SINT";
++              case VK_FORMAT_R64G64B64A64_SFLOAT:                                                             return "VK_FORMAT_R64G64B64A64_SFLOAT";
++              case VK_FORMAT_B10G11R11_UFLOAT_PACK32:                                                 return "VK_FORMAT_B10G11R11_UFLOAT_PACK32";
++              case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:                                                  return "VK_FORMAT_E5B9G9R9_UFLOAT_PACK32";
++              case VK_FORMAT_D16_UNORM:                                                                               return "VK_FORMAT_D16_UNORM";
++              case VK_FORMAT_X8_D24_UNORM_PACK32:                                                             return "VK_FORMAT_X8_D24_UNORM_PACK32";
++              case VK_FORMAT_D32_SFLOAT:                                                                              return "VK_FORMAT_D32_SFLOAT";
++              case VK_FORMAT_S8_UINT:                                                                                 return "VK_FORMAT_S8_UINT";
++              case VK_FORMAT_D16_UNORM_S8_UINT:                                                               return "VK_FORMAT_D16_UNORM_S8_UINT";
++              case VK_FORMAT_D24_UNORM_S8_UINT:                                                               return "VK_FORMAT_D24_UNORM_S8_UINT";
++              case VK_FORMAT_D32_SFLOAT_S8_UINT:                                                              return "VK_FORMAT_D32_SFLOAT_S8_UINT";
++              case VK_FORMAT_BC1_RGB_UNORM_BLOCK:                                                             return "VK_FORMAT_BC1_RGB_UNORM_BLOCK";
++              case VK_FORMAT_BC1_RGB_SRGB_BLOCK:                                                              return "VK_FORMAT_BC1_RGB_SRGB_BLOCK";
++              case VK_FORMAT_BC1_RGBA_UNORM_BLOCK:                                                    return "VK_FORMAT_BC1_RGBA_UNORM_BLOCK";
++              case VK_FORMAT_BC1_RGBA_SRGB_BLOCK:                                                             return "VK_FORMAT_BC1_RGBA_SRGB_BLOCK";
++              case VK_FORMAT_BC2_UNORM_BLOCK:                                                                 return "VK_FORMAT_BC2_UNORM_BLOCK";
++              case VK_FORMAT_BC2_SRGB_BLOCK:                                                                  return "VK_FORMAT_BC2_SRGB_BLOCK";
++              case VK_FORMAT_BC3_UNORM_BLOCK:                                                                 return "VK_FORMAT_BC3_UNORM_BLOCK";
++              case VK_FORMAT_BC3_SRGB_BLOCK:                                                                  return "VK_FORMAT_BC3_SRGB_BLOCK";
++              case VK_FORMAT_BC4_UNORM_BLOCK:                                                                 return "VK_FORMAT_BC4_UNORM_BLOCK";
++              case VK_FORMAT_BC4_SNORM_BLOCK:                                                                 return "VK_FORMAT_BC4_SNORM_BLOCK";
++              case VK_FORMAT_BC5_UNORM_BLOCK:                                                                 return "VK_FORMAT_BC5_UNORM_BLOCK";
++              case VK_FORMAT_BC5_SNORM_BLOCK:                                                                 return "VK_FORMAT_BC5_SNORM_BLOCK";
++              case VK_FORMAT_BC6H_UFLOAT_BLOCK:                                                               return "VK_FORMAT_BC6H_UFLOAT_BLOCK";
++              case VK_FORMAT_BC6H_SFLOAT_BLOCK:                                                               return "VK_FORMAT_BC6H_SFLOAT_BLOCK";
++              case VK_FORMAT_BC7_UNORM_BLOCK:                                                                 return "VK_FORMAT_BC7_UNORM_BLOCK";
++              case VK_FORMAT_BC7_SRGB_BLOCK:                                                                  return "VK_FORMAT_BC7_SRGB_BLOCK";
++              case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:                                                 return "VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK";
++              case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:                                                  return "VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK";
++              case VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:                                               return "VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK";
++              case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:                                                return "VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK";
++              case VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:                                               return "VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK";
++              case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:                                                return "VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK";
++              case VK_FORMAT_EAC_R11_UNORM_BLOCK:                                                             return "VK_FORMAT_EAC_R11_UNORM_BLOCK";
++              case VK_FORMAT_EAC_R11_SNORM_BLOCK:                                                             return "VK_FORMAT_EAC_R11_SNORM_BLOCK";
++              case VK_FORMAT_EAC_R11G11_UNORM_BLOCK:                                                  return "VK_FORMAT_EAC_R11G11_UNORM_BLOCK";
++              case VK_FORMAT_EAC_R11G11_SNORM_BLOCK:                                                  return "VK_FORMAT_EAC_R11G11_SNORM_BLOCK";
++              case VK_FORMAT_ASTC_4x4_UNORM_BLOCK:                                                    return "VK_FORMAT_ASTC_4x4_UNORM_BLOCK";
++              case VK_FORMAT_ASTC_4x4_SRGB_BLOCK:                                                             return "VK_FORMAT_ASTC_4x4_SRGB_BLOCK";
++              case VK_FORMAT_ASTC_5x4_UNORM_BLOCK:                                                    return "VK_FORMAT_ASTC_5x4_UNORM_BLOCK";
++              case VK_FORMAT_ASTC_5x4_SRGB_BLOCK:                                                             return "VK_FORMAT_ASTC_5x4_SRGB_BLOCK";
++              case VK_FORMAT_ASTC_5x5_UNORM_BLOCK:                                                    return "VK_FORMAT_ASTC_5x5_UNORM_BLOCK";
++              case VK_FORMAT_ASTC_5x5_SRGB_BLOCK:                                                             return "VK_FORMAT_ASTC_5x5_SRGB_BLOCK";
++              case VK_FORMAT_ASTC_6x5_UNORM_BLOCK:                                                    return "VK_FORMAT_ASTC_6x5_UNORM_BLOCK";
++              case VK_FORMAT_ASTC_6x5_SRGB_BLOCK:                                                             return "VK_FORMAT_ASTC_6x5_SRGB_BLOCK";
++              case VK_FORMAT_ASTC_6x6_UNORM_BLOCK:                                                    return "VK_FORMAT_ASTC_6x6_UNORM_BLOCK";
++              case VK_FORMAT_ASTC_6x6_SRGB_BLOCK:                                                             return "VK_FORMAT_ASTC_6x6_SRGB_BLOCK";
++              case VK_FORMAT_ASTC_8x5_UNORM_BLOCK:                                                    return "VK_FORMAT_ASTC_8x5_UNORM_BLOCK";
++              case VK_FORMAT_ASTC_8x5_SRGB_BLOCK:                                                             return "VK_FORMAT_ASTC_8x5_SRGB_BLOCK";
++              case VK_FORMAT_ASTC_8x6_UNORM_BLOCK:                                                    return "VK_FORMAT_ASTC_8x6_UNORM_BLOCK";
++              case VK_FORMAT_ASTC_8x6_SRGB_BLOCK:                                                             return "VK_FORMAT_ASTC_8x6_SRGB_BLOCK";
++              case VK_FORMAT_ASTC_8x8_UNORM_BLOCK:                                                    return "VK_FORMAT_ASTC_8x8_UNORM_BLOCK";
++              case VK_FORMAT_ASTC_8x8_SRGB_BLOCK:                                                             return "VK_FORMAT_ASTC_8x8_SRGB_BLOCK";
++              case VK_FORMAT_ASTC_10x5_UNORM_BLOCK:                                                   return "VK_FORMAT_ASTC_10x5_UNORM_BLOCK";
++              case VK_FORMAT_ASTC_10x5_SRGB_BLOCK:                                                    return "VK_FORMAT_ASTC_10x5_SRGB_BLOCK";
++              case VK_FORMAT_ASTC_10x6_UNORM_BLOCK:                                                   return "VK_FORMAT_ASTC_10x6_UNORM_BLOCK";
++              case VK_FORMAT_ASTC_10x6_SRGB_BLOCK:                                                    return "VK_FORMAT_ASTC_10x6_SRGB_BLOCK";
++              case VK_FORMAT_ASTC_10x8_UNORM_BLOCK:                                                   return "VK_FORMAT_ASTC_10x8_UNORM_BLOCK";
++              case VK_FORMAT_ASTC_10x8_SRGB_BLOCK:                                                    return "VK_FORMAT_ASTC_10x8_SRGB_BLOCK";
++              case VK_FORMAT_ASTC_10x10_UNORM_BLOCK:                                                  return "VK_FORMAT_ASTC_10x10_UNORM_BLOCK";
++              case VK_FORMAT_ASTC_10x10_SRGB_BLOCK:                                                   return "VK_FORMAT_ASTC_10x10_SRGB_BLOCK";
++              case VK_FORMAT_ASTC_12x10_UNORM_BLOCK:                                                  return "VK_FORMAT_ASTC_12x10_UNORM_BLOCK";
++              case VK_FORMAT_ASTC_12x10_SRGB_BLOCK:                                                   return "VK_FORMAT_ASTC_12x10_SRGB_BLOCK";
++              case VK_FORMAT_ASTC_12x12_UNORM_BLOCK:                                                  return "VK_FORMAT_ASTC_12x12_UNORM_BLOCK";
++              case VK_FORMAT_ASTC_12x12_SRGB_BLOCK:                                                   return "VK_FORMAT_ASTC_12x12_SRGB_BLOCK";
++              case VK_FORMAT_G8B8G8R8_422_UNORM:                                                              return "VK_FORMAT_G8B8G8R8_422_UNORM";
++              case VK_FORMAT_B8G8R8G8_422_UNORM:                                                              return "VK_FORMAT_B8G8R8G8_422_UNORM";
++              case VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM:                                               return "VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM";
++              case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:                                                return "VK_FORMAT_G8_B8R8_2PLANE_420_UNORM";
++              case VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM:                                               return "VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM";
++              case VK_FORMAT_G8_B8R8_2PLANE_422_UNORM:                                                return "VK_FORMAT_G8_B8R8_2PLANE_422_UNORM";
++              case VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM:                                               return "VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM";
++              case VK_FORMAT_R10X6_UNORM_PACK16:                                                              return "VK_FORMAT_R10X6_UNORM_PACK16";
++              case VK_FORMAT_R10X6G10X6_UNORM_2PACK16:                                                return "VK_FORMAT_R10X6G10X6_UNORM_2PACK16";
++              case VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16:                              return "VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16";
++              case VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16:                  return "VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16";
++              case VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16:                  return "VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16";
++              case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16:              return "VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16";
++              case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16:               return "VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16";
++              case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16:              return "VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16";
++              case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16:               return "VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16";
++              case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16:              return "VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16";
++              case VK_FORMAT_R12X4_UNORM_PACK16:                                                              return "VK_FORMAT_R12X4_UNORM_PACK16";
++              case VK_FORMAT_R12X4G12X4_UNORM_2PACK16:                                                return "VK_FORMAT_R12X4G12X4_UNORM_2PACK16";
++              case VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16:                              return "VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16";
++              case VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16:                  return "VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16";
++              case VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16:                  return "VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16";
++              case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16:              return "VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16";
++              case VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16:               return "VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16";
++              case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16:              return "VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16";
++              case VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16:               return "VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16";
++              case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16:              return "VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16";
++              case VK_FORMAT_G16B16G16R16_422_UNORM:                                                  return "VK_FORMAT_G16B16G16R16_422_UNORM";
++              case VK_FORMAT_B16G16R16G16_422_UNORM:                                                  return "VK_FORMAT_B16G16R16G16_422_UNORM";
++              case VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM:                                    return "VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM";
++              case VK_FORMAT_G16_B16R16_2PLANE_420_UNORM:                                             return "VK_FORMAT_G16_B16R16_2PLANE_420_UNORM";
++              case VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM:                                    return "VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM";
++              case VK_FORMAT_G16_B16R16_2PLANE_422_UNORM:                                             return "VK_FORMAT_G16_B16R16_2PLANE_422_UNORM";
++              case VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM:                                    return "VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM";
++              case VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT:                                               return "VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT";
++              case VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT:                                               return "VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT";
++              case VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT:                                               return "VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT";
++              case VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT:                                               return "VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT";
++              case VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT:                                               return "VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT";
++              case VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT:                                               return "VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT";
++              case VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT:                                               return "VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT";
++              case VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT:                                               return "VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT";
++              case VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT:                                              return "VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT";
++              case VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT:                                              return "VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT";
++              case VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT:                                              return "VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT";
++              case VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT:                                             return "VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT";
++              case VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT:                                             return "VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT";
++              case VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT:                                             return "VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT";
++              case VK_FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT:                                    return "VK_FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT";
++              case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT:   return "VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT";
++              case VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT:   return "VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT";
++              case VK_FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT:                                 return "VK_FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT";
++              case VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT:                                               return "VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT";
++              case VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT:                                               return "VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT";
++              case VK_FORMAT_MAX_ENUM:                                                                                return "VK_FORMAT_MAX_ENUM";
++              default:                                                                                                                return DE_NULL;
 +      }
 +}
 +
 +const char* getImageTilingName (VkImageTiling value)
 +{
 +      switch (value)
 +      {
 +              case VK_IMAGE_TILING_OPTIMAL:                                   return "VK_IMAGE_TILING_OPTIMAL";
 +              case VK_IMAGE_TILING_LINEAR:                                    return "VK_IMAGE_TILING_LINEAR";
 +              case VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT:   return "VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT";
 +              case VK_IMAGE_TILING_MAX_ENUM:                                  return "VK_IMAGE_TILING_MAX_ENUM";
 +              default:                                                                                return DE_NULL;
 +      }
 +}
 +
 +const char* getImageTypeName (VkImageType value)
 +{
 +      switch (value)
 +      {
 +              case VK_IMAGE_TYPE_1D:                  return "VK_IMAGE_TYPE_1D";
 +              case VK_IMAGE_TYPE_2D:                  return "VK_IMAGE_TYPE_2D";
 +              case VK_IMAGE_TYPE_3D:                  return "VK_IMAGE_TYPE_3D";
 +              case VK_IMAGE_TYPE_MAX_ENUM:    return "VK_IMAGE_TYPE_MAX_ENUM";
 +              default:                                                return DE_NULL;
 +      }
 +}
 +
 +const char* getPhysicalDeviceTypeName (VkPhysicalDeviceType value)
 +{
 +      switch (value)
 +      {
 +              case VK_PHYSICAL_DEVICE_TYPE_OTHER:                             return "VK_PHYSICAL_DEVICE_TYPE_OTHER";
 +              case VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU:    return "VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU";
 +              case VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU:              return "VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU";
 +              case VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU:               return "VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU";
 +              case VK_PHYSICAL_DEVICE_TYPE_CPU:                               return "VK_PHYSICAL_DEVICE_TYPE_CPU";
 +              case VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM:                  return "VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM";
 +              default:                                                                                return DE_NULL;
 +      }
 +}
 +
 +const char* getQueryTypeName (VkQueryType value)
 +{
 +      switch (value)
 +      {
- const char* getFaultLevelName (VkFaultLevel value)
- {
-       switch (value)
-       {
-               case VK_FAULT_LEVEL_UNASSIGNED:         return "VK_FAULT_LEVEL_UNASSIGNED";
-               case VK_FAULT_LEVEL_CRITICAL:           return "VK_FAULT_LEVEL_CRITICAL";
-               case VK_FAULT_LEVEL_RECOVERABLE:        return "VK_FAULT_LEVEL_RECOVERABLE";
-               case VK_FAULT_LEVEL_WARNING:            return "VK_FAULT_LEVEL_WARNING";
-               case VK_FAULT_LEVEL_MAX_ENUM:           return "VK_FAULT_LEVEL_MAX_ENUM";
-               default:                                                        return DE_NULL;
-       }
- }
- const char* getFaultTypeName (VkFaultType value)
- {
-       switch (value)
-       {
-               case VK_FAULT_TYPE_INVALID:                             return "VK_FAULT_TYPE_INVALID";
-               case VK_FAULT_TYPE_UNASSIGNED:                  return "VK_FAULT_TYPE_UNASSIGNED";
-               case VK_FAULT_TYPE_IMPLEMENTATION:              return "VK_FAULT_TYPE_IMPLEMENTATION";
-               case VK_FAULT_TYPE_SYSTEM:                              return "VK_FAULT_TYPE_SYSTEM";
-               case VK_FAULT_TYPE_PHYSICAL_DEVICE:             return "VK_FAULT_TYPE_PHYSICAL_DEVICE";
-               case VK_FAULT_TYPE_COMMAND_BUFFER_FULL: return "VK_FAULT_TYPE_COMMAND_BUFFER_FULL";
-               case VK_FAULT_TYPE_INVALID_API_USAGE:   return "VK_FAULT_TYPE_INVALID_API_USAGE";
-               case VK_FAULT_TYPE_MAX_ENUM:                    return "VK_FAULT_TYPE_MAX_ENUM";
-               default:                                                                return DE_NULL;
-       }
- }
- const char* getFaultQueryBehaviorName (VkFaultQueryBehavior value)
- {
-       switch (value)
-       {
-               case VK_FAULT_QUERY_BEHAVIOR_GET_AND_CLEAR_ALL_FAULTS:  return "VK_FAULT_QUERY_BEHAVIOR_GET_AND_CLEAR_ALL_FAULTS";
-               case VK_FAULT_QUERY_BEHAVIOR_MAX_ENUM:                                  return "VK_FAULT_QUERY_BEHAVIOR_MAX_ENUM";
-               default:                                                                                                return DE_NULL;
-       }
- }
- const char* getPipelineMatchControlName (VkPipelineMatchControl value)
- {
-       switch (value)
-       {
-               case VK_PIPELINE_MATCH_CONTROL_APPLICATION_UUID_EXACT_MATCH:    return "VK_PIPELINE_MATCH_CONTROL_APPLICATION_UUID_EXACT_MATCH";
-               case VK_PIPELINE_MATCH_CONTROL_MAX_ENUM:                                                return "VK_PIPELINE_MATCH_CONTROL_MAX_ENUM";
-               default:                                                                                                                return DE_NULL;
-       }
- }
++              case VK_QUERY_TYPE_OCCLUSION:                           return "VK_QUERY_TYPE_OCCLUSION";
++              case VK_QUERY_TYPE_PIPELINE_STATISTICS:         return "VK_QUERY_TYPE_PIPELINE_STATISTICS";
++              case VK_QUERY_TYPE_TIMESTAMP:                           return "VK_QUERY_TYPE_TIMESTAMP";
++              case VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR:       return "VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR";
++              case VK_QUERY_TYPE_MAX_ENUM:                            return "VK_QUERY_TYPE_MAX_ENUM";
++              default:                                                                        return DE_NULL;
 +      }
 +}
 +
 +const char* getSharingModeName (VkSharingMode value)
 +{
 +      switch (value)
 +      {
 +              case VK_SHARING_MODE_EXCLUSIVE:         return "VK_SHARING_MODE_EXCLUSIVE";
 +              case VK_SHARING_MODE_CONCURRENT:        return "VK_SHARING_MODE_CONCURRENT";
 +              case VK_SHARING_MODE_MAX_ENUM:          return "VK_SHARING_MODE_MAX_ENUM";
 +              default:                                                        return DE_NULL;
 +      }
 +}
 +
 +const char* getComponentSwizzleName (VkComponentSwizzle value)
 +{
 +      switch (value)
 +      {
 +              case VK_COMPONENT_SWIZZLE_IDENTITY:     return "VK_COMPONENT_SWIZZLE_IDENTITY";
 +              case VK_COMPONENT_SWIZZLE_ZERO:         return "VK_COMPONENT_SWIZZLE_ZERO";
 +              case VK_COMPONENT_SWIZZLE_ONE:          return "VK_COMPONENT_SWIZZLE_ONE";
 +              case VK_COMPONENT_SWIZZLE_R:            return "VK_COMPONENT_SWIZZLE_R";
 +              case VK_COMPONENT_SWIZZLE_G:            return "VK_COMPONENT_SWIZZLE_G";
 +              case VK_COMPONENT_SWIZZLE_B:            return "VK_COMPONENT_SWIZZLE_B";
 +              case VK_COMPONENT_SWIZZLE_A:            return "VK_COMPONENT_SWIZZLE_A";
 +              case VK_COMPONENT_SWIZZLE_MAX_ENUM:     return "VK_COMPONENT_SWIZZLE_MAX_ENUM";
 +              default:                                                        return DE_NULL;
 +      }
 +}
 +
 +const char* getImageViewTypeName (VkImageViewType value)
 +{
 +      switch (value)
 +      {
 +              case VK_IMAGE_VIEW_TYPE_1D:                     return "VK_IMAGE_VIEW_TYPE_1D";
 +              case VK_IMAGE_VIEW_TYPE_2D:                     return "VK_IMAGE_VIEW_TYPE_2D";
 +              case VK_IMAGE_VIEW_TYPE_3D:                     return "VK_IMAGE_VIEW_TYPE_3D";
 +              case VK_IMAGE_VIEW_TYPE_CUBE:           return "VK_IMAGE_VIEW_TYPE_CUBE";
 +              case VK_IMAGE_VIEW_TYPE_1D_ARRAY:       return "VK_IMAGE_VIEW_TYPE_1D_ARRAY";
 +              case VK_IMAGE_VIEW_TYPE_2D_ARRAY:       return "VK_IMAGE_VIEW_TYPE_2D_ARRAY";
 +              case VK_IMAGE_VIEW_TYPE_CUBE_ARRAY:     return "VK_IMAGE_VIEW_TYPE_CUBE_ARRAY";
 +              case VK_IMAGE_VIEW_TYPE_MAX_ENUM:       return "VK_IMAGE_VIEW_TYPE_MAX_ENUM";
 +              default:                                                        return DE_NULL;
 +      }
 +}
 +
 +const char* getBlendFactorName (VkBlendFactor value)
 +{
 +      switch (value)
 +      {
 +              case VK_BLEND_FACTOR_ZERO:                                              return "VK_BLEND_FACTOR_ZERO";
 +              case VK_BLEND_FACTOR_ONE:                                               return "VK_BLEND_FACTOR_ONE";
 +              case VK_BLEND_FACTOR_SRC_COLOR:                                 return "VK_BLEND_FACTOR_SRC_COLOR";
 +              case VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR:               return "VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR";
 +              case VK_BLEND_FACTOR_DST_COLOR:                                 return "VK_BLEND_FACTOR_DST_COLOR";
 +              case VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR:               return "VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR";
 +              case VK_BLEND_FACTOR_SRC_ALPHA:                                 return "VK_BLEND_FACTOR_SRC_ALPHA";
 +              case VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA:               return "VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA";
 +              case VK_BLEND_FACTOR_DST_ALPHA:                                 return "VK_BLEND_FACTOR_DST_ALPHA";
 +              case VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA:               return "VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA";
 +              case VK_BLEND_FACTOR_CONSTANT_COLOR:                    return "VK_BLEND_FACTOR_CONSTANT_COLOR";
 +              case VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR:  return "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR";
 +              case VK_BLEND_FACTOR_CONSTANT_ALPHA:                    return "VK_BLEND_FACTOR_CONSTANT_ALPHA";
 +              case VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA:  return "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA";
 +              case VK_BLEND_FACTOR_SRC_ALPHA_SATURATE:                return "VK_BLEND_FACTOR_SRC_ALPHA_SATURATE";
 +              case VK_BLEND_FACTOR_SRC1_COLOR:                                return "VK_BLEND_FACTOR_SRC1_COLOR";
 +              case VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR:              return "VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR";
 +              case VK_BLEND_FACTOR_SRC1_ALPHA:                                return "VK_BLEND_FACTOR_SRC1_ALPHA";
 +              case VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA:              return "VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA";
 +              case VK_BLEND_FACTOR_MAX_ENUM:                                  return "VK_BLEND_FACTOR_MAX_ENUM";
 +              default:                                                                                return DE_NULL;
 +      }
 +}
 +
 +const char* getBlendOpName (VkBlendOp value)
 +{
 +      switch (value)
 +      {
 +              case VK_BLEND_OP_ADD:                                           return "VK_BLEND_OP_ADD";
 +              case VK_BLEND_OP_SUBTRACT:                                      return "VK_BLEND_OP_SUBTRACT";
 +              case VK_BLEND_OP_REVERSE_SUBTRACT:                      return "VK_BLEND_OP_REVERSE_SUBTRACT";
 +              case VK_BLEND_OP_MIN:                                           return "VK_BLEND_OP_MIN";
 +              case VK_BLEND_OP_MAX:                                           return "VK_BLEND_OP_MAX";
 +              case VK_BLEND_OP_ZERO_EXT:                                      return "VK_BLEND_OP_ZERO_EXT";
 +              case VK_BLEND_OP_SRC_EXT:                                       return "VK_BLEND_OP_SRC_EXT";
 +              case VK_BLEND_OP_DST_EXT:                                       return "VK_BLEND_OP_DST_EXT";
 +              case VK_BLEND_OP_SRC_OVER_EXT:                          return "VK_BLEND_OP_SRC_OVER_EXT";
 +              case VK_BLEND_OP_DST_OVER_EXT:                          return "VK_BLEND_OP_DST_OVER_EXT";
 +              case VK_BLEND_OP_SRC_IN_EXT:                            return "VK_BLEND_OP_SRC_IN_EXT";
 +              case VK_BLEND_OP_DST_IN_EXT:                            return "VK_BLEND_OP_DST_IN_EXT";
 +              case VK_BLEND_OP_SRC_OUT_EXT:                           return "VK_BLEND_OP_SRC_OUT_EXT";
 +              case VK_BLEND_OP_DST_OUT_EXT:                           return "VK_BLEND_OP_DST_OUT_EXT";
 +              case VK_BLEND_OP_SRC_ATOP_EXT:                          return "VK_BLEND_OP_SRC_ATOP_EXT";
 +              case VK_BLEND_OP_DST_ATOP_EXT:                          return "VK_BLEND_OP_DST_ATOP_EXT";
 +              case VK_BLEND_OP_XOR_EXT:                                       return "VK_BLEND_OP_XOR_EXT";
 +              case VK_BLEND_OP_MULTIPLY_EXT:                          return "VK_BLEND_OP_MULTIPLY_EXT";
 +              case VK_BLEND_OP_SCREEN_EXT:                            return "VK_BLEND_OP_SCREEN_EXT";
 +              case VK_BLEND_OP_OVERLAY_EXT:                           return "VK_BLEND_OP_OVERLAY_EXT";
 +              case VK_BLEND_OP_DARKEN_EXT:                            return "VK_BLEND_OP_DARKEN_EXT";
 +              case VK_BLEND_OP_LIGHTEN_EXT:                           return "VK_BLEND_OP_LIGHTEN_EXT";
 +              case VK_BLEND_OP_COLORDODGE_EXT:                        return "VK_BLEND_OP_COLORDODGE_EXT";
 +              case VK_BLEND_OP_COLORBURN_EXT:                         return "VK_BLEND_OP_COLORBURN_EXT";
 +              case VK_BLEND_OP_HARDLIGHT_EXT:                         return "VK_BLEND_OP_HARDLIGHT_EXT";
 +              case VK_BLEND_OP_SOFTLIGHT_EXT:                         return "VK_BLEND_OP_SOFTLIGHT_EXT";
 +              case VK_BLEND_OP_DIFFERENCE_EXT:                        return "VK_BLEND_OP_DIFFERENCE_EXT";
 +              case VK_BLEND_OP_EXCLUSION_EXT:                         return "VK_BLEND_OP_EXCLUSION_EXT";
 +              case VK_BLEND_OP_INVERT_EXT:                            return "VK_BLEND_OP_INVERT_EXT";
 +              case VK_BLEND_OP_INVERT_RGB_EXT:                        return "VK_BLEND_OP_INVERT_RGB_EXT";
 +              case VK_BLEND_OP_LINEARDODGE_EXT:                       return "VK_BLEND_OP_LINEARDODGE_EXT";
 +              case VK_BLEND_OP_LINEARBURN_EXT:                        return "VK_BLEND_OP_LINEARBURN_EXT";
 +              case VK_BLEND_OP_VIVIDLIGHT_EXT:                        return "VK_BLEND_OP_VIVIDLIGHT_EXT";
 +              case VK_BLEND_OP_LINEARLIGHT_EXT:                       return "VK_BLEND_OP_LINEARLIGHT_EXT";
 +              case VK_BLEND_OP_PINLIGHT_EXT:                          return "VK_BLEND_OP_PINLIGHT_EXT";
 +              case VK_BLEND_OP_HARDMIX_EXT:                           return "VK_BLEND_OP_HARDMIX_EXT";
 +              case VK_BLEND_OP_HSL_HUE_EXT:                           return "VK_BLEND_OP_HSL_HUE_EXT";
 +              case VK_BLEND_OP_HSL_SATURATION_EXT:            return "VK_BLEND_OP_HSL_SATURATION_EXT";
 +              case VK_BLEND_OP_HSL_COLOR_EXT:                         return "VK_BLEND_OP_HSL_COLOR_EXT";
 +              case VK_BLEND_OP_HSL_LUMINOSITY_EXT:            return "VK_BLEND_OP_HSL_LUMINOSITY_EXT";
 +              case VK_BLEND_OP_PLUS_EXT:                                      return "VK_BLEND_OP_PLUS_EXT";
 +              case VK_BLEND_OP_PLUS_CLAMPED_EXT:                      return "VK_BLEND_OP_PLUS_CLAMPED_EXT";
 +              case VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT:        return "VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT";
 +              case VK_BLEND_OP_PLUS_DARKER_EXT:                       return "VK_BLEND_OP_PLUS_DARKER_EXT";
 +              case VK_BLEND_OP_MINUS_EXT:                                     return "VK_BLEND_OP_MINUS_EXT";
 +              case VK_BLEND_OP_MINUS_CLAMPED_EXT:                     return "VK_BLEND_OP_MINUS_CLAMPED_EXT";
 +              case VK_BLEND_OP_CONTRAST_EXT:                          return "VK_BLEND_OP_CONTRAST_EXT";
 +              case VK_BLEND_OP_INVERT_OVG_EXT:                        return "VK_BLEND_OP_INVERT_OVG_EXT";
 +              case VK_BLEND_OP_RED_EXT:                                       return "VK_BLEND_OP_RED_EXT";
 +              case VK_BLEND_OP_GREEN_EXT:                                     return "VK_BLEND_OP_GREEN_EXT";
 +              case VK_BLEND_OP_BLUE_EXT:                                      return "VK_BLEND_OP_BLUE_EXT";
 +              case VK_BLEND_OP_MAX_ENUM:                                      return "VK_BLEND_OP_MAX_ENUM";
 +              default:                                                                        return DE_NULL;
 +      }
 +}
 +
 +const char* getCompareOpName (VkCompareOp value)
 +{
 +      switch (value)
 +      {
 +              case VK_COMPARE_OP_NEVER:                               return "VK_COMPARE_OP_NEVER";
 +              case VK_COMPARE_OP_LESS:                                return "VK_COMPARE_OP_LESS";
 +              case VK_COMPARE_OP_EQUAL:                               return "VK_COMPARE_OP_EQUAL";
 +              case VK_COMPARE_OP_LESS_OR_EQUAL:               return "VK_COMPARE_OP_LESS_OR_EQUAL";
 +              case VK_COMPARE_OP_GREATER:                             return "VK_COMPARE_OP_GREATER";
 +              case VK_COMPARE_OP_NOT_EQUAL:                   return "VK_COMPARE_OP_NOT_EQUAL";
 +              case VK_COMPARE_OP_GREATER_OR_EQUAL:    return "VK_COMPARE_OP_GREATER_OR_EQUAL";
 +              case VK_COMPARE_OP_ALWAYS:                              return "VK_COMPARE_OP_ALWAYS";
 +              case VK_COMPARE_OP_MAX_ENUM:                    return "VK_COMPARE_OP_MAX_ENUM";
 +              default:                                                                return DE_NULL;
 +      }
 +}
 +
 +const char* getDynamicStateName (VkDynamicState value)
 +{
 +      switch (value)
 +      {
 +              case VK_DYNAMIC_STATE_VIEWPORT:                                                 return "VK_DYNAMIC_STATE_VIEWPORT";
 +              case VK_DYNAMIC_STATE_SCISSOR:                                                  return "VK_DYNAMIC_STATE_SCISSOR";
 +              case VK_DYNAMIC_STATE_LINE_WIDTH:                                               return "VK_DYNAMIC_STATE_LINE_WIDTH";
 +              case VK_DYNAMIC_STATE_DEPTH_BIAS:                                               return "VK_DYNAMIC_STATE_DEPTH_BIAS";
 +              case VK_DYNAMIC_STATE_BLEND_CONSTANTS:                                  return "VK_DYNAMIC_STATE_BLEND_CONSTANTS";
 +              case VK_DYNAMIC_STATE_DEPTH_BOUNDS:                                             return "VK_DYNAMIC_STATE_DEPTH_BOUNDS";
 +              case VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK:                             return "VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK";
 +              case VK_DYNAMIC_STATE_STENCIL_WRITE_MASK:                               return "VK_DYNAMIC_STATE_STENCIL_WRITE_MASK";
 +              case VK_DYNAMIC_STATE_STENCIL_REFERENCE:                                return "VK_DYNAMIC_STATE_STENCIL_REFERENCE";
 +              case VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT:                    return "VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT";
 +              case VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT:                             return "VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT";
 +              case VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR:                return "VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR";
 +              case VK_DYNAMIC_STATE_LINE_STIPPLE_EXT:                                 return "VK_DYNAMIC_STATE_LINE_STIPPLE_EXT";
 +              case VK_DYNAMIC_STATE_CULL_MODE_EXT:                                    return "VK_DYNAMIC_STATE_CULL_MODE_EXT";
 +              case VK_DYNAMIC_STATE_FRONT_FACE_EXT:                                   return "VK_DYNAMIC_STATE_FRONT_FACE_EXT";
 +              case VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT:                   return "VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT";
 +              case VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT:                  return "VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT";
 +              case VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT:                   return "VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT";
 +              case VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT:  return "VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT";
 +              case VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT:                    return "VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT";
 +              case VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT:                   return "VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT";
 +              case VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT:                             return "VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT";
 +              case VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT:             return "VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT";
 +              case VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT:                  return "VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT";
 +              case VK_DYNAMIC_STATE_STENCIL_OP_EXT:                                   return "VK_DYNAMIC_STATE_STENCIL_OP_EXT";
++              case VK_DYNAMIC_STATE_VERTEX_INPUT_EXT:                                 return "VK_DYNAMIC_STATE_VERTEX_INPUT_EXT";
++              case VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT:                 return "VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT";
++              case VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT:    return "VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT";
++              case VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT:                    return "VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT";
++              case VK_DYNAMIC_STATE_LOGIC_OP_EXT:                                             return "VK_DYNAMIC_STATE_LOGIC_OP_EXT";
++              case VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT:             return "VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT";
++              case VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT:                   return "VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT";
 +              case VK_DYNAMIC_STATE_MAX_ENUM:                                                 return "VK_DYNAMIC_STATE_MAX_ENUM";
 +              default:                                                                                                return DE_NULL;
 +      }
 +}
 +
 +const char* getFrontFaceName (VkFrontFace value)
 +{
 +      switch (value)
 +      {
 +              case VK_FRONT_FACE_COUNTER_CLOCKWISE:   return "VK_FRONT_FACE_COUNTER_CLOCKWISE";
 +              case VK_FRONT_FACE_CLOCKWISE:                   return "VK_FRONT_FACE_CLOCKWISE";
 +              case VK_FRONT_FACE_MAX_ENUM:                    return "VK_FRONT_FACE_MAX_ENUM";
 +              default:                                                                return DE_NULL;
 +      }
 +}
 +
 +const char* getVertexInputRateName (VkVertexInputRate value)
 +{
 +      switch (value)
 +      {
 +              case VK_VERTEX_INPUT_RATE_VERTEX:       return "VK_VERTEX_INPUT_RATE_VERTEX";
 +              case VK_VERTEX_INPUT_RATE_INSTANCE:     return "VK_VERTEX_INPUT_RATE_INSTANCE";
 +              case VK_VERTEX_INPUT_RATE_MAX_ENUM:     return "VK_VERTEX_INPUT_RATE_MAX_ENUM";
 +              default:                                                        return DE_NULL;
 +      }
 +}
 +
 +const char* getPrimitiveTopologyName (VkPrimitiveTopology value)
 +{
 +      switch (value)
 +      {
 +              case VK_PRIMITIVE_TOPOLOGY_POINT_LIST:                                          return "VK_PRIMITIVE_TOPOLOGY_POINT_LIST";
 +              case VK_PRIMITIVE_TOPOLOGY_LINE_LIST:                                           return "VK_PRIMITIVE_TOPOLOGY_LINE_LIST";
 +              case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP:                                          return "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP";
 +              case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST:                                       return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST";
 +              case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP:                                      return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP";
 +              case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN:                                        return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN";
 +              case VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY:            return "VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY";
 +              case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY:           return "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY";
 +              case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY:        return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY";
 +              case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY:       return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY";
 +              case VK_PRIMITIVE_TOPOLOGY_PATCH_LIST:                                          return "VK_PRIMITIVE_TOPOLOGY_PATCH_LIST";
 +              case VK_PRIMITIVE_TOPOLOGY_MAX_ENUM:                                            return "VK_PRIMITIVE_TOPOLOGY_MAX_ENUM";
 +              default:                                                                                                        return DE_NULL;
 +      }
 +}
 +
 +const char* getPolygonModeName (VkPolygonMode value)
 +{
 +      switch (value)
 +      {
 +              case VK_POLYGON_MODE_FILL:              return "VK_POLYGON_MODE_FILL";
 +              case VK_POLYGON_MODE_LINE:              return "VK_POLYGON_MODE_LINE";
 +              case VK_POLYGON_MODE_POINT:             return "VK_POLYGON_MODE_POINT";
 +              case VK_POLYGON_MODE_MAX_ENUM:  return "VK_POLYGON_MODE_MAX_ENUM";
 +              default:                                                return DE_NULL;
 +      }
 +}
 +
 +const char* getStencilOpName (VkStencilOp value)
 +{
 +      switch (value)
 +      {
 +              case VK_STENCIL_OP_KEEP:                                return "VK_STENCIL_OP_KEEP";
 +              case VK_STENCIL_OP_ZERO:                                return "VK_STENCIL_OP_ZERO";
 +              case VK_STENCIL_OP_REPLACE:                             return "VK_STENCIL_OP_REPLACE";
 +              case VK_STENCIL_OP_INCREMENT_AND_CLAMP: return "VK_STENCIL_OP_INCREMENT_AND_CLAMP";
 +              case VK_STENCIL_OP_DECREMENT_AND_CLAMP: return "VK_STENCIL_OP_DECREMENT_AND_CLAMP";
 +              case VK_STENCIL_OP_INVERT:                              return "VK_STENCIL_OP_INVERT";
 +              case VK_STENCIL_OP_INCREMENT_AND_WRAP:  return "VK_STENCIL_OP_INCREMENT_AND_WRAP";
 +              case VK_STENCIL_OP_DECREMENT_AND_WRAP:  return "VK_STENCIL_OP_DECREMENT_AND_WRAP";
 +              case VK_STENCIL_OP_MAX_ENUM:                    return "VK_STENCIL_OP_MAX_ENUM";
 +              default:                                                                return DE_NULL;
 +      }
 +}
 +
 +const char* getLogicOpName (VkLogicOp value)
 +{
 +      switch (value)
 +      {
 +              case VK_LOGIC_OP_CLEAR:                 return "VK_LOGIC_OP_CLEAR";
 +              case VK_LOGIC_OP_AND:                   return "VK_LOGIC_OP_AND";
 +              case VK_LOGIC_OP_AND_REVERSE:   return "VK_LOGIC_OP_AND_REVERSE";
 +              case VK_LOGIC_OP_COPY:                  return "VK_LOGIC_OP_COPY";
 +              case VK_LOGIC_OP_AND_INVERTED:  return "VK_LOGIC_OP_AND_INVERTED";
 +              case VK_LOGIC_OP_NO_OP:                 return "VK_LOGIC_OP_NO_OP";
 +              case VK_LOGIC_OP_XOR:                   return "VK_LOGIC_OP_XOR";
 +              case VK_LOGIC_OP_OR:                    return "VK_LOGIC_OP_OR";
 +              case VK_LOGIC_OP_NOR:                   return "VK_LOGIC_OP_NOR";
 +              case VK_LOGIC_OP_EQUIVALENT:    return "VK_LOGIC_OP_EQUIVALENT";
 +              case VK_LOGIC_OP_INVERT:                return "VK_LOGIC_OP_INVERT";
 +              case VK_LOGIC_OP_OR_REVERSE:    return "VK_LOGIC_OP_OR_REVERSE";
 +              case VK_LOGIC_OP_COPY_INVERTED: return "VK_LOGIC_OP_COPY_INVERTED";
 +              case VK_LOGIC_OP_OR_INVERTED:   return "VK_LOGIC_OP_OR_INVERTED";
 +              case VK_LOGIC_OP_NAND:                  return "VK_LOGIC_OP_NAND";
 +              case VK_LOGIC_OP_SET:                   return "VK_LOGIC_OP_SET";
 +              case VK_LOGIC_OP_MAX_ENUM:              return "VK_LOGIC_OP_MAX_ENUM";
 +              default:                                                return DE_NULL;
 +      }
 +}
 +
 +const char* getBorderColorName (VkBorderColor value)
 +{
 +      switch (value)
 +      {
 +              case VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK:   return "VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK";
 +              case VK_BORDER_COLOR_INT_TRANSPARENT_BLACK:             return "VK_BORDER_COLOR_INT_TRANSPARENT_BLACK";
 +              case VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK:                return "VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK";
 +              case VK_BORDER_COLOR_INT_OPAQUE_BLACK:                  return "VK_BORDER_COLOR_INT_OPAQUE_BLACK";
 +              case VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE:                return "VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE";
 +              case VK_BORDER_COLOR_INT_OPAQUE_WHITE:                  return "VK_BORDER_COLOR_INT_OPAQUE_WHITE";
 +              case VK_BORDER_COLOR_FLOAT_CUSTOM_EXT:                  return "VK_BORDER_COLOR_FLOAT_CUSTOM_EXT";
 +              case VK_BORDER_COLOR_INT_CUSTOM_EXT:                    return "VK_BORDER_COLOR_INT_CUSTOM_EXT";
 +              case VK_BORDER_COLOR_MAX_ENUM:                                  return "VK_BORDER_COLOR_MAX_ENUM";
 +              default:                                                                                return DE_NULL;
 +      }
 +}
 +
 +const char* getFilterName (VkFilter value)
 +{
 +      switch (value)
 +      {
 +              case VK_FILTER_NEAREST:         return "VK_FILTER_NEAREST";
 +              case VK_FILTER_LINEAR:          return "VK_FILTER_LINEAR";
 +              case VK_FILTER_CUBIC_IMG:       return "VK_FILTER_CUBIC_IMG";
 +              case VK_FILTER_MAX_ENUM:        return "VK_FILTER_MAX_ENUM";
 +              default:                                        return DE_NULL;
 +      }
 +}
 +
 +const char* getSamplerAddressModeName (VkSamplerAddressMode value)
 +{
 +      switch (value)
 +      {
 +              case VK_SAMPLER_ADDRESS_MODE_REPEAT:                            return "VK_SAMPLER_ADDRESS_MODE_REPEAT";
 +              case VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT:           return "VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT";
 +              case VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE:                     return "VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE";
 +              case VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER:           return "VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER";
 +              case VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE:      return "VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE";
 +              case VK_SAMPLER_ADDRESS_MODE_MAX_ENUM:                          return "VK_SAMPLER_ADDRESS_MODE_MAX_ENUM";
 +              default:                                                                                        return DE_NULL;
 +      }
 +}
 +
 +const char* getSamplerMipmapModeName (VkSamplerMipmapMode value)
 +{
 +      switch (value)
 +      {
 +              case VK_SAMPLER_MIPMAP_MODE_NEAREST:    return "VK_SAMPLER_MIPMAP_MODE_NEAREST";
 +              case VK_SAMPLER_MIPMAP_MODE_LINEAR:             return "VK_SAMPLER_MIPMAP_MODE_LINEAR";
 +              case VK_SAMPLER_MIPMAP_MODE_MAX_ENUM:   return "VK_SAMPLER_MIPMAP_MODE_MAX_ENUM";
 +              default:                                                                return DE_NULL;
 +      }
 +}
 +
 +const char* getDescriptorTypeName (VkDescriptorType value)
 +{
 +      switch (value)
 +      {
 +              case VK_DESCRIPTOR_TYPE_SAMPLER:                                return "VK_DESCRIPTOR_TYPE_SAMPLER";
 +              case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER: return "VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER";
 +              case VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE:                  return "VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE";
 +              case VK_DESCRIPTOR_TYPE_STORAGE_IMAGE:                  return "VK_DESCRIPTOR_TYPE_STORAGE_IMAGE";
 +              case VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER:   return "VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER";
 +              case VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER:   return "VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER";
 +              case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER:                 return "VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER";
 +              case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER:                 return "VK_DESCRIPTOR_TYPE_STORAGE_BUFFER";
 +              case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC: return "VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC";
 +              case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC: return "VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC";
 +              case VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT:               return "VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT";
 +              case VK_DESCRIPTOR_TYPE_MAX_ENUM:                               return "VK_DESCRIPTOR_TYPE_MAX_ENUM";
 +              default:                                                                                return DE_NULL;
 +      }
 +}
 +
 +const char* getAttachmentLoadOpName (VkAttachmentLoadOp value)
 +{
 +      switch (value)
 +      {
 +              case VK_ATTACHMENT_LOAD_OP_LOAD:                return "VK_ATTACHMENT_LOAD_OP_LOAD";
 +              case VK_ATTACHMENT_LOAD_OP_CLEAR:               return "VK_ATTACHMENT_LOAD_OP_CLEAR";
 +              case VK_ATTACHMENT_LOAD_OP_DONT_CARE:   return "VK_ATTACHMENT_LOAD_OP_DONT_CARE";
 +              case VK_ATTACHMENT_LOAD_OP_MAX_ENUM:    return "VK_ATTACHMENT_LOAD_OP_MAX_ENUM";
 +              default:                                                                return DE_NULL;
 +      }
 +}
 +
 +const char* getAttachmentStoreOpName (VkAttachmentStoreOp value)
 +{
 +      switch (value)
 +      {
 +              case VK_ATTACHMENT_STORE_OP_STORE:              return "VK_ATTACHMENT_STORE_OP_STORE";
 +              case VK_ATTACHMENT_STORE_OP_DONT_CARE:  return "VK_ATTACHMENT_STORE_OP_DONT_CARE";
 +              case VK_ATTACHMENT_STORE_OP_MAX_ENUM:   return "VK_ATTACHMENT_STORE_OP_MAX_ENUM";
 +              default:                                                                return DE_NULL;
 +      }
 +}
 +
 +const char* getPipelineBindPointName (VkPipelineBindPoint value)
 +{
 +      switch (value)
 +      {
 +              case VK_PIPELINE_BIND_POINT_GRAPHICS:   return "VK_PIPELINE_BIND_POINT_GRAPHICS";
 +              case VK_PIPELINE_BIND_POINT_COMPUTE:    return "VK_PIPELINE_BIND_POINT_COMPUTE";
 +              case VK_PIPELINE_BIND_POINT_MAX_ENUM:   return "VK_PIPELINE_BIND_POINT_MAX_ENUM";
 +              default:                                                                return DE_NULL;
 +      }
 +}
 +
 +const char* getCommandBufferLevelName (VkCommandBufferLevel value)
 +{
 +      switch (value)
 +      {
 +              case VK_COMMAND_BUFFER_LEVEL_PRIMARY:   return "VK_COMMAND_BUFFER_LEVEL_PRIMARY";
 +              case VK_COMMAND_BUFFER_LEVEL_SECONDARY: return "VK_COMMAND_BUFFER_LEVEL_SECONDARY";
 +              case VK_COMMAND_BUFFER_LEVEL_MAX_ENUM:  return "VK_COMMAND_BUFFER_LEVEL_MAX_ENUM";
 +              default:                                                                return DE_NULL;
 +      }
 +}
 +
 +const char* getIndexTypeName (VkIndexType value)
 +{
 +      switch (value)
 +      {
 +              case VK_INDEX_TYPE_UINT16:              return "VK_INDEX_TYPE_UINT16";
 +              case VK_INDEX_TYPE_UINT32:              return "VK_INDEX_TYPE_UINT32";
 +              case VK_INDEX_TYPE_UINT8_EXT:   return "VK_INDEX_TYPE_UINT8_EXT";
 +              case VK_INDEX_TYPE_MAX_ENUM:    return "VK_INDEX_TYPE_MAX_ENUM";
 +              default:                                                return DE_NULL;
 +      }
 +}
 +
 +const char* getSubpassContentsName (VkSubpassContents value)
 +{
 +      switch (value)
 +      {
 +              case VK_SUBPASS_CONTENTS_INLINE:                                        return "VK_SUBPASS_CONTENTS_INLINE";
 +              case VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS:     return "VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS";
 +              case VK_SUBPASS_CONTENTS_MAX_ENUM:                                      return "VK_SUBPASS_CONTENTS_MAX_ENUM";
 +              default:                                                                                        return DE_NULL;
 +      }
 +}
 +
-               tcu::Format::BitDesc(VK_MEMORY_HEAP_SEU_SAFE_BIT_KHR,   "VK_MEMORY_HEAP_SEU_SAFE_BIT_KHR"),
 +const char* getPointClippingBehaviorName (VkPointClippingBehavior value)
 +{
 +      switch (value)
 +      {
 +              case VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES:                return "VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES";
 +              case VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY:  return "VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY";
 +              case VK_POINT_CLIPPING_BEHAVIOR_MAX_ENUM:                               return "VK_POINT_CLIPPING_BEHAVIOR_MAX_ENUM";
 +              default:                                                                                                return DE_NULL;
 +      }
 +}
 +
 +const char* getTessellationDomainOriginName (VkTessellationDomainOrigin value)
 +{
 +      switch (value)
 +      {
 +              case VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT:  return "VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT";
 +              case VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT:  return "VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT";
 +              case VK_TESSELLATION_DOMAIN_ORIGIN_MAX_ENUM:    return "VK_TESSELLATION_DOMAIN_ORIGIN_MAX_ENUM";
 +              default:                                                                                return DE_NULL;
 +      }
 +}
 +
 +const char* getSamplerYcbcrModelConversionName (VkSamplerYcbcrModelConversion value)
 +{
 +      switch (value)
 +      {
 +              case VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY:    return "VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY";
 +              case VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY:  return "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY";
 +              case VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709:               return "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709";
 +              case VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601:               return "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601";
 +              case VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020:              return "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020";
 +              case VK_SAMPLER_YCBCR_MODEL_CONVERSION_MAX_ENUM:                return "VK_SAMPLER_YCBCR_MODEL_CONVERSION_MAX_ENUM";
 +              default:                                                                                                return DE_NULL;
 +      }
 +}
 +
 +const char* getSamplerYcbcrRangeName (VkSamplerYcbcrRange value)
 +{
 +      switch (value)
 +      {
 +              case VK_SAMPLER_YCBCR_RANGE_ITU_FULL:   return "VK_SAMPLER_YCBCR_RANGE_ITU_FULL";
 +              case VK_SAMPLER_YCBCR_RANGE_ITU_NARROW: return "VK_SAMPLER_YCBCR_RANGE_ITU_NARROW";
 +              case VK_SAMPLER_YCBCR_RANGE_MAX_ENUM:   return "VK_SAMPLER_YCBCR_RANGE_MAX_ENUM";
 +              default:                                                                return DE_NULL;
 +      }
 +}
 +
 +const char* getChromaLocationName (VkChromaLocation value)
 +{
 +      switch (value)
 +      {
 +              case VK_CHROMA_LOCATION_COSITED_EVEN:   return "VK_CHROMA_LOCATION_COSITED_EVEN";
 +              case VK_CHROMA_LOCATION_MIDPOINT:               return "VK_CHROMA_LOCATION_MIDPOINT";
 +              case VK_CHROMA_LOCATION_MAX_ENUM:               return "VK_CHROMA_LOCATION_MAX_ENUM";
 +              default:                                                                return DE_NULL;
 +      }
 +}
 +
 +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_MESA_LLVMPIPE:                                return "VK_DRIVER_ID_MESA_LLVMPIPE";
 +              case VK_DRIVER_ID_MOLTENVK:                                             return "VK_DRIVER_ID_MOLTENVK";
++              case VK_DRIVER_ID_COREAVI_PROPRIETARY:                  return "VK_DRIVER_ID_COREAVI_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* getFaultLevelName (VkFaultLevel value)
++{
++      switch (value)
++      {
++              case VK_FAULT_LEVEL_UNASSIGNED:         return "VK_FAULT_LEVEL_UNASSIGNED";
++              case VK_FAULT_LEVEL_CRITICAL:           return "VK_FAULT_LEVEL_CRITICAL";
++              case VK_FAULT_LEVEL_RECOVERABLE:        return "VK_FAULT_LEVEL_RECOVERABLE";
++              case VK_FAULT_LEVEL_WARNING:            return "VK_FAULT_LEVEL_WARNING";
++              case VK_FAULT_LEVEL_MAX_ENUM:           return "VK_FAULT_LEVEL_MAX_ENUM";
++              default:                                                        return DE_NULL;
++      }
++}
++
++const char* getFaultTypeName (VkFaultType value)
++{
++      switch (value)
++      {
++              case VK_FAULT_TYPE_INVALID:                             return "VK_FAULT_TYPE_INVALID";
++              case VK_FAULT_TYPE_UNASSIGNED:                  return "VK_FAULT_TYPE_UNASSIGNED";
++              case VK_FAULT_TYPE_IMPLEMENTATION:              return "VK_FAULT_TYPE_IMPLEMENTATION";
++              case VK_FAULT_TYPE_SYSTEM:                              return "VK_FAULT_TYPE_SYSTEM";
++              case VK_FAULT_TYPE_PHYSICAL_DEVICE:             return "VK_FAULT_TYPE_PHYSICAL_DEVICE";
++              case VK_FAULT_TYPE_COMMAND_BUFFER_FULL: return "VK_FAULT_TYPE_COMMAND_BUFFER_FULL";
++              case VK_FAULT_TYPE_INVALID_API_USAGE:   return "VK_FAULT_TYPE_INVALID_API_USAGE";
++              case VK_FAULT_TYPE_MAX_ENUM:                    return "VK_FAULT_TYPE_MAX_ENUM";
++              default:                                                                return DE_NULL;
++      }
++}
++
++const char* getFaultQueryBehaviorName (VkFaultQueryBehavior value)
++{
++      switch (value)
++      {
++              case VK_FAULT_QUERY_BEHAVIOR_GET_AND_CLEAR_ALL_FAULTS:  return "VK_FAULT_QUERY_BEHAVIOR_GET_AND_CLEAR_ALL_FAULTS";
++              case VK_FAULT_QUERY_BEHAVIOR_MAX_ENUM:                                  return "VK_FAULT_QUERY_BEHAVIOR_MAX_ENUM";
++              default:                                                                                                return DE_NULL;
++      }
++}
++
++const char* getPipelineMatchControlName (VkPipelineMatchControl value)
++{
++      switch (value)
++      {
++              case VK_PIPELINE_MATCH_CONTROL_APPLICATION_UUID_EXACT_MATCH:    return "VK_PIPELINE_MATCH_CONTROL_APPLICATION_UUID_EXACT_MATCH";
++              case VK_PIPELINE_MATCH_CONTROL_MAX_ENUM:                                                return "VK_PIPELINE_MATCH_CONTROL_MAX_ENUM";
++              default:                                                                                                                return DE_NULL;
++      }
++}
++
 +const char* getPresentModeKHRName (VkPresentModeKHR value)
 +{
 +      switch (value)
 +      {
 +              case VK_PRESENT_MODE_IMMEDIATE_KHR:                                     return "VK_PRESENT_MODE_IMMEDIATE_KHR";
 +              case VK_PRESENT_MODE_MAILBOX_KHR:                                       return "VK_PRESENT_MODE_MAILBOX_KHR";
 +              case VK_PRESENT_MODE_FIFO_KHR:                                          return "VK_PRESENT_MODE_FIFO_KHR";
 +              case VK_PRESENT_MODE_FIFO_RELAXED_KHR:                          return "VK_PRESENT_MODE_FIFO_RELAXED_KHR";
 +              case VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR:         return "VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR";
 +              case VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR:     return "VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR";
 +              case VK_PRESENT_MODE_MAX_ENUM_KHR:                                      return "VK_PRESENT_MODE_MAX_ENUM_KHR";
 +              default:                                                                                        return DE_NULL;
 +      }
 +}
 +
 +const char* getColorSpaceKHRName (VkColorSpaceKHR value)
 +{
 +      switch (value)
 +      {
 +              case VK_COLOR_SPACE_SRGB_NONLINEAR_KHR:                         return "VK_COLOR_SPACE_SRGB_NONLINEAR_KHR";
 +              case VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT:           return "VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT";
 +              case VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT:           return "VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT";
 +              case VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT:                      return "VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT";
 +              case VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT:                       return "VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT";
 +              case VK_COLOR_SPACE_BT709_LINEAR_EXT:                           return "VK_COLOR_SPACE_BT709_LINEAR_EXT";
 +              case VK_COLOR_SPACE_BT709_NONLINEAR_EXT:                        return "VK_COLOR_SPACE_BT709_NONLINEAR_EXT";
 +              case VK_COLOR_SPACE_BT2020_LINEAR_EXT:                          return "VK_COLOR_SPACE_BT2020_LINEAR_EXT";
 +              case VK_COLOR_SPACE_HDR10_ST2084_EXT:                           return "VK_COLOR_SPACE_HDR10_ST2084_EXT";
 +              case VK_COLOR_SPACE_DOLBYVISION_EXT:                            return "VK_COLOR_SPACE_DOLBYVISION_EXT";
 +              case VK_COLOR_SPACE_HDR10_HLG_EXT:                                      return "VK_COLOR_SPACE_HDR10_HLG_EXT";
 +              case VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT:                        return "VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT";
 +              case VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT:                     return "VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT";
 +              case VK_COLOR_SPACE_PASS_THROUGH_EXT:                           return "VK_COLOR_SPACE_PASS_THROUGH_EXT";
 +              case VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT:        return "VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT";
 +              case VK_COLOR_SPACE_MAX_ENUM_KHR:                                       return "VK_COLOR_SPACE_MAX_ENUM_KHR";
 +              default:                                                                                        return DE_NULL;
 +      }
 +}
 +
++const char* getPerformanceCounterUnitKHRName (VkPerformanceCounterUnitKHR value)
++{
++      switch (value)
++      {
++              case VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR:                   return "VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR";
++              case VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR:                return "VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR";
++              case VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR:               return "VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR";
++              case VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR:                             return "VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR";
++              case VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR:  return "VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR";
++              case VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR:                    return "VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR";
++              case VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR:                             return "VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR";
++              case VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR:                             return "VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR";
++              case VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR:                              return "VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR";
++              case VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR:                             return "VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR";
++              case VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR:                    return "VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR";
++              case VK_PERFORMANCE_COUNTER_UNIT_MAX_ENUM_KHR:                  return "VK_PERFORMANCE_COUNTER_UNIT_MAX_ENUM_KHR";
++              default:                                                                                                return DE_NULL;
++      }
++}
++
++const char* getPerformanceCounterScopeKHRName (VkPerformanceCounterScopeKHR value)
++{
++      switch (value)
++      {
++              case VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR:   return "VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR";
++              case VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR:              return "VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR";
++              case VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR:                  return "VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR";
++              case VK_PERFORMANCE_COUNTER_SCOPE_MAX_ENUM_KHR:                 return "VK_PERFORMANCE_COUNTER_SCOPE_MAX_ENUM_KHR";
++              default:                                                                                                return DE_NULL;
++      }
++}
++
++const char* getPerformanceCounterStorageKHRName (VkPerformanceCounterStorageKHR value)
++{
++      switch (value)
++      {
++              case VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR:          return "VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR";
++              case VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR:          return "VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR";
++              case VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR:         return "VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR";
++              case VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR:         return "VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR";
++              case VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR:        return "VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR";
++              case VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR:        return "VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR";
++              case VK_PERFORMANCE_COUNTER_STORAGE_MAX_ENUM_KHR:       return "VK_PERFORMANCE_COUNTER_STORAGE_MAX_ENUM_KHR";
++              default:                                                                                        return DE_NULL;
++      }
++}
++
 +const char* getFragmentShadingRateCombinerOpKHRName (VkFragmentShadingRateCombinerOpKHR value)
 +{
 +      switch (value)
 +      {
 +              case VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR:             return "VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR";
 +              case VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR:  return "VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR";
 +              case VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHR:              return "VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHR";
 +              case VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHR:              return "VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHR";
 +              case VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR:              return "VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR";
 +              case VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_ENUM_KHR: return "VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_ENUM_KHR";
 +              default:                                                                                                return DE_NULL;
 +      }
 +}
 +
 +const char* getDisplayPowerStateEXTName (VkDisplayPowerStateEXT value)
 +{
 +      switch (value)
 +      {
 +              case VK_DISPLAY_POWER_STATE_OFF_EXT:            return "VK_DISPLAY_POWER_STATE_OFF_EXT";
 +              case VK_DISPLAY_POWER_STATE_SUSPEND_EXT:        return "VK_DISPLAY_POWER_STATE_SUSPEND_EXT";
 +              case VK_DISPLAY_POWER_STATE_ON_EXT:                     return "VK_DISPLAY_POWER_STATE_ON_EXT";
 +              case VK_DISPLAY_POWER_STATE_MAX_ENUM_EXT:       return "VK_DISPLAY_POWER_STATE_MAX_ENUM_EXT";
 +              default:                                                                        return DE_NULL;
 +      }
 +}
 +
 +const char* getDeviceEventTypeEXTName (VkDeviceEventTypeEXT value)
 +{
 +      switch (value)
 +      {
 +              case VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT:  return "VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT";
 +              case VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT:                 return "VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT";
 +              default:                                                                                return DE_NULL;
 +      }
 +}
 +
 +const char* getDisplayEventTypeEXTName (VkDisplayEventTypeEXT value)
 +{
 +      switch (value)
 +      {
 +              case VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT: return "VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT";
 +              case VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT:                return "VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT";
 +              default:                                                                                return DE_NULL;
 +      }
 +}
 +
 +const char* getDiscardRectangleModeEXTName (VkDiscardRectangleModeEXT value)
 +{
 +      switch (value)
 +      {
 +              case VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT:   return "VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT";
 +              case VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT:   return "VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT";
 +              case VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT:    return "VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT";
 +              default:                                                                                return DE_NULL;
 +      }
 +}
 +
 +const char* getConservativeRasterizationModeEXTName (VkConservativeRasterizationModeEXT value)
 +{
 +      switch (value)
 +      {
 +              case VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT:           return "VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT";
 +              case VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT:       return "VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT";
 +              case VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT:      return "VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT";
 +              case VK_CONSERVATIVE_RASTERIZATION_MODE_MAX_ENUM_EXT:           return "VK_CONSERVATIVE_RASTERIZATION_MODE_MAX_ENUM_EXT";
 +              default:                                                                                                        return DE_NULL;
 +      }
 +}
 +
 +const char* getBlendOverlapEXTName (VkBlendOverlapEXT value)
 +{
 +      switch (value)
 +      {
 +              case VK_BLEND_OVERLAP_UNCORRELATED_EXT: return "VK_BLEND_OVERLAP_UNCORRELATED_EXT";
 +              case VK_BLEND_OVERLAP_DISJOINT_EXT:             return "VK_BLEND_OVERLAP_DISJOINT_EXT";
 +              case VK_BLEND_OVERLAP_CONJOINT_EXT:             return "VK_BLEND_OVERLAP_CONJOINT_EXT";
 +              case VK_BLEND_OVERLAP_MAX_ENUM_EXT:             return "VK_BLEND_OVERLAP_MAX_ENUM_EXT";
 +              default:                                                                return DE_NULL;
 +      }
 +}
 +
 +const char* getQueueGlobalPriorityEXTName (VkQueueGlobalPriorityEXT value)
 +{
 +      switch (value)
 +      {
 +              case VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT:          return "VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT";
 +              case VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT:       return "VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT";
 +              case VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT:         return "VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT";
 +              case VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT:     return "VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT";
 +              case VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM_EXT:     return "VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM_EXT";
 +              default:                                                                        return DE_NULL;
 +      }
 +}
 +
 +const char* getTimeDomainEXTName (VkTimeDomainEXT value)
 +{
 +      switch (value)
 +      {
 +              case VK_TIME_DOMAIN_DEVICE_EXT:                                         return "VK_TIME_DOMAIN_DEVICE_EXT";
 +              case VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT:                        return "VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT";
 +              case VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT:            return "VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT";
 +              case VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT:      return "VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT";
 +              case VK_TIME_DOMAIN_MAX_ENUM_EXT:                                       return "VK_TIME_DOMAIN_MAX_ENUM_EXT";
 +              default:                                                                                        return DE_NULL;
 +      }
 +}
 +
++const char* getValidationFeatureEnableEXTName (VkValidationFeatureEnableEXT value)
++{
++      switch (value)
++      {
++              case VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT:                                                     return "VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT";
++              case VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT:        return "VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT";
++              case VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT:                                           return "VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT";
++              case VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT:                                                     return "VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT";
++              case VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT:                       return "VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT";
++              case VK_VALIDATION_FEATURE_ENABLE_MAX_ENUM_EXT:                                                         return "VK_VALIDATION_FEATURE_ENABLE_MAX_ENUM_EXT";
++              default:                                                                                                                                        return DE_NULL;
++      }
++}
++
++const char* getValidationFeatureDisableEXTName (VkValidationFeatureDisableEXT value)
++{
++      switch (value)
++      {
++              case VK_VALIDATION_FEATURE_DISABLE_ALL_EXT:                                     return "VK_VALIDATION_FEATURE_DISABLE_ALL_EXT";
++              case VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT:                         return "VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT";
++              case VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT:           return "VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT";
++              case VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT:          return "VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT";
++              case VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT:        return "VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT";
++              case VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT:                     return "VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT";
++              case VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT:          return "VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT";
++              case VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT:                        return "VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT";
++              default:                                                                                                        return DE_NULL;
++      }
++}
++
 +const char* getLineRasterizationModeEXTName (VkLineRasterizationModeEXT value)
 +{
 +      switch (value)
 +      {
 +              case VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT:                    return "VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT";
 +              case VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT:                return "VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT";
 +              case VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT:                  return "VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT";
 +              case VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT: return "VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT";
 +              case VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT:                   return "VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT";
 +              default:                                                                                                return DE_NULL;
 +      }
 +}
 +
 +tcu::Format::Bitfield<32> getAccessFlagsStr (VkAccessFlags value)
 +{
 +      static const tcu::Format::BitDesc s_desc[] =
 +      {
 +              tcu::Format::BitDesc(VK_ACCESS_INDIRECT_COMMAND_READ_BIT,                                               "VK_ACCESS_INDIRECT_COMMAND_READ_BIT"),
 +              tcu::Format::BitDesc(VK_ACCESS_INDEX_READ_BIT,                                                                  "VK_ACCESS_INDEX_READ_BIT"),
 +              tcu::Format::BitDesc(VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT,                                               "VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT"),
 +              tcu::Format::BitDesc(VK_ACCESS_UNIFORM_READ_BIT,                                                                "VK_ACCESS_UNIFORM_READ_BIT"),
 +              tcu::Format::BitDesc(VK_ACCESS_INPUT_ATTACHMENT_READ_BIT,                                               "VK_ACCESS_INPUT_ATTACHMENT_READ_BIT"),
 +              tcu::Format::BitDesc(VK_ACCESS_SHADER_READ_BIT,                                                                 "VK_ACCESS_SHADER_READ_BIT"),
 +              tcu::Format::BitDesc(VK_ACCESS_SHADER_WRITE_BIT,                                                                "VK_ACCESS_SHADER_WRITE_BIT"),
 +              tcu::Format::BitDesc(VK_ACCESS_COLOR_ATTACHMENT_READ_BIT,                                               "VK_ACCESS_COLOR_ATTACHMENT_READ_BIT"),
 +              tcu::Format::BitDesc(VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,                                              "VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT"),
 +              tcu::Format::BitDesc(VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT,                               "VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT"),
 +              tcu::Format::BitDesc(VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT,                              "VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT"),
 +              tcu::Format::BitDesc(VK_ACCESS_TRANSFER_READ_BIT,                                                               "VK_ACCESS_TRANSFER_READ_BIT"),
 +              tcu::Format::BitDesc(VK_ACCESS_TRANSFER_WRITE_BIT,                                                              "VK_ACCESS_TRANSFER_WRITE_BIT"),
 +              tcu::Format::BitDesc(VK_ACCESS_HOST_READ_BIT,                                                                   "VK_ACCESS_HOST_READ_BIT"),
 +              tcu::Format::BitDesc(VK_ACCESS_HOST_WRITE_BIT,                                                                  "VK_ACCESS_HOST_WRITE_BIT"),
 +              tcu::Format::BitDesc(VK_ACCESS_MEMORY_READ_BIT,                                                                 "VK_ACCESS_MEMORY_READ_BIT"),
 +              tcu::Format::BitDesc(VK_ACCESS_MEMORY_WRITE_BIT,                                                                "VK_ACCESS_MEMORY_WRITE_BIT"),
 +              tcu::Format::BitDesc(VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT,               "VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT"),
 +              tcu::Format::BitDesc(VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV,                                  "VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV"),
++              tcu::Format::BitDesc(VK_ACCESS_NONE_KHR,                                                                                "VK_ACCESS_NONE_KHR"),
 +              tcu::Format::BitDesc(VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR,   "VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR"),
 +              tcu::Format::BitDesc(VK_ACCESS_FLAG_BITS_MAX_ENUM,                                                              "VK_ACCESS_FLAG_BITS_MAX_ENUM"),
 +      };
 +      return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 +}
 +
 +tcu::Format::Bitfield<32> getImageAspectFlagsStr (VkImageAspectFlags value)
 +{
 +      static const tcu::Format::BitDesc s_desc[] =
 +      {
 +              tcu::Format::BitDesc(VK_IMAGE_ASPECT_COLOR_BIT,                                 "VK_IMAGE_ASPECT_COLOR_BIT"),
 +              tcu::Format::BitDesc(VK_IMAGE_ASPECT_DEPTH_BIT,                                 "VK_IMAGE_ASPECT_DEPTH_BIT"),
 +              tcu::Format::BitDesc(VK_IMAGE_ASPECT_STENCIL_BIT,                               "VK_IMAGE_ASPECT_STENCIL_BIT"),
 +              tcu::Format::BitDesc(VK_IMAGE_ASPECT_METADATA_BIT,                              "VK_IMAGE_ASPECT_METADATA_BIT"),
 +              tcu::Format::BitDesc(VK_IMAGE_ASPECT_PLANE_0_BIT,                               "VK_IMAGE_ASPECT_PLANE_0_BIT"),
 +              tcu::Format::BitDesc(VK_IMAGE_ASPECT_PLANE_1_BIT,                               "VK_IMAGE_ASPECT_PLANE_1_BIT"),
 +              tcu::Format::BitDesc(VK_IMAGE_ASPECT_PLANE_2_BIT,                               "VK_IMAGE_ASPECT_PLANE_2_BIT"),
 +              tcu::Format::BitDesc(VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT,    "VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT"),
 +              tcu::Format::BitDesc(VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT,    "VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT"),
 +              tcu::Format::BitDesc(VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT,    "VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT"),
 +              tcu::Format::BitDesc(VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT,    "VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT"),
 +              tcu::Format::BitDesc(VK_IMAGE_ASPECT_FLAG_BITS_MAX_ENUM,                "VK_IMAGE_ASPECT_FLAG_BITS_MAX_ENUM"),
 +      };
 +      return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 +}
 +
 +tcu::Format::Bitfield<32> getFormatFeatureFlagsStr (VkFormatFeatureFlags value)
 +{
 +      static const tcu::Format::BitDesc s_desc[] =
 +      {
 +              tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,                                                                                                                       "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT"),
 +              tcu::Format::BitDesc(VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT,                                                                                                                       "VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT"),
 +              tcu::Format::BitDesc(VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT,                                                                                                        "VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT"),
 +              tcu::Format::BitDesc(VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT,                                                                                                        "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT"),
 +              tcu::Format::BitDesc(VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT,                                                                                                        "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT"),
 +              tcu::Format::BitDesc(VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT,                                                                                         "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT"),
 +              tcu::Format::BitDesc(VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT,                                                                                                                       "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT"),
 +              tcu::Format::BitDesc(VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT,                                                                                                            "VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT"),
 +              tcu::Format::BitDesc(VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,                                                                                                      "VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT"),
 +              tcu::Format::BitDesc(VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT,                                                                                            "VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT"),
 +              tcu::Format::BitDesc(VK_FORMAT_FEATURE_BLIT_SRC_BIT,                                                                                                                            "VK_FORMAT_FEATURE_BLIT_SRC_BIT"),
 +              tcu::Format::BitDesc(VK_FORMAT_FEATURE_BLIT_DST_BIT,                                                                                                                            "VK_FORMAT_FEATURE_BLIT_DST_BIT"),
 +              tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT,                                                                                         "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT"),
 +              tcu::Format::BitDesc(VK_FORMAT_FEATURE_TRANSFER_SRC_BIT,                                                                                                                        "VK_FORMAT_FEATURE_TRANSFER_SRC_BIT"),
 +              tcu::Format::BitDesc(VK_FORMAT_FEATURE_TRANSFER_DST_BIT,                                                                                                                        "VK_FORMAT_FEATURE_TRANSFER_DST_BIT"),
 +              tcu::Format::BitDesc(VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT,                                                                                                     "VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT"),
 +              tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT,                                                        "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT"),
 +              tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT,                       "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT"),
 +              tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT,                       "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT"),
 +              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_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR,                                                                        "VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"),
 +              tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT,                                                                                      "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT"),
 +              tcu::Format::BitDesc(VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM,                                                                                                                      "VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM"),
 +      };
 +      return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 +}
 +
 +tcu::Format::Bitfield<32> getImageCreateFlagsStr (VkImageCreateFlags value)
 +{
 +      static const tcu::Format::BitDesc s_desc[] =
 +      {
 +              tcu::Format::BitDesc(VK_IMAGE_CREATE_SPARSE_BINDING_BIT,                                                "VK_IMAGE_CREATE_SPARSE_BINDING_BIT"),
 +              tcu::Format::BitDesc(VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT,                                              "VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT"),
 +              tcu::Format::BitDesc(VK_IMAGE_CREATE_SPARSE_ALIASED_BIT,                                                "VK_IMAGE_CREATE_SPARSE_ALIASED_BIT"),
 +              tcu::Format::BitDesc(VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT,                                                "VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT"),
 +              tcu::Format::BitDesc(VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT,                                               "VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT"),
 +              tcu::Format::BitDesc(VK_IMAGE_CREATE_ALIAS_BIT,                                                                 "VK_IMAGE_CREATE_ALIAS_BIT"),
 +              tcu::Format::BitDesc(VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT,                   "VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT"),
 +              tcu::Format::BitDesc(VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT,                                   "VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT"),
 +              tcu::Format::BitDesc(VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT,                   "VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT"),
 +              tcu::Format::BitDesc(VK_IMAGE_CREATE_EXTENDED_USAGE_BIT,                                                "VK_IMAGE_CREATE_EXTENDED_USAGE_BIT"),
 +              tcu::Format::BitDesc(VK_IMAGE_CREATE_PROTECTED_BIT,                                                             "VK_IMAGE_CREATE_PROTECTED_BIT"),
 +              tcu::Format::BitDesc(VK_IMAGE_CREATE_DISJOINT_BIT,                                                              "VK_IMAGE_CREATE_DISJOINT_BIT"),
 +              tcu::Format::BitDesc(VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT, "VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT"),
 +              tcu::Format::BitDesc(VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM,                                                "VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM"),
 +      };
 +      return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 +}
 +
 +tcu::Format::Bitfield<32> getSampleCountFlagsStr (VkSampleCountFlags value)
 +{
 +      static const tcu::Format::BitDesc s_desc[] =
 +      {
 +              tcu::Format::BitDesc(VK_SAMPLE_COUNT_1_BIT,                                     "VK_SAMPLE_COUNT_1_BIT"),
 +              tcu::Format::BitDesc(VK_SAMPLE_COUNT_2_BIT,                                     "VK_SAMPLE_COUNT_2_BIT"),
 +              tcu::Format::BitDesc(VK_SAMPLE_COUNT_4_BIT,                                     "VK_SAMPLE_COUNT_4_BIT"),
 +              tcu::Format::BitDesc(VK_SAMPLE_COUNT_8_BIT,                                     "VK_SAMPLE_COUNT_8_BIT"),
 +              tcu::Format::BitDesc(VK_SAMPLE_COUNT_16_BIT,                            "VK_SAMPLE_COUNT_16_BIT"),
 +              tcu::Format::BitDesc(VK_SAMPLE_COUNT_32_BIT,                            "VK_SAMPLE_COUNT_32_BIT"),
 +              tcu::Format::BitDesc(VK_SAMPLE_COUNT_64_BIT,                            "VK_SAMPLE_COUNT_64_BIT"),
 +              tcu::Format::BitDesc(VK_SAMPLE_COUNT_FLAG_BITS_MAX_ENUM,        "VK_SAMPLE_COUNT_FLAG_BITS_MAX_ENUM"),
 +      };
 +      return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 +}
 +
 +tcu::Format::Bitfield<32> getImageUsageFlagsStr (VkImageUsageFlags value)
 +{
 +      static const tcu::Format::BitDesc s_desc[] =
 +      {
 +              tcu::Format::BitDesc(VK_IMAGE_USAGE_TRANSFER_SRC_BIT,                                                   "VK_IMAGE_USAGE_TRANSFER_SRC_BIT"),
 +              tcu::Format::BitDesc(VK_IMAGE_USAGE_TRANSFER_DST_BIT,                                                   "VK_IMAGE_USAGE_TRANSFER_DST_BIT"),
 +              tcu::Format::BitDesc(VK_IMAGE_USAGE_SAMPLED_BIT,                                                                "VK_IMAGE_USAGE_SAMPLED_BIT"),
 +              tcu::Format::BitDesc(VK_IMAGE_USAGE_STORAGE_BIT,                                                                "VK_IMAGE_USAGE_STORAGE_BIT"),
 +              tcu::Format::BitDesc(VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,                                               "VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT"),
 +              tcu::Format::BitDesc(VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT,                               "VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT"),
 +              tcu::Format::BitDesc(VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT,                                   "VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT"),
 +              tcu::Format::BitDesc(VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT,                                               "VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT"),
 +              tcu::Format::BitDesc(VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV,                                  "VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV"),
 +              tcu::Format::BitDesc(VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR,   "VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"),
 +              tcu::Format::BitDesc(VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM,                                                 "VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM"),
 +      };
 +      return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 +}
 +
 +tcu::Format::Bitfield<32> getMemoryHeapFlagsStr (VkMemoryHeapFlags value)
 +{
 +      static const tcu::Format::BitDesc s_desc[] =
 +      {
 +              tcu::Format::BitDesc(VK_MEMORY_HEAP_DEVICE_LOCAL_BIT,   "VK_MEMORY_HEAP_DEVICE_LOCAL_BIT"),
 +              tcu::Format::BitDesc(VK_MEMORY_HEAP_MULTI_INSTANCE_BIT, "VK_MEMORY_HEAP_MULTI_INSTANCE_BIT"),
- tcu::Format::Bitfield<32> getSparseMemoryBindFlagsStr (VkSparseMemoryBindFlags value)
- {
-       static const tcu::Format::BitDesc s_desc[] =
-       {
-               tcu::Format::BitDesc(VK_SPARSE_MEMORY_BIND_METADATA_BIT,                "VK_SPARSE_MEMORY_BIND_METADATA_BIT"),
-               tcu::Format::BitDesc(VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM,  "VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM"),
-       };
-       return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
- }
- tcu::Format::Bitfield<32> getSparseImageFormatFlagsStr (VkSparseImageFormatFlags value)
++              tcu::Format::BitDesc(VK_MEMORY_HEAP_SEU_SAFE_BIT,               "VK_MEMORY_HEAP_SEU_SAFE_BIT"),
 +              tcu::Format::BitDesc(VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM, "VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM"),
 +      };
 +      return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 +}
 +
 +tcu::Format::Bitfield<32> getMemoryPropertyFlagsStr (VkMemoryPropertyFlags value)
 +{
 +      static const tcu::Format::BitDesc s_desc[] =
 +      {
 +              tcu::Format::BitDesc(VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,               "VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT"),
 +              tcu::Format::BitDesc(VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT,               "VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT"),
 +              tcu::Format::BitDesc(VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,              "VK_MEMORY_PROPERTY_HOST_COHERENT_BIT"),
 +              tcu::Format::BitDesc(VK_MEMORY_PROPERTY_HOST_CACHED_BIT,                "VK_MEMORY_PROPERTY_HOST_CACHED_BIT"),
 +              tcu::Format::BitDesc(VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT,   "VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT"),
 +              tcu::Format::BitDesc(VK_MEMORY_PROPERTY_PROTECTED_BIT,                  "VK_MEMORY_PROPERTY_PROTECTED_BIT"),
 +              tcu::Format::BitDesc(VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM,             "VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM"),
 +      };
 +      return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 +}
 +
 +tcu::Format::Bitfield<32> getQueueFlagsStr (VkQueueFlags value)
 +{
 +      static const tcu::Format::BitDesc s_desc[] =
 +      {
 +              tcu::Format::BitDesc(VK_QUEUE_GRAPHICS_BIT,                     "VK_QUEUE_GRAPHICS_BIT"),
 +              tcu::Format::BitDesc(VK_QUEUE_COMPUTE_BIT,                      "VK_QUEUE_COMPUTE_BIT"),
 +              tcu::Format::BitDesc(VK_QUEUE_TRANSFER_BIT,                     "VK_QUEUE_TRANSFER_BIT"),
 +              tcu::Format::BitDesc(VK_QUEUE_SPARSE_BINDING_BIT,       "VK_QUEUE_SPARSE_BINDING_BIT"),
 +              tcu::Format::BitDesc(VK_QUEUE_PROTECTED_BIT,            "VK_QUEUE_PROTECTED_BIT"),
 +              tcu::Format::BitDesc(VK_QUEUE_FLAG_BITS_MAX_ENUM,       "VK_QUEUE_FLAG_BITS_MAX_ENUM"),
 +      };
 +      return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 +}
 +
 +tcu::Format::Bitfield<32> getDeviceQueueCreateFlagsStr (VkDeviceQueueCreateFlags value)
 +{
 +      static const tcu::Format::BitDesc s_desc[] =
 +      {
 +              tcu::Format::BitDesc(VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT,              "VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT"),
 +              tcu::Format::BitDesc(VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM, "VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM"),
 +      };
 +      return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 +}
 +
 +tcu::Format::Bitfield<32> getPipelineStageFlagsStr (VkPipelineStageFlags value)
 +{
 +      static const tcu::Format::BitDesc s_desc[] =
 +      {
 +              tcu::Format::BitDesc(VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,                                                         "VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT"),
 +              tcu::Format::BitDesc(VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT,                                                       "VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT"),
 +              tcu::Format::BitDesc(VK_PIPELINE_STAGE_VERTEX_INPUT_BIT,                                                        "VK_PIPELINE_STAGE_VERTEX_INPUT_BIT"),
 +              tcu::Format::BitDesc(VK_PIPELINE_STAGE_VERTEX_SHADER_BIT,                                                       "VK_PIPELINE_STAGE_VERTEX_SHADER_BIT"),
 +              tcu::Format::BitDesc(VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT,                         "VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT"),
 +              tcu::Format::BitDesc(VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT,                      "VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT"),
 +              tcu::Format::BitDesc(VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT,                                                     "VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT"),
 +              tcu::Format::BitDesc(VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,                                                     "VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT"),
 +              tcu::Format::BitDesc(VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT,                                        "VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT"),
 +              tcu::Format::BitDesc(VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,                                         "VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT"),
 +              tcu::Format::BitDesc(VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,                                     "VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT"),
 +              tcu::Format::BitDesc(VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT,                                                      "VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT"),
 +              tcu::Format::BitDesc(VK_PIPELINE_STAGE_TRANSFER_BIT,                                                            "VK_PIPELINE_STAGE_TRANSFER_BIT"),
 +              tcu::Format::BitDesc(VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,                                                      "VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT"),
 +              tcu::Format::BitDesc(VK_PIPELINE_STAGE_HOST_BIT,                                                                        "VK_PIPELINE_STAGE_HOST_BIT"),
 +              tcu::Format::BitDesc(VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,                                                        "VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT"),
 +              tcu::Format::BitDesc(VK_PIPELINE_STAGE_ALL_COMMANDS_BIT,                                                        "VK_PIPELINE_STAGE_ALL_COMMANDS_BIT"),
 +              tcu::Format::BitDesc(VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV,                                       "VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV"),
++              tcu::Format::BitDesc(VK_PIPELINE_STAGE_NONE_KHR,                                                                        "VK_PIPELINE_STAGE_NONE_KHR"),
 +              tcu::Format::BitDesc(VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR,        "VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"),
 +              tcu::Format::BitDesc(VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM,                                                      "VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM"),
 +      };
 +      return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 +}
 +
-               tcu::Format::BitDesc(VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT,                 "VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT"),
-               tcu::Format::BitDesc(VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT,               "VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT"),
-               tcu::Format::BitDesc(VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT, "VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT"),
-               tcu::Format::BitDesc(VK_SPARSE_IMAGE_FORMAT_FLAG_BITS_MAX_ENUM,                 "VK_SPARSE_IMAGE_FORMAT_FLAG_BITS_MAX_ENUM"),
++tcu::Format::Bitfield<32> getFenceCreateFlagsStr (VkFenceCreateFlags value)
 +{
 +      static const tcu::Format::BitDesc s_desc[] =
 +      {
- tcu::Format::Bitfield<32> getFenceCreateFlagsStr (VkFenceCreateFlags value)
++              tcu::Format::BitDesc(VK_FENCE_CREATE_SIGNALED_BIT,                      "VK_FENCE_CREATE_SIGNALED_BIT"),
++              tcu::Format::BitDesc(VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM,        "VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM"),
 +      };
 +      return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 +}
 +
-               tcu::Format::BitDesc(VK_FENCE_CREATE_SIGNALED_BIT,                      "VK_FENCE_CREATE_SIGNALED_BIT"),
-               tcu::Format::BitDesc(VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM,        "VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM"),
++tcu::Format::Bitfield<32> getEventCreateFlagsStr (VkEventCreateFlags value)
 +{
 +      static const tcu::Format::BitDesc s_desc[] =
 +      {
-               tcu::Format::BitDesc(VK_PIPELINE_CACHE_CREATE_USE_APPLICATION_STORAGE_BIT,              "VK_PIPELINE_CACHE_CREATE_USE_APPLICATION_STORAGE_BIT"),
-               tcu::Format::BitDesc(VK_PIPELINE_CACHE_CREATE_RESERVED_1_BIT_EXT,                               "VK_PIPELINE_CACHE_CREATE_RESERVED_1_BIT_EXT"),
-               tcu::Format::BitDesc(VK_PIPELINE_CACHE_CREATE_READ_ONLY_BIT,                                    "VK_PIPELINE_CACHE_CREATE_READ_ONLY_BIT"),
-               tcu::Format::BitDesc(VK_PIPELINE_CACHE_CREATE_READ_ONLY_BIT_KHR,                                "VK_PIPELINE_CACHE_CREATE_READ_ONLY_BIT_KHR"),
-               tcu::Format::BitDesc(VK_PIPELINE_CACHE_CREATE_USE_APPLICATION_STORAGE_BIT_KHR,  "VK_PIPELINE_CACHE_CREATE_USE_APPLICATION_STORAGE_BIT_KHR"),
-               tcu::Format::BitDesc(VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM,                               "VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM"),
++              tcu::Format::BitDesc(VK_EVENT_CREATE_DEVICE_ONLY_BIT_KHR,       "VK_EVENT_CREATE_DEVICE_ONLY_BIT_KHR"),
++              tcu::Format::BitDesc(VK_EVENT_CREATE_FLAG_BITS_MAX_ENUM,        "VK_EVENT_CREATE_FLAG_BITS_MAX_ENUM"),
 +      };
 +      return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 +}
 +
 +tcu::Format::Bitfield<32> getQueryPipelineStatisticFlagsStr (VkQueryPipelineStatisticFlags value)
 +{
 +      static const tcu::Format::BitDesc s_desc[] =
 +      {
 +              tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT,                                           "VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT"),
 +              tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT,                                         "VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT"),
 +              tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT,                                         "VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT"),
 +              tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT,                                       "VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT"),
 +              tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT,                                        "VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT"),
 +              tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT,                                                      "VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT"),
 +              tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT,                                                       "VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT"),
 +              tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT,                                       "VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT"),
 +              tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT,                       "VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT"),
 +              tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT,        "VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT"),
 +              tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT,                                        "VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT"),
 +              tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_FLAG_BITS_MAX_ENUM,                                                            "VK_QUERY_PIPELINE_STATISTIC_FLAG_BITS_MAX_ENUM"),
 +      };
 +      return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 +}
 +
 +tcu::Format::Bitfield<32> getQueryResultFlagsStr (VkQueryResultFlags value)
 +{
 +      static const tcu::Format::BitDesc s_desc[] =
 +      {
 +              tcu::Format::BitDesc(VK_QUERY_RESULT_64_BIT,                            "VK_QUERY_RESULT_64_BIT"),
 +              tcu::Format::BitDesc(VK_QUERY_RESULT_WAIT_BIT,                          "VK_QUERY_RESULT_WAIT_BIT"),
 +              tcu::Format::BitDesc(VK_QUERY_RESULT_WITH_AVAILABILITY_BIT,     "VK_QUERY_RESULT_WITH_AVAILABILITY_BIT"),
 +              tcu::Format::BitDesc(VK_QUERY_RESULT_PARTIAL_BIT,                       "VK_QUERY_RESULT_PARTIAL_BIT"),
 +              tcu::Format::BitDesc(VK_QUERY_RESULT_FLAG_BITS_MAX_ENUM,        "VK_QUERY_RESULT_FLAG_BITS_MAX_ENUM"),
 +      };
 +      return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 +}
 +
 +tcu::Format::Bitfield<32> getBufferCreateFlagsStr (VkBufferCreateFlags value)
 +{
 +      static const tcu::Format::BitDesc s_desc[] =
 +      {
 +              tcu::Format::BitDesc(VK_BUFFER_CREATE_SPARSE_BINDING_BIT,                                       "VK_BUFFER_CREATE_SPARSE_BINDING_BIT"),
 +              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_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));
 +}
 +
 +tcu::Format::Bitfield<32> getBufferUsageFlagsStr (VkBufferUsageFlags value)
 +{
 +      static const tcu::Format::BitDesc s_desc[] =
 +      {
 +              tcu::Format::BitDesc(VK_BUFFER_USAGE_TRANSFER_SRC_BIT,                  "VK_BUFFER_USAGE_TRANSFER_SRC_BIT"),
 +              tcu::Format::BitDesc(VK_BUFFER_USAGE_TRANSFER_DST_BIT,                  "VK_BUFFER_USAGE_TRANSFER_DST_BIT"),
 +              tcu::Format::BitDesc(VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT,  "VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT"),
 +              tcu::Format::BitDesc(VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT,  "VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT"),
 +              tcu::Format::BitDesc(VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT,                "VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT"),
 +              tcu::Format::BitDesc(VK_BUFFER_USAGE_STORAGE_BUFFER_BIT,                "VK_BUFFER_USAGE_STORAGE_BUFFER_BIT"),
 +              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_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));
 +}
 +
 +tcu::Format::Bitfield<32> getImageViewCreateFlagsStr (VkImageViewCreateFlags value)
 +{
 +      static const tcu::Format::BitDesc s_desc[] =
 +      {
 +              tcu::Format::BitDesc(VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM,   "VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM"),
 +      };
 +      return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 +}
 +
 +tcu::Format::Bitfield<32> getPipelineCacheCreateFlagsStr (VkPipelineCacheCreateFlags value)
 +{
 +      static const tcu::Format::BitDesc s_desc[] =
 +      {
- tcu::Format::Bitfield<32> getEventCreateFlagsStr (VkEventCreateFlags value)
- {
-       return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
- }
++              tcu::Format::BitDesc(VK_PIPELINE_CACHE_CREATE_USE_APPLICATION_STORAGE_BIT,      "VK_PIPELINE_CACHE_CREATE_USE_APPLICATION_STORAGE_BIT"),
++              tcu::Format::BitDesc(VK_PIPELINE_CACHE_CREATE_RESERVED_1_BIT_EXT,                       "VK_PIPELINE_CACHE_CREATE_RESERVED_1_BIT_EXT"),
++              tcu::Format::BitDesc(VK_PIPELINE_CACHE_CREATE_READ_ONLY_BIT,                            "VK_PIPELINE_CACHE_CREATE_READ_ONLY_BIT"),
++              tcu::Format::BitDesc(VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM,                       "VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM"),
 +      };
 +      return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 +}
 +
 +tcu::Format::Bitfield<32> getColorComponentFlagsStr (VkColorComponentFlags value)
 +{
 +      static const tcu::Format::BitDesc s_desc[] =
 +      {
 +              tcu::Format::BitDesc(VK_COLOR_COMPONENT_R_BIT,                          "VK_COLOR_COMPONENT_R_BIT"),
 +              tcu::Format::BitDesc(VK_COLOR_COMPONENT_G_BIT,                          "VK_COLOR_COMPONENT_G_BIT"),
 +              tcu::Format::BitDesc(VK_COLOR_COMPONENT_B_BIT,                          "VK_COLOR_COMPONENT_B_BIT"),
 +              tcu::Format::BitDesc(VK_COLOR_COMPONENT_A_BIT,                          "VK_COLOR_COMPONENT_A_BIT"),
 +              tcu::Format::BitDesc(VK_COLOR_COMPONENT_FLAG_BITS_MAX_ENUM,     "VK_COLOR_COMPONENT_FLAG_BITS_MAX_ENUM"),
 +      };
 +      return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 +}
 +
 +tcu::Format::Bitfield<32> getPipelineCreateFlagsStr (VkPipelineCreateFlags value)
 +{
 +      static const tcu::Format::BitDesc s_desc[] =
 +      {
 +              tcu::Format::BitDesc(VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT,                       "VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT"),
 +              tcu::Format::BitDesc(VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT,                          "VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT"),
 +              tcu::Format::BitDesc(VK_PIPELINE_CREATE_DERIVATIVE_BIT,                                         "VK_PIPELINE_CREATE_DERIVATIVE_BIT"),
 +              tcu::Format::BitDesc(VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT,       "VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT"),
 +              tcu::Format::BitDesc(VK_PIPELINE_CREATE_DISPATCH_BASE_BIT,                                      "VK_PIPELINE_CREATE_DISPATCH_BASE_BIT"),
 +              tcu::Format::BitDesc(VK_PIPELINE_CREATE_DISPATCH_BASE,                                          "VK_PIPELINE_CREATE_DISPATCH_BASE"),
 +              tcu::Format::BitDesc(VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM,                                     "VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM"),
 +      };
 +      return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 +}
 +
 +tcu::Format::Bitfield<32> getPipelineShaderStageCreateFlagsStr (VkPipelineShaderStageCreateFlags value)
 +{
 +      static const tcu::Format::BitDesc s_desc[] =
 +      {
 +              tcu::Format::BitDesc(VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT,       "VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT"),
 +              tcu::Format::BitDesc(VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT,            "VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT"),
 +              tcu::Format::BitDesc(VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM,                                        "VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM"),
 +      };
 +      return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 +}
 +
 +tcu::Format::Bitfield<32> getShaderStageFlagsStr (VkShaderStageFlags value)
 +{
 +      static const tcu::Format::BitDesc s_desc[] =
 +      {
 +              tcu::Format::BitDesc(VK_SHADER_STAGE_VERTEX_BIT,                                        "VK_SHADER_STAGE_VERTEX_BIT"),
 +              tcu::Format::BitDesc(VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT,          "VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT"),
 +              tcu::Format::BitDesc(VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT,       "VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT"),
 +              tcu::Format::BitDesc(VK_SHADER_STAGE_GEOMETRY_BIT,                                      "VK_SHADER_STAGE_GEOMETRY_BIT"),
 +              tcu::Format::BitDesc(VK_SHADER_STAGE_FRAGMENT_BIT,                                      "VK_SHADER_STAGE_FRAGMENT_BIT"),
 +              tcu::Format::BitDesc(VK_SHADER_STAGE_COMPUTE_BIT,                                       "VK_SHADER_STAGE_COMPUTE_BIT"),
 +              tcu::Format::BitDesc(VK_SHADER_STAGE_ALL_GRAPHICS,                                      "VK_SHADER_STAGE_ALL_GRAPHICS"),
 +              tcu::Format::BitDesc(VK_SHADER_STAGE_ALL,                                                       "VK_SHADER_STAGE_ALL"),
 +              tcu::Format::BitDesc(VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM,                        "VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM"),
 +      };
 +      return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 +}
 +
 +tcu::Format::Bitfield<32> getCullModeFlagsStr (VkCullModeFlags value)
 +{
 +      static const tcu::Format::BitDesc s_desc[] =
 +      {
 +              tcu::Format::BitDesc(VK_CULL_MODE_NONE,                                 "VK_CULL_MODE_NONE"),
 +              tcu::Format::BitDesc(VK_CULL_MODE_FRONT_BIT,                    "VK_CULL_MODE_FRONT_BIT"),
 +              tcu::Format::BitDesc(VK_CULL_MODE_BACK_BIT,                             "VK_CULL_MODE_BACK_BIT"),
 +              tcu::Format::BitDesc(VK_CULL_MODE_FRONT_AND_BACK,               "VK_CULL_MODE_FRONT_AND_BACK"),
 +              tcu::Format::BitDesc(VK_CULL_MODE_FLAG_BITS_MAX_ENUM,   "VK_CULL_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> getSamplerCreateFlagsStr (VkSamplerCreateFlags value)
 +{
 +      static const tcu::Format::BitDesc s_desc[] =
 +      {
 +              tcu::Format::BitDesc(VK_SAMPLER_CREATE_FLAG_BITS_MAX_ENUM,      "VK_SAMPLER_CREATE_FLAG_BITS_MAX_ENUM"),
 +      };
 +      return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 +}
 +
 +tcu::Format::Bitfield<32> getDescriptorPoolCreateFlagsStr (VkDescriptorPoolCreateFlags value)
 +{
 +      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_FLAG_BITS_MAX_ENUM,              "VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM"),
 +      };
 +      return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 +}
 +
 +tcu::Format::Bitfield<32> getDescriptorSetLayoutCreateFlagsStr (VkDescriptorSetLayoutCreateFlags value)
 +{
 +      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_FLAG_BITS_MAX_ENUM,                        "VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM"),
 +      };
 +      return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 +}
 +
 +tcu::Format::Bitfield<32> getAttachmentDescriptionFlagsStr (VkAttachmentDescriptionFlags value)
 +{
 +      static const tcu::Format::BitDesc s_desc[] =
 +      {
 +              tcu::Format::BitDesc(VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT,           "VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT"),
 +              tcu::Format::BitDesc(VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM,      "VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM"),
 +      };
 +      return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 +}
 +
 +tcu::Format::Bitfield<32> getDependencyFlagsStr (VkDependencyFlags value)
 +{
 +      static const tcu::Format::BitDesc s_desc[] =
 +      {
 +              tcu::Format::BitDesc(VK_DEPENDENCY_BY_REGION_BIT,               "VK_DEPENDENCY_BY_REGION_BIT"),
 +              tcu::Format::BitDesc(VK_DEPENDENCY_DEVICE_GROUP_BIT,    "VK_DEPENDENCY_DEVICE_GROUP_BIT"),
 +              tcu::Format::BitDesc(VK_DEPENDENCY_VIEW_LOCAL_BIT,              "VK_DEPENDENCY_VIEW_LOCAL_BIT"),
 +              tcu::Format::BitDesc(VK_DEPENDENCY_FLAG_BITS_MAX_ENUM,  "VK_DEPENDENCY_FLAG_BITS_MAX_ENUM"),
 +      };
 +      return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 +}
 +
 +tcu::Format::Bitfield<32> getFramebufferCreateFlagsStr (VkFramebufferCreateFlags value)
 +{
 +      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_FLAG_BITS_MAX_ENUM,  "VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM"),
 +      };
 +      return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 +}
 +
 +tcu::Format::Bitfield<32> getRenderPassCreateFlagsStr (VkRenderPassCreateFlags value)
 +{
 +      static const tcu::Format::BitDesc s_desc[] =
 +      {
 +              tcu::Format::BitDesc(VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM,  "VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM"),
 +      };
 +      return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 +}
 +
 +tcu::Format::Bitfield<32> getSubpassDescriptionFlagsStr (VkSubpassDescriptionFlags value)
 +{
 +      static const tcu::Format::BitDesc s_desc[] =
 +      {
 +              tcu::Format::BitDesc(VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM, "VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM"),
 +      };
 +      return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 +}
 +
 +tcu::Format::Bitfield<32> getCommandPoolCreateFlagsStr (VkCommandPoolCreateFlags value)
 +{
 +      static const tcu::Format::BitDesc s_desc[] =
 +      {
 +              tcu::Format::BitDesc(VK_COMMAND_POOL_CREATE_TRANSIENT_BIT,                              "VK_COMMAND_POOL_CREATE_TRANSIENT_BIT"),
 +              tcu::Format::BitDesc(VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT,   "VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT"),
 +              tcu::Format::BitDesc(VK_COMMAND_POOL_CREATE_PROTECTED_BIT,                              "VK_COMMAND_POOL_CREATE_PROTECTED_BIT"),
 +              tcu::Format::BitDesc(VK_COMMAND_POOL_CREATE_FLAG_BITS_MAX_ENUM,                 "VK_COMMAND_POOL_CREATE_FLAG_BITS_MAX_ENUM"),
 +      };
 +      return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 +}
 +
 +tcu::Format::Bitfield<32> getCommandPoolResetFlagsStr (VkCommandPoolResetFlags value)
 +{
 +      static const tcu::Format::BitDesc s_desc[] =
 +      {
 +              tcu::Format::BitDesc(VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT,       "VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT"),
 +              tcu::Format::BitDesc(VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM,          "VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM"),
 +      };
 +      return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 +}
 +
 +tcu::Format::Bitfield<32> getCommandBufferUsageFlagsStr (VkCommandBufferUsageFlags value)
 +{
 +      static const tcu::Format::BitDesc s_desc[] =
 +      {
 +              tcu::Format::BitDesc(VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT,               "VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT"),
 +              tcu::Format::BitDesc(VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT,  "VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT"),
 +              tcu::Format::BitDesc(VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT,              "VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT"),
 +              tcu::Format::BitDesc(VK_COMMAND_BUFFER_USAGE_FLAG_BITS_MAX_ENUM,                "VK_COMMAND_BUFFER_USAGE_FLAG_BITS_MAX_ENUM"),
 +      };
 +      return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 +}
 +
 +tcu::Format::Bitfield<32> getQueryControlFlagsStr (VkQueryControlFlags value)
 +{
 +      static const tcu::Format::BitDesc s_desc[] =
 +      {
 +              tcu::Format::BitDesc(VK_QUERY_CONTROL_PRECISE_BIT,                      "VK_QUERY_CONTROL_PRECISE_BIT"),
 +              tcu::Format::BitDesc(VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM,       "VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM"),
 +      };
 +      return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 +}
 +
 +tcu::Format::Bitfield<32> getCommandBufferResetFlagsStr (VkCommandBufferResetFlags value)
 +{
 +      static const tcu::Format::BitDesc s_desc[] =
 +      {
 +              tcu::Format::BitDesc(VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT,     "VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT"),
 +              tcu::Format::BitDesc(VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM,        "VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM"),
 +      };
 +      return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 +}
 +
 +tcu::Format::Bitfield<32> getStencilFaceFlagsStr (VkStencilFaceFlags value)
 +{
 +      static const tcu::Format::BitDesc s_desc[] =
 +      {
 +              tcu::Format::BitDesc(VK_STENCIL_FACE_FRONT_BIT,                         "VK_STENCIL_FACE_FRONT_BIT"),
 +              tcu::Format::BitDesc(VK_STENCIL_FACE_BACK_BIT,                          "VK_STENCIL_FACE_BACK_BIT"),
 +              tcu::Format::BitDesc(VK_STENCIL_FACE_FRONT_AND_BACK,            "VK_STENCIL_FACE_FRONT_AND_BACK"),
 +              tcu::Format::BitDesc(VK_STENCIL_FRONT_AND_BACK,                         "VK_STENCIL_FRONT_AND_BACK"),
 +              tcu::Format::BitDesc(VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM,        "VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM"),
 +      };
 +      return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 +}
 +
 +tcu::Format::Bitfield<32> getSubgroupFeatureFlagsStr (VkSubgroupFeatureFlags value)
 +{
 +      static const tcu::Format::BitDesc s_desc[] =
 +      {
 +              tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_BASIC_BIT,                             "VK_SUBGROUP_FEATURE_BASIC_BIT"),
 +              tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_VOTE_BIT,                              "VK_SUBGROUP_FEATURE_VOTE_BIT"),
 +              tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_ARITHMETIC_BIT,                "VK_SUBGROUP_FEATURE_ARITHMETIC_BIT"),
 +              tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_BALLOT_BIT,                    "VK_SUBGROUP_FEATURE_BALLOT_BIT"),
 +              tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_SHUFFLE_BIT,                   "VK_SUBGROUP_FEATURE_SHUFFLE_BIT"),
 +              tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT,  "VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT"),
 +              tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_CLUSTERED_BIT,                 "VK_SUBGROUP_FEATURE_CLUSTERED_BIT"),
 +              tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_QUAD_BIT,                              "VK_SUBGROUP_FEATURE_QUAD_BIT"),
 +              tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM,    "VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM"),
 +      };
 +      return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 +}
 +
 +tcu::Format::Bitfield<32> getPeerMemoryFeatureFlagsStr (VkPeerMemoryFeatureFlags value)
 +{
 +      static const tcu::Format::BitDesc s_desc[] =
 +      {
 +              tcu::Format::BitDesc(VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT,               "VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT"),
 +              tcu::Format::BitDesc(VK_PEER_MEMORY_FEATURE_COPY_DST_BIT,               "VK_PEER_MEMORY_FEATURE_COPY_DST_BIT"),
 +              tcu::Format::BitDesc(VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT,    "VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT"),
 +              tcu::Format::BitDesc(VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT,    "VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT"),
 +              tcu::Format::BitDesc(VK_PEER_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM, "VK_PEER_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM"),
 +      };
 +      return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 +}
 +
 +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_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_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));
 +}
 +
 +tcu::Format::Bitfield<32> getExternalMemoryHandleTypeFlagsStr (VkExternalMemoryHandleTypeFlags value)
 +{
 +      static const tcu::Format::BitDesc s_desc[] =
 +      {
 +              tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT,                                              "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT"),
 +              tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT,                                   "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT"),
 +              tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,                               "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"),
 +              tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT,                                  "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT"),
 +              tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT,                              "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT"),
 +              tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT,                                             "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT"),
 +              tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT,                                 "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT"),
 +              tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT,                                    "VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT"),
 +              tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT,                    "VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT"),
 +              tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT, "VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT"),
 +              tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM,                                 "VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM"),
 +      };
 +      return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 +}
 +
 +tcu::Format::Bitfield<32> getExternalMemoryFeatureFlagsStr (VkExternalMemoryFeatureFlags value)
 +{
 +      static const tcu::Format::BitDesc s_desc[] =
 +      {
 +              tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT,     "VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT"),
 +              tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT,         "VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT"),
 +              tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT,         "VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT"),
 +              tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM,     "VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM"),
 +      };
 +      return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 +}
 +
 +tcu::Format::Bitfield<32> getExternalFenceHandleTypeFlagsStr (VkExternalFenceHandleTypeFlags value)
 +{
 +      static const tcu::Format::BitDesc s_desc[] =
 +      {
 +              tcu::Format::BitDesc(VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT,                       "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT"),
 +              tcu::Format::BitDesc(VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT,            "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT"),
 +              tcu::Format::BitDesc(VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,        "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"),
 +              tcu::Format::BitDesc(VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT,                         "VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT"),
 +              tcu::Format::BitDesc(VK_EXTERNAL_FENCE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM,          "VK_EXTERNAL_FENCE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM"),
 +      };
 +      return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 +}
 +
 +tcu::Format::Bitfield<32> getExternalFenceFeatureFlagsStr (VkExternalFenceFeatureFlags value)
 +{
 +      static const tcu::Format::BitDesc s_desc[] =
 +      {
 +              tcu::Format::BitDesc(VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT,          "VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT"),
 +              tcu::Format::BitDesc(VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT,          "VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT"),
 +              tcu::Format::BitDesc(VK_EXTERNAL_FENCE_FEATURE_FLAG_BITS_MAX_ENUM,      "VK_EXTERNAL_FENCE_FEATURE_FLAG_BITS_MAX_ENUM"),
 +      };
 +      return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 +}
 +
 +tcu::Format::Bitfield<32> getFenceImportFlagsStr (VkFenceImportFlags value)
 +{
 +      static const tcu::Format::BitDesc s_desc[] =
 +      {
 +              tcu::Format::BitDesc(VK_FENCE_IMPORT_TEMPORARY_BIT,                     "VK_FENCE_IMPORT_TEMPORARY_BIT"),
 +              tcu::Format::BitDesc(VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM,        "VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM"),
 +      };
 +      return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 +}
 +
 +tcu::Format::Bitfield<32> getSemaphoreImportFlagsStr (VkSemaphoreImportFlags value)
 +{
 +      static const tcu::Format::BitDesc s_desc[] =
 +      {
 +              tcu::Format::BitDesc(VK_SEMAPHORE_IMPORT_TEMPORARY_BIT,                 "VK_SEMAPHORE_IMPORT_TEMPORARY_BIT"),
 +              tcu::Format::BitDesc(VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM,    "VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM"),
 +      };
 +      return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 +}
 +
 +tcu::Format::Bitfield<32> getExternalSemaphoreHandleTypeFlagsStr (VkExternalSemaphoreHandleTypeFlags value)
 +{
 +      static const tcu::Format::BitDesc s_desc[] =
 +      {
 +              tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT,                   "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT"),
 +              tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT,                "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT"),
 +              tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,    "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"),
 +              tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT,                 "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT"),
 +              tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT,                             "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT"),
 +              tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE_BIT,                 "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE_BIT"),
 +              tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM,              "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM"),
 +      };
 +      return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 +}
 +
 +tcu::Format::Bitfield<32> getExternalSemaphoreFeatureFlagsStr (VkExternalSemaphoreFeatureFlags value)
 +{
 +      static const tcu::Format::BitDesc s_desc[] =
 +      {
 +              tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT,              "VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT"),
 +              tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT,              "VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT"),
 +              tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_FEATURE_FLAG_BITS_MAX_ENUM,  "VK_EXTERNAL_SEMAPHORE_FEATURE_FLAG_BITS_MAX_ENUM"),
 +      };
 +      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_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_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_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[] =
 +      {
 +              tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR,                                             "VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR"),
 +              tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR,                                    "VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR"),
 +              tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR,                                   "VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR"),
 +              tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR,                                   "VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR"),
 +              tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR,                    "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR"),
 +              tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR,  "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR"),
 +              tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR, "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR"),
 +              tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR, "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR"),
 +              tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR,                                              "VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR"),
 +              tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_FLAG_BITS_MAX_ENUM_KHR,                               "VK_SURFACE_TRANSFORM_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> getCompositeAlphaFlagsKHRStr (VkCompositeAlphaFlagsKHR value)
 +{
 +      static const tcu::Format::BitDesc s_desc[] =
 +      {
 +              tcu::Format::BitDesc(VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR,                         "VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR"),
 +              tcu::Format::BitDesc(VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR,         "VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR"),
 +              tcu::Format::BitDesc(VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR,        "VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR"),
 +              tcu::Format::BitDesc(VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR,                        "VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR"),
 +              tcu::Format::BitDesc(VK_COMPOSITE_ALPHA_FLAG_BITS_MAX_ENUM_KHR,         "VK_COMPOSITE_ALPHA_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> getSwapchainCreateFlagsKHRStr (VkSwapchainCreateFlagsKHR value)
 +{
 +      static const tcu::Format::BitDesc s_desc[] =
 +      {
 +              tcu::Format::BitDesc(VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR,   "VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR"),
 +              tcu::Format::BitDesc(VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR,                                             "VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR"),
 +              tcu::Format::BitDesc(VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR,                                "VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR"),
 +              tcu::Format::BitDesc(VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR,                                "VK_SWAPCHAIN_CREATE_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> getDeviceGroupPresentModeFlagsKHRStr (VkDeviceGroupPresentModeFlagsKHR value)
 +{
 +      static const tcu::Format::BitDesc s_desc[] =
 +      {
 +              tcu::Format::BitDesc(VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR,                                "VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR"),
 +              tcu::Format::BitDesc(VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR,                               "VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR"),
 +              tcu::Format::BitDesc(VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR,                                  "VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR"),
 +              tcu::Format::BitDesc(VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR,   "VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR"),
 +              tcu::Format::BitDesc(VK_DEVICE_GROUP_PRESENT_MODE_FLAG_BITS_MAX_ENUM_KHR,               "VK_DEVICE_GROUP_PRESENT_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> getDisplayPlaneAlphaFlagsKHRStr (VkDisplayPlaneAlphaFlagsKHR value)
 +{
 +      static const tcu::Format::BitDesc s_desc[] =
 +      {
 +              tcu::Format::BitDesc(VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR,                                             "VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR"),
 +              tcu::Format::BitDesc(VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR,                                             "VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR"),
 +              tcu::Format::BitDesc(VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR,                                  "VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR"),
 +              tcu::Format::BitDesc(VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR,    "VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR"),
 +              tcu::Format::BitDesc(VK_DISPLAY_PLANE_ALPHA_FLAG_BITS_MAX_ENUM_KHR,                             "VK_DISPLAY_PLANE_ALPHA_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> getPerformanceCounterDescriptionFlagsKHRStr (VkPerformanceCounterDescriptionFlagsKHR value)
++{
++      static const tcu::Format::BitDesc s_desc[] =
++      {
++              tcu::Format::BitDesc(VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR,  "VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR"),
++              tcu::Format::BitDesc(VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR,  "VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR"),
++              tcu::Format::BitDesc(VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR,              "VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR"),
++              tcu::Format::BitDesc(VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR,              "VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR"),
++              tcu::Format::BitDesc(VK_PERFORMANCE_COUNTER_DESCRIPTION_FLAG_BITS_MAX_ENUM_KHR,                 "VK_PERFORMANCE_COUNTER_DESCRIPTION_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> getAcquireProfilingLockFlagsKHRStr (VkAcquireProfilingLockFlagsKHR value)
++{
++      static const tcu::Format::BitDesc s_desc[] =
++      {
++              tcu::Format::BitDesc(VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR,  "VK_ACQUIRE_PROFILING_LOCK_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> getRefreshObjectFlagsKHRStr (VkRefreshObjectFlagsKHR value)
 +{
 +      static const tcu::Format::BitDesc s_desc[] =
 +      {
 +              tcu::Format::BitDesc(VK_REFRESH_OBJECT_FLAG_BITS_MAX_ENUM_KHR,  "VK_REFRESH_OBJECT_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> getSubmitFlagsKHRStr (VkSubmitFlagsKHR value)
++{
++      static const tcu::Format::BitDesc s_desc[] =
++      {
++              tcu::Format::BitDesc(VK_SUBMIT_PROTECTED_BIT_KHR,               "VK_SUBMIT_PROTECTED_BIT_KHR"),
++              tcu::Format::BitDesc(VK_SUBMIT_FLAG_BITS_MAX_ENUM_KHR,  "VK_SUBMIT_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> getSurfaceCounterFlagsEXTStr (VkSurfaceCounterFlagsEXT value)
 +{
 +      static const tcu::Format::BitDesc s_desc[] =
 +      {
 +              tcu::Format::BitDesc(VK_SURFACE_COUNTER_VBLANK_BIT_EXT,                 "VK_SURFACE_COUNTER_VBLANK_BIT_EXT"),
 +              tcu::Format::BitDesc(VK_SURFACE_COUNTER_VBLANK_EXT,                             "VK_SURFACE_COUNTER_VBLANK_EXT"),
 +              tcu::Format::BitDesc(VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT, "VK_SURFACE_COUNTER_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> getDebugUtilsMessageSeverityFlagsEXTStr (VkDebugUtilsMessageSeverityFlagsEXT value)
++{
++      static const tcu::Format::BitDesc s_desc[] =
++      {
++              tcu::Format::BitDesc(VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT,                   "VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT"),
++              tcu::Format::BitDesc(VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT,                              "VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT"),
++              tcu::Format::BitDesc(VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT,                   "VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT"),
++              tcu::Format::BitDesc(VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT,                             "VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT"),
++              tcu::Format::BitDesc(VK_DEBUG_UTILS_MESSAGE_SEVERITY_FLAG_BITS_MAX_ENUM_EXT,    "VK_DEBUG_UTILS_MESSAGE_SEVERITY_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> getDebugUtilsMessageTypeFlagsEXTStr (VkDebugUtilsMessageTypeFlagsEXT value)
++{
++      static const tcu::Format::BitDesc s_desc[] =
++      {
++              tcu::Format::BitDesc(VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT,                       "VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT"),
++              tcu::Format::BitDesc(VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT,            "VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT"),
++              tcu::Format::BitDesc(VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT,           "VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT"),
++              tcu::Format::BitDesc(VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT,        "VK_DEBUG_UTILS_MESSAGE_TYPE_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> getInstanceCreateFlagsStr (VkInstanceCreateFlags value)
 +{
 +      return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
 +}
 +
 +tcu::Format::Bitfield<32> getDeviceCreateFlagsStr (VkDeviceCreateFlags value)
 +{
 +      return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
 +}
 +
 +tcu::Format::Bitfield<32> getMemoryMapFlagsStr (VkMemoryMapFlags value)
 +{
 +      return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
 +}
 +
 +tcu::Format::Bitfield<32> getSemaphoreCreateFlagsStr (VkSemaphoreCreateFlags value)
 +{
 +      return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
 +}
 +
- std::ostream& operator<< (std::ostream& s, const VkSparseMemoryBind& value)
- {
-       s << "VkSparseMemoryBind = {\n";
-       s << "\tresourceOffset = " << value.resourceOffset << '\n';
-       s << "\tsize = " << value.size << '\n';
-       s << "\tmemory = " << value.memory << '\n';
-       s << "\tmemoryOffset = " << value.memoryOffset << '\n';
-       s << "\tflags = " << getSparseMemoryBindFlagsStr(value.flags) << '\n';
-       s << '}';
-       return s;
- }
- std::ostream& operator<< (std::ostream& s, const VkSparseBufferMemoryBindInfo& value)
- {
-       s << "VkSparseBufferMemoryBindInfo = {\n";
-       s << "\tbuffer = " << value.buffer << '\n';
-       s << "\tbindCount = " << value.bindCount << '\n';
-       s << "\tpBinds = " << value.pBinds << '\n';
-       s << '}';
-       return s;
- }
- std::ostream& operator<< (std::ostream& s, const VkSparseImageOpaqueMemoryBindInfo& value)
- {
-       s << "VkSparseImageOpaqueMemoryBindInfo = {\n";
-       s << "\timage = " << value.image << '\n';
-       s << "\tbindCount = " << value.bindCount << '\n';
-       s << "\tpBinds = " << value.pBinds << '\n';
-       s << '}';
-       return s;
- }
 +tcu::Format::Bitfield<32> getQueryPoolCreateFlagsStr (VkQueryPoolCreateFlags value)
 +{
 +      return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
 +}
 +
 +tcu::Format::Bitfield<32> getBufferViewCreateFlagsStr (VkBufferViewCreateFlags value)
 +{
 +      return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
 +}
 +
 +tcu::Format::Bitfield<32> getPipelineVertexInputStateCreateFlagsStr (VkPipelineVertexInputStateCreateFlags value)
 +{
 +      return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
 +}
 +
 +tcu::Format::Bitfield<32> getPipelineInputAssemblyStateCreateFlagsStr (VkPipelineInputAssemblyStateCreateFlags value)
 +{
 +      return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
 +}
 +
 +tcu::Format::Bitfield<32> getPipelineTessellationStateCreateFlagsStr (VkPipelineTessellationStateCreateFlags value)
 +{
 +      return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
 +}
 +
 +tcu::Format::Bitfield<32> getPipelineViewportStateCreateFlagsStr (VkPipelineViewportStateCreateFlags value)
 +{
 +      return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
 +}
 +
 +tcu::Format::Bitfield<32> getPipelineRasterizationStateCreateFlagsStr (VkPipelineRasterizationStateCreateFlags value)
 +{
 +      return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
 +}
 +
 +tcu::Format::Bitfield<32> getPipelineMultisampleStateCreateFlagsStr (VkPipelineMultisampleStateCreateFlags value)
 +{
 +      return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
 +}
 +
 +tcu::Format::Bitfield<32> getPipelineDepthStencilStateCreateFlagsStr (VkPipelineDepthStencilStateCreateFlags value)
 +{
 +      return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
 +}
 +
 +tcu::Format::Bitfield<32> getPipelineColorBlendStateCreateFlagsStr (VkPipelineColorBlendStateCreateFlags value)
 +{
 +      return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
 +}
 +
 +tcu::Format::Bitfield<32> getPipelineDynamicStateCreateFlagsStr (VkPipelineDynamicStateCreateFlags value)
 +{
 +      return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
 +}
 +
 +tcu::Format::Bitfield<32> getPipelineLayoutCreateFlagsStr (VkPipelineLayoutCreateFlags value)
 +{
 +      return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
 +}
 +
 +tcu::Format::Bitfield<32> getDescriptorPoolResetFlagsStr (VkDescriptorPoolResetFlags value)
 +{
 +      return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
 +}
 +
 +tcu::Format::Bitfield<32> getDisplayModeCreateFlagsKHRStr (VkDisplayModeCreateFlagsKHR value)
 +{
 +      return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
 +}
 +
 +tcu::Format::Bitfield<32> getDisplaySurfaceCreateFlagsKHRStr (VkDisplaySurfaceCreateFlagsKHR value)
 +{
 +      return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
 +}
 +
 +tcu::Format::Bitfield<32> getPipelineDiscardRectangleStateCreateFlagsEXTStr (VkPipelineDiscardRectangleStateCreateFlagsEXT value)
 +{
 +      return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
 +}
 +
 +tcu::Format::Bitfield<32> getPipelineRasterizationConservativeStateCreateFlagsEXTStr (VkPipelineRasterizationConservativeStateCreateFlagsEXT value)
 +{
 +      return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
 +}
 +
 +tcu::Format::Bitfield<32> getPipelineRasterizationDepthClipStateCreateFlagsEXTStr (VkPipelineRasterizationDepthClipStateCreateFlagsEXT value)
 +{
 +      return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
 +}
 +
++tcu::Format::Bitfield<32> getDebugUtilsMessengerCallbackDataFlagsEXTStr (VkDebugUtilsMessengerCallbackDataFlagsEXT value)
++{
++      return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
++}
++
++tcu::Format::Bitfield<32> getDebugUtilsMessengerCreateFlagsEXTStr (VkDebugUtilsMessengerCreateFlagsEXT value)
++{
++      return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
++}
++
 +tcu::Format::Bitfield<32> getHeadlessSurfaceCreateFlagsEXTStr (VkHeadlessSurfaceCreateFlagsEXT value)
 +{
 +      return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkExtent2D& value)
 +{
 +      s << "VkExtent2D = {\n";
 +      s << "\twidth = " << value.width << '\n';
 +      s << "\theight = " << value.height << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkExtent3D& value)
 +{
 +      s << "VkExtent3D = {\n";
 +      s << "\twidth = " << value.width << '\n';
 +      s << "\theight = " << value.height << '\n';
 +      s << "\tdepth = " << value.depth << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkOffset2D& value)
 +{
 +      s << "VkOffset2D = {\n";
 +      s << "\tx = " << value.x << '\n';
 +      s << "\ty = " << value.y << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkOffset3D& value)
 +{
 +      s << "VkOffset3D = {\n";
 +      s << "\tx = " << value.x << '\n';
 +      s << "\ty = " << value.y << '\n';
 +      s << "\tz = " << value.z << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkRect2D& value)
 +{
 +      s << "VkRect2D = {\n";
 +      s << "\toffset = " << value.offset << '\n';
 +      s << "\textent = " << value.extent << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkBaseInStructure& value)
 +{
 +      s << "VkBaseInStructure = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkBaseOutStructure& value)
 +{
 +      s << "VkBaseOutStructure = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkBufferMemoryBarrier& value)
 +{
 +      s << "VkBufferMemoryBarrier = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tsrcAccessMask = " << getAccessFlagsStr(value.srcAccessMask) << '\n';
 +      s << "\tdstAccessMask = " << getAccessFlagsStr(value.dstAccessMask) << '\n';
 +      s << "\tsrcQueueFamilyIndex = " << value.srcQueueFamilyIndex << '\n';
 +      s << "\tdstQueueFamilyIndex = " << value.dstQueueFamilyIndex << '\n';
 +      s << "\tbuffer = " << value.buffer << '\n';
 +      s << "\toffset = " << value.offset << '\n';
 +      s << "\tsize = " << value.size << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkDispatchIndirectCommand& value)
 +{
 +      s << "VkDispatchIndirectCommand = {\n";
 +      s << "\tx = " << value.x << '\n';
 +      s << "\ty = " << value.y << '\n';
 +      s << "\tz = " << value.z << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkDrawIndexedIndirectCommand& value)
 +{
 +      s << "VkDrawIndexedIndirectCommand = {\n";
 +      s << "\tindexCount = " << value.indexCount << '\n';
 +      s << "\tinstanceCount = " << value.instanceCount << '\n';
 +      s << "\tfirstIndex = " << value.firstIndex << '\n';
 +      s << "\tvertexOffset = " << value.vertexOffset << '\n';
 +      s << "\tfirstInstance = " << value.firstInstance << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkDrawIndirectCommand& value)
 +{
 +      s << "VkDrawIndirectCommand = {\n";
 +      s << "\tvertexCount = " << value.vertexCount << '\n';
 +      s << "\tinstanceCount = " << value.instanceCount << '\n';
 +      s << "\tfirstVertex = " << value.firstVertex << '\n';
 +      s << "\tfirstInstance = " << value.firstInstance << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkImageSubresourceRange& value)
 +{
 +      s << "VkImageSubresourceRange = {\n";
 +      s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
 +      s << "\tbaseMipLevel = " << value.baseMipLevel << '\n';
 +      s << "\tlevelCount = " << value.levelCount << '\n';
 +      s << "\tbaseArrayLayer = " << value.baseArrayLayer << '\n';
 +      s << "\tlayerCount = " << value.layerCount << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkImageMemoryBarrier& value)
 +{
 +      s << "VkImageMemoryBarrier = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tsrcAccessMask = " << getAccessFlagsStr(value.srcAccessMask) << '\n';
 +      s << "\tdstAccessMask = " << getAccessFlagsStr(value.dstAccessMask) << '\n';
 +      s << "\toldLayout = " << value.oldLayout << '\n';
 +      s << "\tnewLayout = " << value.newLayout << '\n';
 +      s << "\tsrcQueueFamilyIndex = " << value.srcQueueFamilyIndex << '\n';
 +      s << "\tdstQueueFamilyIndex = " << value.dstQueueFamilyIndex << '\n';
 +      s << "\timage = " << value.image << '\n';
 +      s << "\tsubresourceRange = " << value.subresourceRange << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkMemoryBarrier& value)
 +{
 +      s << "VkMemoryBarrier = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tsrcAccessMask = " << getAccessFlagsStr(value.srcAccessMask) << '\n';
 +      s << "\tdstAccessMask = " << getAccessFlagsStr(value.dstAccessMask) << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkAllocationCallbacks& value)
 +{
 +      s << "VkAllocationCallbacks = {\n";
 +      s << "\tpUserData = " << value.pUserData << '\n';
 +      s << "\tpfnAllocation = " << value.pfnAllocation << '\n';
 +      s << "\tpfnReallocation = " << value.pfnReallocation << '\n';
 +      s << "\tpfnFree = " << value.pfnFree << '\n';
 +      s << "\tpfnInternalAllocation = " << value.pfnInternalAllocation << '\n';
 +      s << "\tpfnInternalFree = " << value.pfnInternalFree << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkApplicationInfo& value)
 +{
 +      s << "VkApplicationInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tpApplicationName = " << getCharPtrStr(value.pApplicationName) << '\n';
 +      s << "\tapplicationVersion = " << value.applicationVersion << '\n';
 +      s << "\tpEngineName = " << getCharPtrStr(value.pEngineName) << '\n';
 +      s << "\tengineVersion = " << value.engineVersion << '\n';
 +      s << "\tapiVersion = " << value.apiVersion << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkFormatProperties& value)
 +{
 +      s << "VkFormatProperties = {\n";
 +      s << "\tlinearTilingFeatures = " << getFormatFeatureFlagsStr(value.linearTilingFeatures) << '\n';
 +      s << "\toptimalTilingFeatures = " << getFormatFeatureFlagsStr(value.optimalTilingFeatures) << '\n';
 +      s << "\tbufferFeatures = " << getFormatFeatureFlagsStr(value.bufferFeatures) << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkImageFormatProperties& value)
 +{
 +      s << "VkImageFormatProperties = {\n";
 +      s << "\tmaxExtent = " << value.maxExtent << '\n';
 +      s << "\tmaxMipLevels = " << value.maxMipLevels << '\n';
 +      s << "\tmaxArrayLayers = " << value.maxArrayLayers << '\n';
 +      s << "\tsampleCounts = " << getSampleCountFlagsStr(value.sampleCounts) << '\n';
 +      s << "\tmaxResourceSize = " << value.maxResourceSize << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkInstanceCreateInfo& value)
 +{
 +      s << "VkInstanceCreateInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tflags = " << getInstanceCreateFlagsStr(value.flags) << '\n';
 +      s << "\tpApplicationInfo = " << value.pApplicationInfo << '\n';
 +      s << "\tenabledLayerCount = " << value.enabledLayerCount << '\n';
 +      s << "\tppEnabledLayerNames = " << value.ppEnabledLayerNames << '\n';
 +      s << "\tenabledExtensionCount = " << value.enabledExtensionCount << '\n';
 +      s << "\tppEnabledExtensionNames = " << value.ppEnabledExtensionNames << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkMemoryHeap& value)
 +{
 +      s << "VkMemoryHeap = {\n";
 +      s << "\tsize = " << value.size << '\n';
 +      s << "\tflags = " << getMemoryHeapFlagsStr(value.flags) << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkMemoryType& value)
 +{
 +      s << "VkMemoryType = {\n";
 +      s << "\tpropertyFlags = " << getMemoryPropertyFlagsStr(value.propertyFlags) << '\n';
 +      s << "\theapIndex = " << value.heapIndex << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFeatures& value)
 +{
 +      s << "VkPhysicalDeviceFeatures = {\n";
 +      s << "\trobustBufferAccess = " << value.robustBufferAccess << '\n';
 +      s << "\tfullDrawIndexUint32 = " << value.fullDrawIndexUint32 << '\n';
 +      s << "\timageCubeArray = " << value.imageCubeArray << '\n';
 +      s << "\tindependentBlend = " << value.independentBlend << '\n';
 +      s << "\tgeometryShader = " << value.geometryShader << '\n';
 +      s << "\ttessellationShader = " << value.tessellationShader << '\n';
 +      s << "\tsampleRateShading = " << value.sampleRateShading << '\n';
 +      s << "\tdualSrcBlend = " << value.dualSrcBlend << '\n';
 +      s << "\tlogicOp = " << value.logicOp << '\n';
 +      s << "\tmultiDrawIndirect = " << value.multiDrawIndirect << '\n';
 +      s << "\tdrawIndirectFirstInstance = " << value.drawIndirectFirstInstance << '\n';
 +      s << "\tdepthClamp = " << value.depthClamp << '\n';
 +      s << "\tdepthBiasClamp = " << value.depthBiasClamp << '\n';
 +      s << "\tfillModeNonSolid = " << value.fillModeNonSolid << '\n';
 +      s << "\tdepthBounds = " << value.depthBounds << '\n';
 +      s << "\twideLines = " << value.wideLines << '\n';
 +      s << "\tlargePoints = " << value.largePoints << '\n';
 +      s << "\talphaToOne = " << value.alphaToOne << '\n';
 +      s << "\tmultiViewport = " << value.multiViewport << '\n';
 +      s << "\tsamplerAnisotropy = " << value.samplerAnisotropy << '\n';
 +      s << "\ttextureCompressionETC2 = " << value.textureCompressionETC2 << '\n';
 +      s << "\ttextureCompressionASTC_LDR = " << value.textureCompressionASTC_LDR << '\n';
 +      s << "\ttextureCompressionBC = " << value.textureCompressionBC << '\n';
 +      s << "\tocclusionQueryPrecise = " << value.occlusionQueryPrecise << '\n';
 +      s << "\tpipelineStatisticsQuery = " << value.pipelineStatisticsQuery << '\n';
 +      s << "\tvertexPipelineStoresAndAtomics = " << value.vertexPipelineStoresAndAtomics << '\n';
 +      s << "\tfragmentStoresAndAtomics = " << value.fragmentStoresAndAtomics << '\n';
 +      s << "\tshaderTessellationAndGeometryPointSize = " << value.shaderTessellationAndGeometryPointSize << '\n';
 +      s << "\tshaderImageGatherExtended = " << value.shaderImageGatherExtended << '\n';
 +      s << "\tshaderStorageImageExtendedFormats = " << value.shaderStorageImageExtendedFormats << '\n';
 +      s << "\tshaderStorageImageMultisample = " << value.shaderStorageImageMultisample << '\n';
 +      s << "\tshaderStorageImageReadWithoutFormat = " << value.shaderStorageImageReadWithoutFormat << '\n';
 +      s << "\tshaderStorageImageWriteWithoutFormat = " << value.shaderStorageImageWriteWithoutFormat << '\n';
 +      s << "\tshaderUniformBufferArrayDynamicIndexing = " << value.shaderUniformBufferArrayDynamicIndexing << '\n';
 +      s << "\tshaderSampledImageArrayDynamicIndexing = " << value.shaderSampledImageArrayDynamicIndexing << '\n';
 +      s << "\tshaderStorageBufferArrayDynamicIndexing = " << value.shaderStorageBufferArrayDynamicIndexing << '\n';
 +      s << "\tshaderStorageImageArrayDynamicIndexing = " << value.shaderStorageImageArrayDynamicIndexing << '\n';
 +      s << "\tshaderClipDistance = " << value.shaderClipDistance << '\n';
 +      s << "\tshaderCullDistance = " << value.shaderCullDistance << '\n';
 +      s << "\tshaderFloat64 = " << value.shaderFloat64 << '\n';
 +      s << "\tshaderInt64 = " << value.shaderInt64 << '\n';
 +      s << "\tshaderInt16 = " << value.shaderInt16 << '\n';
 +      s << "\tshaderResourceResidency = " << value.shaderResourceResidency << '\n';
 +      s << "\tshaderResourceMinLod = " << value.shaderResourceMinLod << '\n';
 +      s << "\tsparseBinding = " << value.sparseBinding << '\n';
 +      s << "\tsparseResidencyBuffer = " << value.sparseResidencyBuffer << '\n';
 +      s << "\tsparseResidencyImage2D = " << value.sparseResidencyImage2D << '\n';
 +      s << "\tsparseResidencyImage3D = " << value.sparseResidencyImage3D << '\n';
 +      s << "\tsparseResidency2Samples = " << value.sparseResidency2Samples << '\n';
 +      s << "\tsparseResidency4Samples = " << value.sparseResidency4Samples << '\n';
 +      s << "\tsparseResidency8Samples = " << value.sparseResidency8Samples << '\n';
 +      s << "\tsparseResidency16Samples = " << value.sparseResidency16Samples << '\n';
 +      s << "\tsparseResidencyAliased = " << value.sparseResidencyAliased << '\n';
 +      s << "\tvariableMultisampleRate = " << value.variableMultisampleRate << '\n';
 +      s << "\tinheritedQueries = " << value.inheritedQueries << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceLimits& value)
 +{
 +      s << "VkPhysicalDeviceLimits = {\n";
 +      s << "\tmaxImageDimension1D = " << value.maxImageDimension1D << '\n';
 +      s << "\tmaxImageDimension2D = " << value.maxImageDimension2D << '\n';
 +      s << "\tmaxImageDimension3D = " << value.maxImageDimension3D << '\n';
 +      s << "\tmaxImageDimensionCube = " << value.maxImageDimensionCube << '\n';
 +      s << "\tmaxImageArrayLayers = " << value.maxImageArrayLayers << '\n';
 +      s << "\tmaxTexelBufferElements = " << value.maxTexelBufferElements << '\n';
 +      s << "\tmaxUniformBufferRange = " << value.maxUniformBufferRange << '\n';
 +      s << "\tmaxStorageBufferRange = " << value.maxStorageBufferRange << '\n';
 +      s << "\tmaxPushConstantsSize = " << value.maxPushConstantsSize << '\n';
 +      s << "\tmaxMemoryAllocationCount = " << value.maxMemoryAllocationCount << '\n';
 +      s << "\tmaxSamplerAllocationCount = " << value.maxSamplerAllocationCount << '\n';
 +      s << "\tbufferImageGranularity = " << value.bufferImageGranularity << '\n';
 +      s << "\tsparseAddressSpaceSize = " << value.sparseAddressSpaceSize << '\n';
 +      s << "\tmaxBoundDescriptorSets = " << value.maxBoundDescriptorSets << '\n';
 +      s << "\tmaxPerStageDescriptorSamplers = " << value.maxPerStageDescriptorSamplers << '\n';
 +      s << "\tmaxPerStageDescriptorUniformBuffers = " << value.maxPerStageDescriptorUniformBuffers << '\n';
 +      s << "\tmaxPerStageDescriptorStorageBuffers = " << value.maxPerStageDescriptorStorageBuffers << '\n';
 +      s << "\tmaxPerStageDescriptorSampledImages = " << value.maxPerStageDescriptorSampledImages << '\n';
 +      s << "\tmaxPerStageDescriptorStorageImages = " << value.maxPerStageDescriptorStorageImages << '\n';
 +      s << "\tmaxPerStageDescriptorInputAttachments = " << value.maxPerStageDescriptorInputAttachments << '\n';
 +      s << "\tmaxPerStageResources = " << value.maxPerStageResources << '\n';
 +      s << "\tmaxDescriptorSetSamplers = " << value.maxDescriptorSetSamplers << '\n';
 +      s << "\tmaxDescriptorSetUniformBuffers = " << value.maxDescriptorSetUniformBuffers << '\n';
 +      s << "\tmaxDescriptorSetUniformBuffersDynamic = " << value.maxDescriptorSetUniformBuffersDynamic << '\n';
 +      s << "\tmaxDescriptorSetStorageBuffers = " << value.maxDescriptorSetStorageBuffers << '\n';
 +      s << "\tmaxDescriptorSetStorageBuffersDynamic = " << value.maxDescriptorSetStorageBuffersDynamic << '\n';
 +      s << "\tmaxDescriptorSetSampledImages = " << value.maxDescriptorSetSampledImages << '\n';
 +      s << "\tmaxDescriptorSetStorageImages = " << value.maxDescriptorSetStorageImages << '\n';
 +      s << "\tmaxDescriptorSetInputAttachments = " << value.maxDescriptorSetInputAttachments << '\n';
 +      s << "\tmaxVertexInputAttributes = " << value.maxVertexInputAttributes << '\n';
 +      s << "\tmaxVertexInputBindings = " << value.maxVertexInputBindings << '\n';
 +      s << "\tmaxVertexInputAttributeOffset = " << value.maxVertexInputAttributeOffset << '\n';
 +      s << "\tmaxVertexInputBindingStride = " << value.maxVertexInputBindingStride << '\n';
 +      s << "\tmaxVertexOutputComponents = " << value.maxVertexOutputComponents << '\n';
 +      s << "\tmaxTessellationGenerationLevel = " << value.maxTessellationGenerationLevel << '\n';
 +      s << "\tmaxTessellationPatchSize = " << value.maxTessellationPatchSize << '\n';
 +      s << "\tmaxTessellationControlPerVertexInputComponents = " << value.maxTessellationControlPerVertexInputComponents << '\n';
 +      s << "\tmaxTessellationControlPerVertexOutputComponents = " << value.maxTessellationControlPerVertexOutputComponents << '\n';
 +      s << "\tmaxTessellationControlPerPatchOutputComponents = " << value.maxTessellationControlPerPatchOutputComponents << '\n';
 +      s << "\tmaxTessellationControlTotalOutputComponents = " << value.maxTessellationControlTotalOutputComponents << '\n';
 +      s << "\tmaxTessellationEvaluationInputComponents = " << value.maxTessellationEvaluationInputComponents << '\n';
 +      s << "\tmaxTessellationEvaluationOutputComponents = " << value.maxTessellationEvaluationOutputComponents << '\n';
 +      s << "\tmaxGeometryShaderInvocations = " << value.maxGeometryShaderInvocations << '\n';
 +      s << "\tmaxGeometryInputComponents = " << value.maxGeometryInputComponents << '\n';
 +      s << "\tmaxGeometryOutputComponents = " << value.maxGeometryOutputComponents << '\n';
 +      s << "\tmaxGeometryOutputVertices = " << value.maxGeometryOutputVertices << '\n';
 +      s << "\tmaxGeometryTotalOutputComponents = " << value.maxGeometryTotalOutputComponents << '\n';
 +      s << "\tmaxFragmentInputComponents = " << value.maxFragmentInputComponents << '\n';
 +      s << "\tmaxFragmentOutputAttachments = " << value.maxFragmentOutputAttachments << '\n';
 +      s << "\tmaxFragmentDualSrcAttachments = " << value.maxFragmentDualSrcAttachments << '\n';
 +      s << "\tmaxFragmentCombinedOutputResources = " << value.maxFragmentCombinedOutputResources << '\n';
 +      s << "\tmaxComputeSharedMemorySize = " << value.maxComputeSharedMemorySize << '\n';
 +      s << "\tmaxComputeWorkGroupCount = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.maxComputeWorkGroupCount), DE_ARRAY_END(value.maxComputeWorkGroupCount)) << '\n';
 +      s << "\tmaxComputeWorkGroupInvocations = " << value.maxComputeWorkGroupInvocations << '\n';
 +      s << "\tmaxComputeWorkGroupSize = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.maxComputeWorkGroupSize), DE_ARRAY_END(value.maxComputeWorkGroupSize)) << '\n';
 +      s << "\tsubPixelPrecisionBits = " << value.subPixelPrecisionBits << '\n';
 +      s << "\tsubTexelPrecisionBits = " << value.subTexelPrecisionBits << '\n';
 +      s << "\tmipmapPrecisionBits = " << value.mipmapPrecisionBits << '\n';
 +      s << "\tmaxDrawIndexedIndexValue = " << value.maxDrawIndexedIndexValue << '\n';
 +      s << "\tmaxDrawIndirectCount = " << value.maxDrawIndirectCount << '\n';
 +      s << "\tmaxSamplerLodBias = " << value.maxSamplerLodBias << '\n';
 +      s << "\tmaxSamplerAnisotropy = " << value.maxSamplerAnisotropy << '\n';
 +      s << "\tmaxViewports = " << value.maxViewports << '\n';
 +      s << "\tmaxViewportDimensions = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.maxViewportDimensions), DE_ARRAY_END(value.maxViewportDimensions)) << '\n';
 +      s << "\tviewportBoundsRange = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.viewportBoundsRange), DE_ARRAY_END(value.viewportBoundsRange)) << '\n';
 +      s << "\tviewportSubPixelBits = " << value.viewportSubPixelBits << '\n';
 +      s << "\tminMemoryMapAlignment = " << value.minMemoryMapAlignment << '\n';
 +      s << "\tminTexelBufferOffsetAlignment = " << value.minTexelBufferOffsetAlignment << '\n';
 +      s << "\tminUniformBufferOffsetAlignment = " << value.minUniformBufferOffsetAlignment << '\n';
 +      s << "\tminStorageBufferOffsetAlignment = " << value.minStorageBufferOffsetAlignment << '\n';
 +      s << "\tminTexelOffset = " << value.minTexelOffset << '\n';
 +      s << "\tmaxTexelOffset = " << value.maxTexelOffset << '\n';
 +      s << "\tminTexelGatherOffset = " << value.minTexelGatherOffset << '\n';
 +      s << "\tmaxTexelGatherOffset = " << value.maxTexelGatherOffset << '\n';
 +      s << "\tminInterpolationOffset = " << value.minInterpolationOffset << '\n';
 +      s << "\tmaxInterpolationOffset = " << value.maxInterpolationOffset << '\n';
 +      s << "\tsubPixelInterpolationOffsetBits = " << value.subPixelInterpolationOffsetBits << '\n';
 +      s << "\tmaxFramebufferWidth = " << value.maxFramebufferWidth << '\n';
 +      s << "\tmaxFramebufferHeight = " << value.maxFramebufferHeight << '\n';
 +      s << "\tmaxFramebufferLayers = " << value.maxFramebufferLayers << '\n';
 +      s << "\tframebufferColorSampleCounts = " << getSampleCountFlagsStr(value.framebufferColorSampleCounts) << '\n';
 +      s << "\tframebufferDepthSampleCounts = " << getSampleCountFlagsStr(value.framebufferDepthSampleCounts) << '\n';
 +      s << "\tframebufferStencilSampleCounts = " << getSampleCountFlagsStr(value.framebufferStencilSampleCounts) << '\n';
 +      s << "\tframebufferNoAttachmentsSampleCounts = " << getSampleCountFlagsStr(value.framebufferNoAttachmentsSampleCounts) << '\n';
 +      s << "\tmaxColorAttachments = " << value.maxColorAttachments << '\n';
 +      s << "\tsampledImageColorSampleCounts = " << getSampleCountFlagsStr(value.sampledImageColorSampleCounts) << '\n';
 +      s << "\tsampledImageIntegerSampleCounts = " << getSampleCountFlagsStr(value.sampledImageIntegerSampleCounts) << '\n';
 +      s << "\tsampledImageDepthSampleCounts = " << getSampleCountFlagsStr(value.sampledImageDepthSampleCounts) << '\n';
 +      s << "\tsampledImageStencilSampleCounts = " << getSampleCountFlagsStr(value.sampledImageStencilSampleCounts) << '\n';
 +      s << "\tstorageImageSampleCounts = " << getSampleCountFlagsStr(value.storageImageSampleCounts) << '\n';
 +      s << "\tmaxSampleMaskWords = " << value.maxSampleMaskWords << '\n';
 +      s << "\ttimestampComputeAndGraphics = " << value.timestampComputeAndGraphics << '\n';
 +      s << "\ttimestampPeriod = " << value.timestampPeriod << '\n';
 +      s << "\tmaxClipDistances = " << value.maxClipDistances << '\n';
 +      s << "\tmaxCullDistances = " << value.maxCullDistances << '\n';
 +      s << "\tmaxCombinedClipAndCullDistances = " << value.maxCombinedClipAndCullDistances << '\n';
 +      s << "\tdiscreteQueuePriorities = " << value.discreteQueuePriorities << '\n';
 +      s << "\tpointSizeRange = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.pointSizeRange), DE_ARRAY_END(value.pointSizeRange)) << '\n';
 +      s << "\tlineWidthRange = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.lineWidthRange), DE_ARRAY_END(value.lineWidthRange)) << '\n';
 +      s << "\tpointSizeGranularity = " << value.pointSizeGranularity << '\n';
 +      s << "\tlineWidthGranularity = " << value.lineWidthGranularity << '\n';
 +      s << "\tstrictLines = " << value.strictLines << '\n';
 +      s << "\tstandardSampleLocations = " << value.standardSampleLocations << '\n';
 +      s << "\toptimalBufferCopyOffsetAlignment = " << value.optimalBufferCopyOffsetAlignment << '\n';
 +      s << "\toptimalBufferCopyRowPitchAlignment = " << value.optimalBufferCopyRowPitchAlignment << '\n';
 +      s << "\tnonCoherentAtomSize = " << value.nonCoherentAtomSize << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMemoryProperties& value)
 +{
 +      s << "VkPhysicalDeviceMemoryProperties = {\n";
 +      s << "\tmemoryTypeCount = " << value.memoryTypeCount << '\n';
 +      s << "\tmemoryTypes = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.memoryTypes), DE_ARRAY_BEGIN(value.memoryTypes) + value.memoryTypeCount) << '\n';
 +      s << "\tmemoryHeapCount = " << value.memoryHeapCount << '\n';
 +      s << "\tmemoryHeaps = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.memoryHeaps), DE_ARRAY_BEGIN(value.memoryHeaps) + value.memoryHeapCount) << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSparseProperties& value)
 +{
 +      s << "VkPhysicalDeviceSparseProperties = {\n";
 +      s << "\tresidencyStandard2DBlockShape = " << value.residencyStandard2DBlockShape << '\n';
 +      s << "\tresidencyStandard2DMultisampleBlockShape = " << value.residencyStandard2DMultisampleBlockShape << '\n';
 +      s << "\tresidencyStandard3DBlockShape = " << value.residencyStandard3DBlockShape << '\n';
 +      s << "\tresidencyAlignedMipSize = " << value.residencyAlignedMipSize << '\n';
 +      s << "\tresidencyNonResidentStrict = " << value.residencyNonResidentStrict << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceProperties& value)
 +{
 +      s << "VkPhysicalDeviceProperties = {\n";
 +      s << "\tapiVersion = " << value.apiVersion << '\n';
 +      s << "\tdriverVersion = " << value.driverVersion << '\n';
 +      s << "\tvendorID = " << value.vendorID << '\n';
 +      s << "\tdeviceID = " << value.deviceID << '\n';
 +      s << "\tdeviceType = " << value.deviceType << '\n';
 +      s << "\tdeviceName = " << (const char*)value.deviceName << '\n';
 +      s << "\tpipelineCacheUUID = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<deUint8>(DE_ARRAY_BEGIN(value.pipelineCacheUUID)), tcu::Format::HexIterator<deUint8>(DE_ARRAY_END(value.pipelineCacheUUID))) << '\n';
 +      s << "\tlimits = " << value.limits << '\n';
 +      s << "\tsparseProperties = " << value.sparseProperties << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkQueueFamilyProperties& value)
 +{
 +      s << "VkQueueFamilyProperties = {\n";
 +      s << "\tqueueFlags = " << getQueueFlagsStr(value.queueFlags) << '\n';
 +      s << "\tqueueCount = " << value.queueCount << '\n';
 +      s << "\ttimestampValidBits = " << value.timestampValidBits << '\n';
 +      s << "\tminImageTransferGranularity = " << value.minImageTransferGranularity << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkDeviceQueueCreateInfo& value)
 +{
 +      s << "VkDeviceQueueCreateInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tflags = " << getDeviceQueueCreateFlagsStr(value.flags) << '\n';
 +      s << "\tqueueFamilyIndex = " << value.queueFamilyIndex << '\n';
 +      s << "\tqueueCount = " << value.queueCount << '\n';
 +      s << "\tpQueuePriorities = " << value.pQueuePriorities << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkDeviceCreateInfo& value)
 +{
 +      s << "VkDeviceCreateInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tflags = " << getDeviceCreateFlagsStr(value.flags) << '\n';
 +      s << "\tqueueCreateInfoCount = " << value.queueCreateInfoCount << '\n';
 +      s << "\tpQueueCreateInfos = " << value.pQueueCreateInfos << '\n';
 +      s << "\tenabledLayerCount = " << value.enabledLayerCount << '\n';
 +      s << "\tppEnabledLayerNames = " << value.ppEnabledLayerNames << '\n';
 +      s << "\tenabledExtensionCount = " << value.enabledExtensionCount << '\n';
 +      s << "\tppEnabledExtensionNames = " << value.ppEnabledExtensionNames << '\n';
 +      s << "\tpEnabledFeatures = " << value.pEnabledFeatures << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkExtensionProperties& value)
 +{
 +      s << "VkExtensionProperties = {\n";
 +      s << "\textensionName = " << (const char*)value.extensionName << '\n';
 +      s << "\tspecVersion = " << value.specVersion << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkLayerProperties& value)
 +{
 +      s << "VkLayerProperties = {\n";
 +      s << "\tlayerName = " << (const char*)value.layerName << '\n';
 +      s << "\tspecVersion = " << value.specVersion << '\n';
 +      s << "\timplementationVersion = " << value.implementationVersion << '\n';
 +      s << "\tdescription = " << (const char*)value.description << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkSubmitInfo& value)
 +{
 +      s << "VkSubmitInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\twaitSemaphoreCount = " << value.waitSemaphoreCount << '\n';
 +      s << "\tpWaitSemaphores = " << value.pWaitSemaphores << '\n';
 +      s << "\tpWaitDstStageMask = " << value.pWaitDstStageMask << '\n';
 +      s << "\tcommandBufferCount = " << value.commandBufferCount << '\n';
 +      s << "\tpCommandBuffers = " << value.pCommandBuffers << '\n';
 +      s << "\tsignalSemaphoreCount = " << value.signalSemaphoreCount << '\n';
 +      s << "\tpSignalSemaphores = " << value.pSignalSemaphores << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkMappedMemoryRange& value)
 +{
 +      s << "VkMappedMemoryRange = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tmemory = " << value.memory << '\n';
 +      s << "\toffset = " << value.offset << '\n';
 +      s << "\tsize = " << value.size << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkMemoryAllocateInfo& value)
 +{
 +      s << "VkMemoryAllocateInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tallocationSize = " << value.allocationSize << '\n';
 +      s << "\tmemoryTypeIndex = " << value.memoryTypeIndex << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkMemoryRequirements& value)
 +{
 +      s << "VkMemoryRequirements = {\n";
 +      s << "\tsize = " << value.size << '\n';
 +      s << "\talignment = " << value.alignment << '\n';
 +      s << "\tmemoryTypeBits = " << value.memoryTypeBits << '\n';
 +      s << '}';
 +      return s;
 +}
 +
- std::ostream& operator<< (std::ostream& s, const VkSparseImageMemoryBind& value)
 +std::ostream& operator<< (std::ostream& s, const VkImageSubresource& value)
 +{
 +      s << "VkImageSubresource = {\n";
 +      s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
 +      s << "\tmipLevel = " << value.mipLevel << '\n';
 +      s << "\tarrayLayer = " << value.arrayLayer << '\n';
 +      s << '}';
 +      return s;
 +}
 +
-       s << "VkSparseImageMemoryBind = {\n";
-       s << "\tsubresource = " << value.subresource << '\n';
-       s << "\toffset = " << value.offset << '\n';
-       s << "\textent = " << value.extent << '\n';
-       s << "\tmemory = " << value.memory << '\n';
-       s << "\tmemoryOffset = " << value.memoryOffset << '\n';
-       s << "\tflags = " << getSparseMemoryBindFlagsStr(value.flags) << '\n';
++std::ostream& operator<< (std::ostream& s, const VkFenceCreateInfo& value)
 +{
- std::ostream& operator<< (std::ostream& s, const VkSparseImageMemoryBindInfo& value)
++      s << "VkFenceCreateInfo = {\n";
++      s << "\tsType = " << value.sType << '\n';
++      s << "\tpNext = " << value.pNext << '\n';
++      s << "\tflags = " << getFenceCreateFlagsStr(value.flags) << '\n';
 +      s << '}';
 +      return s;
 +}
 +
-       s << "VkSparseImageMemoryBindInfo = {\n";
-       s << "\timage = " << value.image << '\n';
-       s << "\tbindCount = " << value.bindCount << '\n';
-       s << "\tpBinds = " << value.pBinds << '\n';
++std::ostream& operator<< (std::ostream& s, const VkSemaphoreCreateInfo& value)
 +{
- std::ostream& operator<< (std::ostream& s, const VkBindSparseInfo& value)
++      s << "VkSemaphoreCreateInfo = {\n";
++      s << "\tsType = " << value.sType << '\n';
++      s << "\tpNext = " << value.pNext << '\n';
++      s << "\tflags = " << getSemaphoreCreateFlagsStr(value.flags) << '\n';
 +      s << '}';
 +      return s;
 +}
 +
-       s << "VkBindSparseInfo = {\n";
++std::ostream& operator<< (std::ostream& s, const VkEventCreateInfo& value)
 +{
-       s << "\twaitSemaphoreCount = " << value.waitSemaphoreCount << '\n';
-       s << "\tpWaitSemaphores = " << value.pWaitSemaphores << '\n';
-       s << "\tbufferBindCount = " << value.bufferBindCount << '\n';
-       s << "\tpBufferBinds = " << value.pBufferBinds << '\n';
-       s << "\timageOpaqueBindCount = " << value.imageOpaqueBindCount << '\n';
-       s << "\tpImageOpaqueBinds = " << value.pImageOpaqueBinds << '\n';
-       s << "\timageBindCount = " << value.imageBindCount << '\n';
-       s << "\tpImageBinds = " << value.pImageBinds << '\n';
-       s << "\tsignalSemaphoreCount = " << value.signalSemaphoreCount << '\n';
-       s << "\tpSignalSemaphores = " << value.pSignalSemaphores << '\n';
++      s << "VkEventCreateInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
- std::ostream& operator<< (std::ostream& s, const VkSparseImageFormatProperties& value)
++      s << "\tflags = " << getEventCreateFlagsStr(value.flags) << '\n';
 +      s << '}';
 +      return s;
 +}
 +
-       s << "VkSparseImageFormatProperties = {\n";
-       s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
-       s << "\timageGranularity = " << value.imageGranularity << '\n';
-       s << "\tflags = " << getSparseImageFormatFlagsStr(value.flags) << '\n';
++std::ostream& operator<< (std::ostream& s, const VkQueryPoolCreateInfo& value)
 +{
- std::ostream& operator<< (std::ostream& s, const VkSparseImageMemoryRequirements& value)
- {
-       s << "VkSparseImageMemoryRequirements = {\n";
-       s << "\tformatProperties = " << value.formatProperties << '\n';
-       s << "\timageMipTailFirstLod = " << value.imageMipTailFirstLod << '\n';
-       s << "\timageMipTailSize = " << value.imageMipTailSize << '\n';
-       s << "\timageMipTailOffset = " << value.imageMipTailOffset << '\n';
-       s << "\timageMipTailStride = " << value.imageMipTailStride << '\n';
-       s << '}';
-       return s;
- }
- std::ostream& operator<< (std::ostream& s, const VkFenceCreateInfo& value)
- {
-       s << "VkFenceCreateInfo = {\n";
-       s << "\tsType = " << value.sType << '\n';
-       s << "\tpNext = " << value.pNext << '\n';
-       s << "\tflags = " << getFenceCreateFlagsStr(value.flags) << '\n';
-       s << '}';
-       return s;
- }
- std::ostream& operator<< (std::ostream& s, const VkSemaphoreCreateInfo& value)
- {
-       s << "VkSemaphoreCreateInfo = {\n";
-       s << "\tsType = " << value.sType << '\n';
-       s << "\tpNext = " << value.pNext << '\n';
-       s << "\tflags = " << getSemaphoreCreateFlagsStr(value.flags) << '\n';
-       s << '}';
-       return s;
- }
- std::ostream& operator<< (std::ostream& s, const VkEventCreateInfo& value)
- {
-       s << "VkEventCreateInfo = {\n";
-       s << "\tsType = " << value.sType << '\n';
-       s << "\tpNext = " << value.pNext << '\n';
-       s << "\tflags = " << getEventCreateFlagsStr(value.flags) << '\n';
-       s << '}';
-       return s;
- }
- std::ostream& operator<< (std::ostream& s, const VkQueryPoolCreateInfo& value)
- {
-       s << "VkQueryPoolCreateInfo = {\n";
-       s << "\tsType = " << value.sType << '\n';
-       s << "\tpNext = " << value.pNext << '\n';
-       s << "\tflags = " << getQueryPoolCreateFlagsStr(value.flags) << '\n';
-       s << "\tqueryType = " << value.queryType << '\n';
-       s << "\tqueryCount = " << value.queryCount << '\n';
-       s << "\tpipelineStatistics = " << getQueryPipelineStatisticFlagsStr(value.pipelineStatistics) << '\n';
-       s << '}';
-       return s;
- }
- std::ostream& operator<< (std::ostream& s, const VkBufferCreateInfo& value)
++      s << "VkQueryPoolCreateInfo = {\n";
++      s << "\tsType = " << value.sType << '\n';
++      s << "\tpNext = " << value.pNext << '\n';
++      s << "\tflags = " << getQueryPoolCreateFlagsStr(value.flags) << '\n';
++      s << "\tqueryType = " << value.queryType << '\n';
++      s << "\tqueryCount = " << value.queryCount << '\n';
++      s << "\tpipelineStatistics = " << getQueryPipelineStatisticFlagsStr(value.pipelineStatistics) << '\n';
 +      s << '}';
 +      return s;
 +}
 +
- std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVulkanSC10Features& value)
- {
-       s << "VkPhysicalDeviceVulkanSC10Features = {\n";
-       s << "\tsType = " << value.sType << '\n';
-       s << "\tpNext = " << value.pNext << '\n';
-       s << "\tpipelineIdentifier = " << value.pipelineIdentifier << '\n';
-       s << "\tshaderAtomicInstructions = " << value.shaderAtomicInstructions << '\n';
-       s << '}';
-       return s;
- }
- std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVulkanSC10Properties& value)
- {
-       s << "VkPhysicalDeviceVulkanSC10Properties = {\n";
-       s << "\tsType = " << value.sType << '\n';
-       s << "\tpNext = " << value.pNext << '\n';
-       s << "\tdeviceDestroyFreesMemory = " << value.deviceDestroyFreesMemory << '\n';
-       s << "\tcommandPoolMultipleCommandBuffersRecording = " << value.commandPoolMultipleCommandBuffersRecording << '\n';
-       s << "\tcommandPoolResetCommandBuffer = " << value.commandPoolResetCommandBuffer << '\n';
-       s << "\tdescriptorPoolFreeDescriptorSets = " << value.descriptorPoolFreeDescriptorSets << '\n';
-       s << "\texternalSubpassDependencies = " << value.externalSubpassDependencies << '\n';
-       s << "\trecyclePipelineMemory = " << value.recyclePipelineMemory << '\n';
-       s << "\tmaxSubpasses = " << value.maxSubpasses << '\n';
-       s << "\tmaxInputAttachments = " << value.maxInputAttachments << '\n';
-       s << "\tmaxPreserveAttachments = " << value.maxPreserveAttachments << '\n';
-       s << "\tmaxFramebufferAttachments = " << value.maxFramebufferAttachments << '\n';
-       s << "\tmaxQueryFaultCount = " << value.maxQueryFaultCount << '\n';
-       s << "\tmaxCallbackFaultCount = " << value.maxCallbackFaultCount << '\n';
-       s << "\tcommandBufferSimultaneousUse = " << value.commandBufferSimultaneousUse << '\n';
-       s << "\tsecondaryCommandBufferNullFramebuffer = " << value.secondaryCommandBufferNullFramebuffer << '\n';
-       s << '}';
-       return s;
- }
- std::ostream& operator<< (std::ostream& s, const VkPipelinePoolSize& value)
- {
-       s << "VkPipelinePoolSize = {\n";
-       s << "\tsType = " << value.sType << '\n';
-       s << "\tpNext = " << value.pNext << '\n';
-       s << "\tpoolEntrySize = " << value.poolEntrySize << '\n';
-       s << "\tpoolEntryCount = " << value.poolEntryCount << '\n';
-       s << '}';
-       return s;
- }
- std::ostream& operator<< (std::ostream& s, const VkDeviceMemoryReservationCreateInfo& value)
- {
-       s << "VkDeviceMemoryReservationCreateInfo = {\n";
-       s << "\tsType = " << value.sType << '\n';
-       s << "\tpNext = " << value.pNext << '\n';
-       s << "\tpipelineCacheCreateInfoCount = " << value.pipelineCacheCreateInfoCount << '\n';
-       s << "\tpPipelineCacheCreateInfos = " << value.pPipelineCacheCreateInfos << '\n';
-       s << "\tpipelinePoolSizeCount = " << value.pipelinePoolSizeCount << '\n';
-       s << "\tpPipelinePoolSizes = " << value.pPipelinePoolSizes << '\n';
-       s << "\tdescriptorSetLayoutBindingCount = " << value.descriptorSetLayoutBindingCount << '\n';
-       s << "\timageViewMaxMipLevels = " << value.imageViewMaxMipLevels << '\n';
-       s << "\timageViewMaxArrayLayers = " << value.imageViewMaxArrayLayers << '\n';
-       s << "\tlayeredImageViewMaxMipLevels = " << value.layeredImageViewMaxMipLevels << '\n';
-       s << "\tsemaphoreRequestCount = " << value.semaphoreRequestCount << '\n';
-       s << "\tcommandBufferRequestCount = " << value.commandBufferRequestCount << '\n';
-       s << "\tfenceRequestCount = " << value.fenceRequestCount << '\n';
-       s << "\tdeviceMemoryRequestCount = " << value.deviceMemoryRequestCount << '\n';
-       s << "\tbufferRequestCount = " << value.bufferRequestCount << '\n';
-       s << "\timageRequestCount = " << value.imageRequestCount << '\n';
-       s << "\teventRequestCount = " << value.eventRequestCount << '\n';
-       s << "\tqueryPoolRequestCount = " << value.queryPoolRequestCount << '\n';
-       s << "\tbufferViewRequestCount = " << value.bufferViewRequestCount << '\n';
-       s << "\timageViewRequestCount = " << value.imageViewRequestCount << '\n';
-       s << "\tlayeredImageViewRequestCount = " << value.layeredImageViewRequestCount << '\n';
-       s << "\tpipelineLayoutRequestCount = " << value.pipelineLayoutRequestCount << '\n';
-       s << "\trenderPassRequestCount = " << value.renderPassRequestCount << '\n';
-       s << "\tgraphicsPipelineRequestCount = " << value.graphicsPipelineRequestCount << '\n';
-       s << "\tcomputePipelineRequestCount = " << value.computePipelineRequestCount << '\n';
-       s << "\tdescriptorSetLayoutRequestCount = " << value.descriptorSetLayoutRequestCount << '\n';
-       s << "\tsamplerRequestCount = " << value.samplerRequestCount << '\n';
-       s << "\tdescriptorPoolRequestCount = " << value.descriptorPoolRequestCount << '\n';
-       s << "\tdescriptorSetRequestCount = " << value.descriptorSetRequestCount << '\n';
-       s << "\tframebufferRequestCount = " << value.framebufferRequestCount << '\n';
-       s << "\tcommandPoolRequestCount = " << value.commandPoolRequestCount << '\n';
-       s << "\tsamplerYcbcrConversionRequestCount = " << value.samplerYcbcrConversionRequestCount << '\n';
-       s << "\tsurfaceRequestCount = " << value.surfaceRequestCount << '\n';
-       s << "\tswapchainRequestCount = " << value.swapchainRequestCount << '\n';
-       s << "\tdisplayModeRequestCount = " << value.displayModeRequestCount << '\n';
-       s << '}';
-       return s;
- }
- std::ostream& operator<< (std::ostream& s, const VkCommandPoolMemoryReservationCreateInfo& value)
- {
-       s << "VkCommandPoolMemoryReservationCreateInfo = {\n";
-       s << "\tsType = " << value.sType << '\n';
-       s << "\tpNext = " << value.pNext << '\n';
-       s << "\tcommandPoolReservedSize = " << value.commandPoolReservedSize << '\n';
-       s << "\tcommandPoolMaxCommandBuffers = " << value.commandPoolMaxCommandBuffers << '\n';
-       s << '}';
-       return s;
- }
- std::ostream& operator<< (std::ostream& s, const VkCommandPoolMemoryConsumption& value)
- {
-       s << "VkCommandPoolMemoryConsumption = {\n";
-       s << "\tsType = " << value.sType << '\n';
-       s << "\tpNext = " << value.pNext << '\n';
-       s << "\tcommandPoolAllocated = " << value.commandPoolAllocated << '\n';
-       s << "\tcommandPoolReservedSize = " << value.commandPoolReservedSize << '\n';
-       s << "\tcommandBufferAllocated = " << value.commandBufferAllocated << '\n';
-       s << '}';
-       return s;
- }
- std::ostream& operator<< (std::ostream& s, const VkPipelinePoolEntrySizeCreateInfo& value)
- {
-       s << "VkPipelinePoolEntrySizeCreateInfo = {\n";
-       s << "\tsType = " << value.sType << '\n';
-       s << "\tpNext = " << value.pNext << '\n';
-       s << "\tpoolEntrySize = " << value.poolEntrySize << '\n';
-       s << '}';
-       return s;
- }
- std::ostream& operator<< (std::ostream& s, const VkFaultData& value)
- {
-       s << "VkFaultData = {\n";
-       s << "\tsType = " << value.sType << '\n';
-       s << "\tpNext = " << value.pNext << '\n';
-       s << "\tfaultLevel = " << value.faultLevel << '\n';
-       s << "\tfaultType = " << value.faultType << '\n';
-       s << '}';
-       return s;
- }
- std::ostream& operator<< (std::ostream& s, const VkFaultCallbackInfo& value)
- {
-       s << "VkFaultCallbackInfo = {\n";
-       s << "\tsType = " << value.sType << '\n';
-       s << "\tpNext = " << value.pNext << '\n';
-       s << "\tpFaults = " << value.pFaults << '\n';
-       s << "\tpfnFaultCallback = " << value.pfnFaultCallback << '\n';
-       s << '}';
-       return s;
- }
- std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFaultHandlingProperties& value)
- {
-       s << "VkPhysicalDeviceFaultHandlingProperties = {\n";
-       s << "\tsType = " << value.sType << '\n';
-       s << "\tpNext = " << value.pNext << '\n';
-       s << "\tmaxQueryFaultCount = " << value.maxQueryFaultCount << '\n';
-       s << "\tmaxCallbackFaultCount = " << value.maxCallbackFaultCount << '\n';
-       s << '}';
-       return s;
- }
- std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePipelineIdentifierFeatures& value)
- {
-       s << "VkPhysicalDevicePipelineIdentifierFeatures = {\n";
-       s << "\tsType = " << value.sType << '\n';
-       s << "\tpNext = " << value.pNext << '\n';
-       s << "\tpipelineIdentifier = " << value.pipelineIdentifier << '\n';
-       s << '}';
-       return s;
- }
- std::ostream& operator<< (std::ostream& s, const VkPipelineIdentifierInfo& value)
- {
-       s << "VkPipelineIdentifierInfo = {\n";
-       s << "\tsType = " << value.sType << '\n';
-       s << "\tpNext = " << value.pNext << '\n';
-       s << "\tpipelineIdentifier = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<deUint8>(DE_ARRAY_BEGIN(value.pipelineIdentifier)), tcu::Format::HexIterator<deUint8>(DE_ARRAY_END(value.pipelineIdentifier))) << '\n';
-       s << "\tmatchControl = " << value.matchControl << '\n';
-       s << '}';
-       return s;
- }
++std::ostream& operator<< (std::ostream& s, const VkBufferCreateInfo& value)
 +{
 +      s << "VkBufferCreateInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tflags = " << getBufferCreateFlagsStr(value.flags) << '\n';
 +      s << "\tsize = " << value.size << '\n';
 +      s << "\tusage = " << getBufferUsageFlagsStr(value.usage) << '\n';
 +      s << "\tsharingMode = " << value.sharingMode << '\n';
 +      s << "\tqueueFamilyIndexCount = " << value.queueFamilyIndexCount << '\n';
 +      s << "\tpQueueFamilyIndices = " << value.pQueueFamilyIndices << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkBufferViewCreateInfo& value)
 +{
 +      s << "VkBufferViewCreateInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tflags = " << getBufferViewCreateFlagsStr(value.flags) << '\n';
 +      s << "\tbuffer = " << value.buffer << '\n';
 +      s << "\tformat = " << value.format << '\n';
 +      s << "\toffset = " << value.offset << '\n';
 +      s << "\trange = " << value.range << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkImageCreateInfo& value)
 +{
 +      s << "VkImageCreateInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tflags = " << getImageCreateFlagsStr(value.flags) << '\n';
 +      s << "\timageType = " << value.imageType << '\n';
 +      s << "\tformat = " << value.format << '\n';
 +      s << "\textent = " << value.extent << '\n';
 +      s << "\tmipLevels = " << value.mipLevels << '\n';
 +      s << "\tarrayLayers = " << value.arrayLayers << '\n';
 +      s << "\tsamples = " << value.samples << '\n';
 +      s << "\ttiling = " << value.tiling << '\n';
 +      s << "\tusage = " << getImageUsageFlagsStr(value.usage) << '\n';
 +      s << "\tsharingMode = " << value.sharingMode << '\n';
 +      s << "\tqueueFamilyIndexCount = " << value.queueFamilyIndexCount << '\n';
 +      s << "\tpQueueFamilyIndices = " << value.pQueueFamilyIndices << '\n';
 +      s << "\tinitialLayout = " << value.initialLayout << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkSubresourceLayout& value)
 +{
 +      s << "VkSubresourceLayout = {\n";
 +      s << "\toffset = " << value.offset << '\n';
 +      s << "\tsize = " << value.size << '\n';
 +      s << "\trowPitch = " << value.rowPitch << '\n';
 +      s << "\tarrayPitch = " << value.arrayPitch << '\n';
 +      s << "\tdepthPitch = " << value.depthPitch << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkComponentMapping& value)
 +{
 +      s << "VkComponentMapping = {\n";
 +      s << "\tr = " << value.r << '\n';
 +      s << "\tg = " << value.g << '\n';
 +      s << "\tb = " << value.b << '\n';
 +      s << "\ta = " << value.a << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkImageViewCreateInfo& value)
 +{
 +      s << "VkImageViewCreateInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tflags = " << getImageViewCreateFlagsStr(value.flags) << '\n';
 +      s << "\timage = " << value.image << '\n';
 +      s << "\tviewType = " << value.viewType << '\n';
 +      s << "\tformat = " << value.format << '\n';
 +      s << "\tcomponents = " << value.components << '\n';
 +      s << "\tsubresourceRange = " << value.subresourceRange << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPipelineCacheCreateInfo& value)
 +{
 +      s << "VkPipelineCacheCreateInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tflags = " << getPipelineCacheCreateFlagsStr(value.flags) << '\n';
 +      s << "\tinitialDataSize = " << value.initialDataSize << '\n';
 +      s << "\tpInitialData = " << value.pInitialData << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkSpecializationMapEntry& value)
 +{
 +      s << "VkSpecializationMapEntry = {\n";
 +      s << "\tconstantID = " << value.constantID << '\n';
 +      s << "\toffset = " << value.offset << '\n';
 +      s << "\tsize = " << value.size << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkSpecializationInfo& value)
 +{
 +      s << "VkSpecializationInfo = {\n";
 +      s << "\tmapEntryCount = " << value.mapEntryCount << '\n';
 +      s << "\tpMapEntries = " << value.pMapEntries << '\n';
 +      s << "\tdataSize = " << value.dataSize << '\n';
 +      s << "\tpData = " << value.pData << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPipelineShaderStageCreateInfo& value)
 +{
 +      s << "VkPipelineShaderStageCreateInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tflags = " << getPipelineShaderStageCreateFlagsStr(value.flags) << '\n';
 +      s << "\tstage = " << value.stage << '\n';
 +      s << "\tmodule = " << value.module << '\n';
 +      s << "\tpName = " << getCharPtrStr(value.pName) << '\n';
 +      s << "\tpSpecializationInfo = " << value.pSpecializationInfo << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkComputePipelineCreateInfo& value)
 +{
 +      s << "VkComputePipelineCreateInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tflags = " << getPipelineCreateFlagsStr(value.flags) << '\n';
 +      s << "\tstage = " << value.stage << '\n';
 +      s << "\tlayout = " << value.layout << '\n';
 +      s << "\tbasePipelineHandle = " << value.basePipelineHandle << '\n';
 +      s << "\tbasePipelineIndex = " << value.basePipelineIndex << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkVertexInputBindingDescription& value)
 +{
 +      s << "VkVertexInputBindingDescription = {\n";
 +      s << "\tbinding = " << value.binding << '\n';
 +      s << "\tstride = " << value.stride << '\n';
 +      s << "\tinputRate = " << value.inputRate << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkVertexInputAttributeDescription& value)
 +{
 +      s << "VkVertexInputAttributeDescription = {\n";
 +      s << "\tlocation = " << value.location << '\n';
 +      s << "\tbinding = " << value.binding << '\n';
 +      s << "\tformat = " << value.format << '\n';
 +      s << "\toffset = " << value.offset << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPipelineVertexInputStateCreateInfo& value)
 +{
 +      s << "VkPipelineVertexInputStateCreateInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tflags = " << getPipelineVertexInputStateCreateFlagsStr(value.flags) << '\n';
 +      s << "\tvertexBindingDescriptionCount = " << value.vertexBindingDescriptionCount << '\n';
 +      s << "\tpVertexBindingDescriptions = " << value.pVertexBindingDescriptions << '\n';
 +      s << "\tvertexAttributeDescriptionCount = " << value.vertexAttributeDescriptionCount << '\n';
 +      s << "\tpVertexAttributeDescriptions = " << value.pVertexAttributeDescriptions << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPipelineInputAssemblyStateCreateInfo& value)
 +{
 +      s << "VkPipelineInputAssemblyStateCreateInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tflags = " << getPipelineInputAssemblyStateCreateFlagsStr(value.flags) << '\n';
 +      s << "\ttopology = " << value.topology << '\n';
 +      s << "\tprimitiveRestartEnable = " << value.primitiveRestartEnable << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPipelineTessellationStateCreateInfo& value)
 +{
 +      s << "VkPipelineTessellationStateCreateInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tflags = " << getPipelineTessellationStateCreateFlagsStr(value.flags) << '\n';
 +      s << "\tpatchControlPoints = " << value.patchControlPoints << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkViewport& value)
 +{
 +      s << "VkViewport = {\n";
 +      s << "\tx = " << value.x << '\n';
 +      s << "\ty = " << value.y << '\n';
 +      s << "\twidth = " << value.width << '\n';
 +      s << "\theight = " << value.height << '\n';
 +      s << "\tminDepth = " << value.minDepth << '\n';
 +      s << "\tmaxDepth = " << value.maxDepth << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPipelineViewportStateCreateInfo& value)
 +{
 +      s << "VkPipelineViewportStateCreateInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tflags = " << getPipelineViewportStateCreateFlagsStr(value.flags) << '\n';
 +      s << "\tviewportCount = " << value.viewportCount << '\n';
 +      s << "\tpViewports = " << value.pViewports << '\n';
 +      s << "\tscissorCount = " << value.scissorCount << '\n';
 +      s << "\tpScissors = " << value.pScissors << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPipelineRasterizationStateCreateInfo& value)
 +{
 +      s << "VkPipelineRasterizationStateCreateInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tflags = " << getPipelineRasterizationStateCreateFlagsStr(value.flags) << '\n';
 +      s << "\tdepthClampEnable = " << value.depthClampEnable << '\n';
 +      s << "\trasterizerDiscardEnable = " << value.rasterizerDiscardEnable << '\n';
 +      s << "\tpolygonMode = " << value.polygonMode << '\n';
 +      s << "\tcullMode = " << getCullModeFlagsStr(value.cullMode) << '\n';
 +      s << "\tfrontFace = " << value.frontFace << '\n';
 +      s << "\tdepthBiasEnable = " << value.depthBiasEnable << '\n';
 +      s << "\tdepthBiasConstantFactor = " << value.depthBiasConstantFactor << '\n';
 +      s << "\tdepthBiasClamp = " << value.depthBiasClamp << '\n';
 +      s << "\tdepthBiasSlopeFactor = " << value.depthBiasSlopeFactor << '\n';
 +      s << "\tlineWidth = " << value.lineWidth << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPipelineMultisampleStateCreateInfo& value)
 +{
 +      s << "VkPipelineMultisampleStateCreateInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tflags = " << getPipelineMultisampleStateCreateFlagsStr(value.flags) << '\n';
 +      s << "\trasterizationSamples = " << value.rasterizationSamples << '\n';
 +      s << "\tsampleShadingEnable = " << value.sampleShadingEnable << '\n';
 +      s << "\tminSampleShading = " << value.minSampleShading << '\n';
 +      s << "\tpSampleMask = " << value.pSampleMask << '\n';
 +      s << "\talphaToCoverageEnable = " << value.alphaToCoverageEnable << '\n';
 +      s << "\talphaToOneEnable = " << value.alphaToOneEnable << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkStencilOpState& value)
 +{
 +      s << "VkStencilOpState = {\n";
 +      s << "\tfailOp = " << value.failOp << '\n';
 +      s << "\tpassOp = " << value.passOp << '\n';
 +      s << "\tdepthFailOp = " << value.depthFailOp << '\n';
 +      s << "\tcompareOp = " << value.compareOp << '\n';
 +      s << "\tcompareMask = " << value.compareMask << '\n';
 +      s << "\twriteMask = " << value.writeMask << '\n';
 +      s << "\treference = " << value.reference << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPipelineDepthStencilStateCreateInfo& value)
 +{
 +      s << "VkPipelineDepthStencilStateCreateInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tflags = " << getPipelineDepthStencilStateCreateFlagsStr(value.flags) << '\n';
 +      s << "\tdepthTestEnable = " << value.depthTestEnable << '\n';
 +      s << "\tdepthWriteEnable = " << value.depthWriteEnable << '\n';
 +      s << "\tdepthCompareOp = " << value.depthCompareOp << '\n';
 +      s << "\tdepthBoundsTestEnable = " << value.depthBoundsTestEnable << '\n';
 +      s << "\tstencilTestEnable = " << value.stencilTestEnable << '\n';
 +      s << "\tfront = " << value.front << '\n';
 +      s << "\tback = " << value.back << '\n';
 +      s << "\tminDepthBounds = " << value.minDepthBounds << '\n';
 +      s << "\tmaxDepthBounds = " << value.maxDepthBounds << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPipelineColorBlendAttachmentState& value)
 +{
 +      s << "VkPipelineColorBlendAttachmentState = {\n";
 +      s << "\tblendEnable = " << value.blendEnable << '\n';
 +      s << "\tsrcColorBlendFactor = " << value.srcColorBlendFactor << '\n';
 +      s << "\tdstColorBlendFactor = " << value.dstColorBlendFactor << '\n';
 +      s << "\tcolorBlendOp = " << value.colorBlendOp << '\n';
 +      s << "\tsrcAlphaBlendFactor = " << value.srcAlphaBlendFactor << '\n';
 +      s << "\tdstAlphaBlendFactor = " << value.dstAlphaBlendFactor << '\n';
 +      s << "\talphaBlendOp = " << value.alphaBlendOp << '\n';
 +      s << "\tcolorWriteMask = " << getColorComponentFlagsStr(value.colorWriteMask) << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPipelineColorBlendStateCreateInfo& value)
 +{
 +      s << "VkPipelineColorBlendStateCreateInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tflags = " << getPipelineColorBlendStateCreateFlagsStr(value.flags) << '\n';
 +      s << "\tlogicOpEnable = " << value.logicOpEnable << '\n';
 +      s << "\tlogicOp = " << value.logicOp << '\n';
 +      s << "\tattachmentCount = " << value.attachmentCount << '\n';
 +      s << "\tpAttachments = " << value.pAttachments << '\n';
 +      s << "\tblendConstants = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.blendConstants), DE_ARRAY_END(value.blendConstants)) << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPipelineDynamicStateCreateInfo& value)
 +{
 +      s << "VkPipelineDynamicStateCreateInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tflags = " << getPipelineDynamicStateCreateFlagsStr(value.flags) << '\n';
 +      s << "\tdynamicStateCount = " << value.dynamicStateCount << '\n';
 +      s << "\tpDynamicStates = " << value.pDynamicStates << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkGraphicsPipelineCreateInfo& value)
 +{
 +      s << "VkGraphicsPipelineCreateInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tflags = " << getPipelineCreateFlagsStr(value.flags) << '\n';
 +      s << "\tstageCount = " << value.stageCount << '\n';
 +      s << "\tpStages = " << value.pStages << '\n';
 +      s << "\tpVertexInputState = " << value.pVertexInputState << '\n';
 +      s << "\tpInputAssemblyState = " << value.pInputAssemblyState << '\n';
 +      s << "\tpTessellationState = " << value.pTessellationState << '\n';
 +      s << "\tpViewportState = " << value.pViewportState << '\n';
 +      s << "\tpRasterizationState = " << value.pRasterizationState << '\n';
 +      s << "\tpMultisampleState = " << value.pMultisampleState << '\n';
 +      s << "\tpDepthStencilState = " << value.pDepthStencilState << '\n';
 +      s << "\tpColorBlendState = " << value.pColorBlendState << '\n';
 +      s << "\tpDynamicState = " << value.pDynamicState << '\n';
 +      s << "\tlayout = " << value.layout << '\n';
 +      s << "\trenderPass = " << value.renderPass << '\n';
 +      s << "\tsubpass = " << value.subpass << '\n';
 +      s << "\tbasePipelineHandle = " << value.basePipelineHandle << '\n';
 +      s << "\tbasePipelineIndex = " << value.basePipelineIndex << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPushConstantRange& value)
 +{
 +      s << "VkPushConstantRange = {\n";
 +      s << "\tstageFlags = " << getShaderStageFlagsStr(value.stageFlags) << '\n';
 +      s << "\toffset = " << value.offset << '\n';
 +      s << "\tsize = " << value.size << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPipelineLayoutCreateInfo& value)
 +{
 +      s << "VkPipelineLayoutCreateInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tflags = " << getPipelineLayoutCreateFlagsStr(value.flags) << '\n';
 +      s << "\tsetLayoutCount = " << value.setLayoutCount << '\n';
 +      s << "\tpSetLayouts = " << value.pSetLayouts << '\n';
 +      s << "\tpushConstantRangeCount = " << value.pushConstantRangeCount << '\n';
 +      s << "\tpPushConstantRanges = " << value.pPushConstantRanges << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkSamplerCreateInfo& value)
 +{
 +      s << "VkSamplerCreateInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tflags = " << getSamplerCreateFlagsStr(value.flags) << '\n';
 +      s << "\tmagFilter = " << value.magFilter << '\n';
 +      s << "\tminFilter = " << value.minFilter << '\n';
 +      s << "\tmipmapMode = " << value.mipmapMode << '\n';
 +      s << "\taddressModeU = " << value.addressModeU << '\n';
 +      s << "\taddressModeV = " << value.addressModeV << '\n';
 +      s << "\taddressModeW = " << value.addressModeW << '\n';
 +      s << "\tmipLodBias = " << value.mipLodBias << '\n';
 +      s << "\tanisotropyEnable = " << value.anisotropyEnable << '\n';
 +      s << "\tmaxAnisotropy = " << value.maxAnisotropy << '\n';
 +      s << "\tcompareEnable = " << value.compareEnable << '\n';
 +      s << "\tcompareOp = " << value.compareOp << '\n';
 +      s << "\tminLod = " << value.minLod << '\n';
 +      s << "\tmaxLod = " << value.maxLod << '\n';
 +      s << "\tborderColor = " << value.borderColor << '\n';
 +      s << "\tunnormalizedCoordinates = " << value.unnormalizedCoordinates << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkCopyDescriptorSet& value)
 +{
 +      s << "VkCopyDescriptorSet = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tsrcSet = " << value.srcSet << '\n';
 +      s << "\tsrcBinding = " << value.srcBinding << '\n';
 +      s << "\tsrcArrayElement = " << value.srcArrayElement << '\n';
 +      s << "\tdstSet = " << value.dstSet << '\n';
 +      s << "\tdstBinding = " << value.dstBinding << '\n';
 +      s << "\tdstArrayElement = " << value.dstArrayElement << '\n';
 +      s << "\tdescriptorCount = " << value.descriptorCount << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkDescriptorBufferInfo& value)
 +{
 +      s << "VkDescriptorBufferInfo = {\n";
 +      s << "\tbuffer = " << value.buffer << '\n';
 +      s << "\toffset = " << value.offset << '\n';
 +      s << "\trange = " << value.range << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkDescriptorImageInfo& value)
 +{
 +      s << "VkDescriptorImageInfo = {\n";
 +      s << "\tsampler = " << value.sampler << '\n';
 +      s << "\timageView = " << value.imageView << '\n';
 +      s << "\timageLayout = " << value.imageLayout << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkDescriptorPoolSize& value)
 +{
 +      s << "VkDescriptorPoolSize = {\n";
 +      s << "\ttype = " << value.type << '\n';
 +      s << "\tdescriptorCount = " << value.descriptorCount << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkDescriptorPoolCreateInfo& value)
 +{
 +      s << "VkDescriptorPoolCreateInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tflags = " << getDescriptorPoolCreateFlagsStr(value.flags) << '\n';
 +      s << "\tmaxSets = " << value.maxSets << '\n';
 +      s << "\tpoolSizeCount = " << value.poolSizeCount << '\n';
 +      s << "\tpPoolSizes = " << value.pPoolSizes << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkDescriptorSetAllocateInfo& value)
 +{
 +      s << "VkDescriptorSetAllocateInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tdescriptorPool = " << value.descriptorPool << '\n';
 +      s << "\tdescriptorSetCount = " << value.descriptorSetCount << '\n';
 +      s << "\tpSetLayouts = " << value.pSetLayouts << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkDescriptorSetLayoutBinding& value)
 +{
 +      s << "VkDescriptorSetLayoutBinding = {\n";
 +      s << "\tbinding = " << value.binding << '\n';
 +      s << "\tdescriptorType = " << value.descriptorType << '\n';
 +      s << "\tdescriptorCount = " << value.descriptorCount << '\n';
 +      s << "\tstageFlags = " << getShaderStageFlagsStr(value.stageFlags) << '\n';
 +      s << "\tpImmutableSamplers = " << value.pImmutableSamplers << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkDescriptorSetLayoutCreateInfo& value)
 +{
 +      s << "VkDescriptorSetLayoutCreateInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tflags = " << getDescriptorSetLayoutCreateFlagsStr(value.flags) << '\n';
 +      s << "\tbindingCount = " << value.bindingCount << '\n';
 +      s << "\tpBindings = " << value.pBindings << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkWriteDescriptorSet& value)
 +{
 +      s << "VkWriteDescriptorSet = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tdstSet = " << value.dstSet << '\n';
 +      s << "\tdstBinding = " << value.dstBinding << '\n';
 +      s << "\tdstArrayElement = " << value.dstArrayElement << '\n';
 +      s << "\tdescriptorCount = " << value.descriptorCount << '\n';
 +      s << "\tdescriptorType = " << value.descriptorType << '\n';
 +      s << "\tpImageInfo = " << value.pImageInfo << '\n';
 +      s << "\tpBufferInfo = " << value.pBufferInfo << '\n';
 +      s << "\tpTexelBufferView = " << value.pTexelBufferView << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkAttachmentDescription& value)
 +{
 +      s << "VkAttachmentDescription = {\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 VkAttachmentReference& value)
 +{
 +      s << "VkAttachmentReference = {\n";
 +      s << "\tattachment = " << value.attachment << '\n';
 +      s << "\tlayout = " << value.layout << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkFramebufferCreateInfo& value)
 +{
 +      s << "VkFramebufferCreateInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tflags = " << getFramebufferCreateFlagsStr(value.flags) << '\n';
 +      s << "\trenderPass = " << value.renderPass << '\n';
 +      s << "\tattachmentCount = " << value.attachmentCount << '\n';
 +      s << "\tpAttachments = " << value.pAttachments << '\n';
 +      s << "\twidth = " << value.width << '\n';
 +      s << "\theight = " << value.height << '\n';
 +      s << "\tlayers = " << value.layers << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkSubpassDescription& value)
 +{
 +      s << "VkSubpassDescription = {\n";
 +      s << "\tflags = " << getSubpassDescriptionFlagsStr(value.flags) << '\n';
 +      s << "\tpipelineBindPoint = " << value.pipelineBindPoint << '\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 VkSubpassDependency& value)
 +{
 +      s << "VkSubpassDependency = {\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 << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkRenderPassCreateInfo& value)
 +{
 +      s << "VkRenderPassCreateInfo = {\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 << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkCommandPoolCreateInfo& value)
 +{
 +      s << "VkCommandPoolCreateInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tflags = " << getCommandPoolCreateFlagsStr(value.flags) << '\n';
 +      s << "\tqueueFamilyIndex = " << value.queueFamilyIndex << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkCommandBufferAllocateInfo& value)
 +{
 +      s << "VkCommandBufferAllocateInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tcommandPool = " << value.commandPool << '\n';
 +      s << "\tlevel = " << value.level << '\n';
 +      s << "\tcommandBufferCount = " << value.commandBufferCount << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkCommandBufferInheritanceInfo& value)
 +{
 +      s << "VkCommandBufferInheritanceInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\trenderPass = " << value.renderPass << '\n';
 +      s << "\tsubpass = " << value.subpass << '\n';
 +      s << "\tframebuffer = " << value.framebuffer << '\n';
 +      s << "\tocclusionQueryEnable = " << value.occlusionQueryEnable << '\n';
 +      s << "\tqueryFlags = " << getQueryControlFlagsStr(value.queryFlags) << '\n';
 +      s << "\tpipelineStatistics = " << getQueryPipelineStatisticFlagsStr(value.pipelineStatistics) << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkCommandBufferBeginInfo& value)
 +{
 +      s << "VkCommandBufferBeginInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tflags = " << getCommandBufferUsageFlagsStr(value.flags) << '\n';
 +      s << "\tpInheritanceInfo = " << value.pInheritanceInfo << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkBufferCopy& value)
 +{
 +      s << "VkBufferCopy = {\n";
 +      s << "\tsrcOffset = " << value.srcOffset << '\n';
 +      s << "\tdstOffset = " << value.dstOffset << '\n';
 +      s << "\tsize = " << value.size << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkImageSubresourceLayers& value)
 +{
 +      s << "VkImageSubresourceLayers = {\n";
 +      s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
 +      s << "\tmipLevel = " << value.mipLevel << '\n';
 +      s << "\tbaseArrayLayer = " << value.baseArrayLayer << '\n';
 +      s << "\tlayerCount = " << value.layerCount << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkBufferImageCopy& value)
 +{
 +      s << "VkBufferImageCopy = {\n";
 +      s << "\tbufferOffset = " << value.bufferOffset << '\n';
 +      s << "\tbufferRowLength = " << value.bufferRowLength << '\n';
 +      s << "\tbufferImageHeight = " << value.bufferImageHeight << '\n';
 +      s << "\timageSubresource = " << value.imageSubresource << '\n';
 +      s << "\timageOffset = " << value.imageOffset << '\n';
 +      s << "\timageExtent = " << value.imageExtent << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkClearColorValue& value)
 +{
 +      s << "VkClearColorValue = {\n";
 +      s << "\tfloat32 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.float32), DE_ARRAY_END(value.float32)) << '\n';
 +      s << "\tint32 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.int32), DE_ARRAY_END(value.int32)) << '\n';
 +      s << "\tuint32 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.uint32), DE_ARRAY_END(value.uint32)) << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkClearDepthStencilValue& value)
 +{
 +      s << "VkClearDepthStencilValue = {\n";
 +      s << "\tdepth = " << value.depth << '\n';
 +      s << "\tstencil = " << value.stencil << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkClearValue& value)
 +{
 +      s << "VkClearValue = {\n";
 +      s << "\tcolor = " << value.color << '\n';
 +      s << "\tdepthStencil = " << value.depthStencil << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkClearAttachment& value)
 +{
 +      s << "VkClearAttachment = {\n";
 +      s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
 +      s << "\tcolorAttachment = " << value.colorAttachment << '\n';
 +      s << "\tclearValue = " << value.clearValue << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkClearRect& value)
 +{
 +      s << "VkClearRect = {\n";
 +      s << "\trect = " << value.rect << '\n';
 +      s << "\tbaseArrayLayer = " << value.baseArrayLayer << '\n';
 +      s << "\tlayerCount = " << value.layerCount << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkImageBlit& value)
 +{
 +      s << "VkImageBlit = {\n";
 +      s << "\tsrcSubresource = " << value.srcSubresource << '\n';
 +      s << "\tsrcOffsets = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.srcOffsets), DE_ARRAY_END(value.srcOffsets)) << '\n';
 +      s << "\tdstSubresource = " << value.dstSubresource << '\n';
 +      s << "\tdstOffsets = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.dstOffsets), DE_ARRAY_END(value.dstOffsets)) << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkImageCopy& value)
 +{
 +      s << "VkImageCopy = {\n";
 +      s << "\tsrcSubresource = " << value.srcSubresource << '\n';
 +      s << "\tsrcOffset = " << value.srcOffset << '\n';
 +      s << "\tdstSubresource = " << value.dstSubresource << '\n';
 +      s << "\tdstOffset = " << value.dstOffset << '\n';
 +      s << "\textent = " << value.extent << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkImageResolve& value)
 +{
 +      s << "VkImageResolve = {\n";
 +      s << "\tsrcSubresource = " << value.srcSubresource << '\n';
 +      s << "\tsrcOffset = " << value.srcOffset << '\n';
 +      s << "\tdstSubresource = " << value.dstSubresource << '\n';
 +      s << "\tdstOffset = " << value.dstOffset << '\n';
 +      s << "\textent = " << value.extent << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkRenderPassBeginInfo& value)
 +{
 +      s << "VkRenderPassBeginInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\trenderPass = " << value.renderPass << '\n';
 +      s << "\tframebuffer = " << value.framebuffer << '\n';
 +      s << "\trenderArea = " << value.renderArea << '\n';
 +      s << "\tclearValueCount = " << value.clearValueCount << '\n';
 +      s << "\tpClearValues = " << value.pClearValues << '\n';
 +      s << '}';
 +      return s;
 +}
 +
- std::ostream& operator<< (std::ostream& s, const VkDeviceGroupBindSparseInfo& value)
- {
-       s << "VkDeviceGroupBindSparseInfo = {\n";
-       s << "\tsType = " << value.sType << '\n';
-       s << "\tpNext = " << value.pNext << '\n';
-       s << "\tresourceDeviceIndex = " << value.resourceDeviceIndex << '\n';
-       s << "\tmemoryDeviceIndex = " << value.memoryDeviceIndex << '\n';
-       s << '}';
-       return s;
- }
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSubgroupProperties& value)
 +{
 +      s << "VkPhysicalDeviceSubgroupProperties = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tsubgroupSize = " << value.subgroupSize << '\n';
 +      s << "\tsupportedStages = " << getShaderStageFlagsStr(value.supportedStages) << '\n';
 +      s << "\tsupportedOperations = " << getSubgroupFeatureFlagsStr(value.supportedOperations) << '\n';
 +      s << "\tquadOperationsInAllStages = " << value.quadOperationsInAllStages << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkBindBufferMemoryInfo& value)
 +{
 +      s << "VkBindBufferMemoryInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tbuffer = " << value.buffer << '\n';
 +      s << "\tmemory = " << value.memory << '\n';
 +      s << "\tmemoryOffset = " << value.memoryOffset << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkBindImageMemoryInfo& value)
 +{
 +      s << "VkBindImageMemoryInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\timage = " << value.image << '\n';
 +      s << "\tmemory = " << value.memory << '\n';
 +      s << "\tmemoryOffset = " << value.memoryOffset << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDevice16BitStorageFeatures& value)
 +{
 +      s << "VkPhysicalDevice16BitStorageFeatures = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tstorageBuffer16BitAccess = " << value.storageBuffer16BitAccess << '\n';
 +      s << "\tuniformAndStorageBuffer16BitAccess = " << value.uniformAndStorageBuffer16BitAccess << '\n';
 +      s << "\tstoragePushConstant16 = " << value.storagePushConstant16 << '\n';
 +      s << "\tstorageInputOutput16 = " << value.storageInputOutput16 << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkMemoryDedicatedRequirements& value)
 +{
 +      s << "VkMemoryDedicatedRequirements = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tprefersDedicatedAllocation = " << value.prefersDedicatedAllocation << '\n';
 +      s << "\trequiresDedicatedAllocation = " << value.requiresDedicatedAllocation << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkMemoryDedicatedAllocateInfo& value)
 +{
 +      s << "VkMemoryDedicatedAllocateInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\timage = " << value.image << '\n';
 +      s << "\tbuffer = " << value.buffer << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkMemoryAllocateFlagsInfo& value)
 +{
 +      s << "VkMemoryAllocateFlagsInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tflags = " << getMemoryAllocateFlagsStr(value.flags) << '\n';
 +      s << "\tdeviceMask = " << value.deviceMask << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkDeviceGroupRenderPassBeginInfo& value)
 +{
 +      s << "VkDeviceGroupRenderPassBeginInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tdeviceMask = " << value.deviceMask << '\n';
 +      s << "\tdeviceRenderAreaCount = " << value.deviceRenderAreaCount << '\n';
 +      s << "\tpDeviceRenderAreas = " << value.pDeviceRenderAreas << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkDeviceGroupCommandBufferBeginInfo& value)
 +{
 +      s << "VkDeviceGroupCommandBufferBeginInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tdeviceMask = " << value.deviceMask << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkDeviceGroupSubmitInfo& value)
 +{
 +      s << "VkDeviceGroupSubmitInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\twaitSemaphoreCount = " << value.waitSemaphoreCount << '\n';
 +      s << "\tpWaitSemaphoreDeviceIndices = " << value.pWaitSemaphoreDeviceIndices << '\n';
 +      s << "\tcommandBufferCount = " << value.commandBufferCount << '\n';
 +      s << "\tpCommandBufferDeviceMasks = " << value.pCommandBufferDeviceMasks << '\n';
 +      s << "\tsignalSemaphoreCount = " << value.signalSemaphoreCount << '\n';
 +      s << "\tpSignalSemaphoreDeviceIndices = " << value.pSignalSemaphoreDeviceIndices << '\n';
 +      s << '}';
 +      return s;
 +}
 +
- std::ostream& operator<< (std::ostream& s, const VkImageSparseMemoryRequirementsInfo2& value)
- {
-       s << "VkImageSparseMemoryRequirementsInfo2 = {\n";
-       s << "\tsType = " << value.sType << '\n';
-       s << "\tpNext = " << value.pNext << '\n';
-       s << "\timage = " << value.image << '\n';
-       s << '}';
-       return s;
- }
 +std::ostream& operator<< (std::ostream& s, const VkBindBufferMemoryDeviceGroupInfo& value)
 +{
 +      s << "VkBindBufferMemoryDeviceGroupInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tdeviceIndexCount = " << value.deviceIndexCount << '\n';
 +      s << "\tpDeviceIndices = " << value.pDeviceIndices << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkBindImageMemoryDeviceGroupInfo& value)
 +{
 +      s << "VkBindImageMemoryDeviceGroupInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tdeviceIndexCount = " << value.deviceIndexCount << '\n';
 +      s << "\tpDeviceIndices = " << value.pDeviceIndices << '\n';
 +      s << "\tsplitInstanceBindRegionCount = " << value.splitInstanceBindRegionCount << '\n';
 +      s << "\tpSplitInstanceBindRegions = " << value.pSplitInstanceBindRegions << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceGroupProperties& value)
 +{
 +      s << "VkPhysicalDeviceGroupProperties = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tphysicalDeviceCount = " << value.physicalDeviceCount << '\n';
 +      s << "\tphysicalDevices = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.physicalDevices), DE_ARRAY_END(value.physicalDevices)) << '\n';
 +      s << "\tsubsetAllocation = " << value.subsetAllocation << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkDeviceGroupDeviceCreateInfo& value)
 +{
 +      s << "VkDeviceGroupDeviceCreateInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tphysicalDeviceCount = " << value.physicalDeviceCount << '\n';
 +      s << "\tpPhysicalDevices = " << value.pPhysicalDevices << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkBufferMemoryRequirementsInfo2& value)
 +{
 +      s << "VkBufferMemoryRequirementsInfo2 = {\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 VkImageMemoryRequirementsInfo2& value)
 +{
 +      s << "VkImageMemoryRequirementsInfo2 = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\timage = " << value.image << '\n';
 +      s << '}';
 +      return s;
 +}
 +
- std::ostream& operator<< (std::ostream& s, const VkSparseImageMemoryRequirements2& value)
- {
-       s << "VkSparseImageMemoryRequirements2 = {\n";
-       s << "\tsType = " << value.sType << '\n';
-       s << "\tpNext = " << value.pNext << '\n';
-       s << "\tmemoryRequirements = " << value.memoryRequirements << '\n';
-       s << '}';
-       return s;
- }
 +std::ostream& operator<< (std::ostream& s, const VkMemoryRequirements2& value)
 +{
 +      s << "VkMemoryRequirements2 = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tmemoryRequirements = " << value.memoryRequirements << '\n';
 +      s << '}';
 +      return s;
 +}
 +
- std::ostream& operator<< (std::ostream& s, const VkSparseImageFormatProperties2& value)
- {
-       s << "VkSparseImageFormatProperties2 = {\n";
-       s << "\tsType = " << value.sType << '\n';
-       s << "\tpNext = " << value.pNext << '\n';
-       s << "\tproperties = " << value.properties << '\n';
-       s << '}';
-       return s;
- }
- std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSparseImageFormatInfo2& value)
- {
-       s << "VkPhysicalDeviceSparseImageFormatInfo2 = {\n";
-       s << "\tsType = " << value.sType << '\n';
-       s << "\tpNext = " << value.pNext << '\n';
-       s << "\tformat = " << value.format << '\n';
-       s << "\ttype = " << value.type << '\n';
-       s << "\tsamples = " << value.samples << '\n';
-       s << "\tusage = " << getImageUsageFlagsStr(value.usage) << '\n';
-       s << "\ttiling = " << value.tiling << '\n';
-       s << '}';
-       return s;
- }
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFeatures2& value)
 +{
 +      s << "VkPhysicalDeviceFeatures2 = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tfeatures = " << value.features << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceProperties2& value)
 +{
 +      s << "VkPhysicalDeviceProperties2 = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tproperties = " << value.properties << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkFormatProperties2& value)
 +{
 +      s << "VkFormatProperties2 = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tformatProperties = " << value.formatProperties << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkImageFormatProperties2& value)
 +{
 +      s << "VkImageFormatProperties2 = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\timageFormatProperties = " << value.imageFormatProperties << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceImageFormatInfo2& value)
 +{
 +      s << "VkPhysicalDeviceImageFormatInfo2 = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tformat = " << value.format << '\n';
 +      s << "\ttype = " << value.type << '\n';
 +      s << "\ttiling = " << value.tiling << '\n';
 +      s << "\tusage = " << getImageUsageFlagsStr(value.usage) << '\n';
 +      s << "\tflags = " << getImageCreateFlagsStr(value.flags) << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkQueueFamilyProperties2& value)
 +{
 +      s << "VkQueueFamilyProperties2 = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tqueueFamilyProperties = " << value.queueFamilyProperties << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMemoryProperties2& value)
 +{
 +      s << "VkPhysicalDeviceMemoryProperties2 = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tmemoryProperties = " << value.memoryProperties << '\n';
 +      s << '}';
 +      return s;
 +}
 +
- std::ostream& operator<< (std::ostream& s, const VkSurfaceCapabilitiesKHR& value)
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePointClippingProperties& value)
 +{
 +      s << "VkPhysicalDevicePointClippingProperties = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tpointClippingBehavior = " << value.pointClippingBehavior << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkInputAttachmentAspectReference& value)
 +{
 +      s << "VkInputAttachmentAspectReference = {\n";
 +      s << "\tsubpass = " << value.subpass << '\n';
 +      s << "\tinputAttachmentIndex = " << value.inputAttachmentIndex << '\n';
 +      s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkRenderPassInputAttachmentAspectCreateInfo& value)
 +{
 +      s << "VkRenderPassInputAttachmentAspectCreateInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\taspectReferenceCount = " << value.aspectReferenceCount << '\n';
 +      s << "\tpAspectReferences = " << value.pAspectReferences << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkImageViewUsageCreateInfo& value)
 +{
 +      s << "VkImageViewUsageCreateInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tusage = " << getImageUsageFlagsStr(value.usage) << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPipelineTessellationDomainOriginStateCreateInfo& value)
 +{
 +      s << "VkPipelineTessellationDomainOriginStateCreateInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tdomainOrigin = " << value.domainOrigin << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkRenderPassMultiviewCreateInfo& value)
 +{
 +      s << "VkRenderPassMultiviewCreateInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tsubpassCount = " << value.subpassCount << '\n';
 +      s << "\tpViewMasks = " << value.pViewMasks << '\n';
 +      s << "\tdependencyCount = " << value.dependencyCount << '\n';
 +      s << "\tpViewOffsets = " << value.pViewOffsets << '\n';
 +      s << "\tcorrelationMaskCount = " << value.correlationMaskCount << '\n';
 +      s << "\tpCorrelationMasks = " << value.pCorrelationMasks << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMultiviewFeatures& value)
 +{
 +      s << "VkPhysicalDeviceMultiviewFeatures = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tmultiview = " << value.multiview << '\n';
 +      s << "\tmultiviewGeometryShader = " << value.multiviewGeometryShader << '\n';
 +      s << "\tmultiviewTessellationShader = " << value.multiviewTessellationShader << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMultiviewProperties& value)
 +{
 +      s << "VkPhysicalDeviceMultiviewProperties = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tmaxMultiviewViewCount = " << value.maxMultiviewViewCount << '\n';
 +      s << "\tmaxMultiviewInstanceIndex = " << value.maxMultiviewInstanceIndex << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVariablePointersFeatures& value)
 +{
 +      s << "VkPhysicalDeviceVariablePointersFeatures = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tvariablePointersStorageBuffer = " << value.variablePointersStorageBuffer << '\n';
 +      s << "\tvariablePointers = " << value.variablePointers << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceProtectedMemoryFeatures& value)
 +{
 +      s << "VkPhysicalDeviceProtectedMemoryFeatures = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tprotectedMemory = " << value.protectedMemory << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceProtectedMemoryProperties& value)
 +{
 +      s << "VkPhysicalDeviceProtectedMemoryProperties = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tprotectedNoFault = " << value.protectedNoFault << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkDeviceQueueInfo2& value)
 +{
 +      s << "VkDeviceQueueInfo2 = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tflags = " << getDeviceQueueCreateFlagsStr(value.flags) << '\n';
 +      s << "\tqueueFamilyIndex = " << value.queueFamilyIndex << '\n';
 +      s << "\tqueueIndex = " << value.queueIndex << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkProtectedSubmitInfo& value)
 +{
 +      s << "VkProtectedSubmitInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tprotectedSubmit = " << value.protectedSubmit << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkSamplerYcbcrConversionCreateInfo& value)
 +{
 +      s << "VkSamplerYcbcrConversionCreateInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tformat = " << value.format << '\n';
 +      s << "\tycbcrModel = " << value.ycbcrModel << '\n';
 +      s << "\tycbcrRange = " << value.ycbcrRange << '\n';
 +      s << "\tcomponents = " << value.components << '\n';
 +      s << "\txChromaOffset = " << value.xChromaOffset << '\n';
 +      s << "\tyChromaOffset = " << value.yChromaOffset << '\n';
 +      s << "\tchromaFilter = " << value.chromaFilter << '\n';
 +      s << "\tforceExplicitReconstruction = " << value.forceExplicitReconstruction << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkSamplerYcbcrConversionInfo& value)
 +{
 +      s << "VkSamplerYcbcrConversionInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tconversion = " << value.conversion << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkBindImagePlaneMemoryInfo& value)
 +{
 +      s << "VkBindImagePlaneMemoryInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tplaneAspect = " << value.planeAspect << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkImagePlaneMemoryRequirementsInfo& value)
 +{
 +      s << "VkImagePlaneMemoryRequirementsInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tplaneAspect = " << value.planeAspect << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSamplerYcbcrConversionFeatures& value)
 +{
 +      s << "VkPhysicalDeviceSamplerYcbcrConversionFeatures = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tsamplerYcbcrConversion = " << value.samplerYcbcrConversion << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkSamplerYcbcrConversionImageFormatProperties& value)
 +{
 +      s << "VkSamplerYcbcrConversionImageFormatProperties = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tcombinedImageSamplerDescriptorCount = " << value.combinedImageSamplerDescriptorCount << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkExternalMemoryProperties& value)
 +{
 +      s << "VkExternalMemoryProperties = {\n";
 +      s << "\texternalMemoryFeatures = " << getExternalMemoryFeatureFlagsStr(value.externalMemoryFeatures) << '\n';
 +      s << "\texportFromImportedHandleTypes = " << getExternalMemoryHandleTypeFlagsStr(value.exportFromImportedHandleTypes) << '\n';
 +      s << "\tcompatibleHandleTypes = " << getExternalMemoryHandleTypeFlagsStr(value.compatibleHandleTypes) << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExternalImageFormatInfo& value)
 +{
 +      s << "VkPhysicalDeviceExternalImageFormatInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\thandleType = " << value.handleType << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkExternalImageFormatProperties& value)
 +{
 +      s << "VkExternalImageFormatProperties = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\texternalMemoryProperties = " << value.externalMemoryProperties << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExternalBufferInfo& value)
 +{
 +      s << "VkPhysicalDeviceExternalBufferInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tflags = " << getBufferCreateFlagsStr(value.flags) << '\n';
 +      s << "\tusage = " << getBufferUsageFlagsStr(value.usage) << '\n';
 +      s << "\thandleType = " << value.handleType << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkExternalBufferProperties& value)
 +{
 +      s << "VkExternalBufferProperties = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\texternalMemoryProperties = " << value.externalMemoryProperties << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceIDProperties& value)
 +{
 +      s << "VkPhysicalDeviceIDProperties = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\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 << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkExternalMemoryImageCreateInfo& value)
 +{
 +      s << "VkExternalMemoryImageCreateInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\thandleTypes = " << getExternalMemoryHandleTypeFlagsStr(value.handleTypes) << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkExternalMemoryBufferCreateInfo& value)
 +{
 +      s << "VkExternalMemoryBufferCreateInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\thandleTypes = " << getExternalMemoryHandleTypeFlagsStr(value.handleTypes) << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkExportMemoryAllocateInfo& value)
 +{
 +      s << "VkExportMemoryAllocateInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\thandleTypes = " << getExternalMemoryHandleTypeFlagsStr(value.handleTypes) << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExternalFenceInfo& value)
 +{
 +      s << "VkPhysicalDeviceExternalFenceInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\thandleType = " << value.handleType << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkExternalFenceProperties& value)
 +{
 +      s << "VkExternalFenceProperties = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\texportFromImportedHandleTypes = " << getExternalFenceHandleTypeFlagsStr(value.exportFromImportedHandleTypes) << '\n';
 +      s << "\tcompatibleHandleTypes = " << getExternalFenceHandleTypeFlagsStr(value.compatibleHandleTypes) << '\n';
 +      s << "\texternalFenceFeatures = " << getExternalFenceFeatureFlagsStr(value.externalFenceFeatures) << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkExportFenceCreateInfo& value)
 +{
 +      s << "VkExportFenceCreateInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\thandleTypes = " << getExternalFenceHandleTypeFlagsStr(value.handleTypes) << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkExportSemaphoreCreateInfo& value)
 +{
 +      s << "VkExportSemaphoreCreateInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\thandleTypes = " << getExternalSemaphoreHandleTypeFlagsStr(value.handleTypes) << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExternalSemaphoreInfo& value)
 +{
 +      s << "VkPhysicalDeviceExternalSemaphoreInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\thandleType = " << value.handleType << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkExternalSemaphoreProperties& value)
 +{
 +      s << "VkExternalSemaphoreProperties = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\texportFromImportedHandleTypes = " << getExternalSemaphoreHandleTypeFlagsStr(value.exportFromImportedHandleTypes) << '\n';
 +      s << "\tcompatibleHandleTypes = " << getExternalSemaphoreHandleTypeFlagsStr(value.compatibleHandleTypes) << '\n';
 +      s << "\texternalSemaphoreFeatures = " << getExternalSemaphoreFeatureFlagsStr(value.externalSemaphoreFeatures) << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMaintenance3Properties& value)
 +{
 +      s << "VkPhysicalDeviceMaintenance3Properties = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tmaxPerSetDescriptors = " << value.maxPerSetDescriptors << '\n';
 +      s << "\tmaxMemoryAllocationSize = " << value.maxMemoryAllocationSize << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkDescriptorSetLayoutSupport& value)
 +{
 +      s << "VkDescriptorSetLayoutSupport = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tsupported = " << value.supported << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderDrawParametersFeatures& value)
 +{
 +      s << "VkPhysicalDeviceShaderDrawParametersFeatures = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tshaderDrawParameters = " << value.shaderDrawParameters << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVulkan11Features& value)
 +{
 +      s << "VkPhysicalDeviceVulkan11Features = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\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 VkPhysicalDeviceVulkan11Properties& value)
 +{
 +      s << "VkPhysicalDeviceVulkan11Properties = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\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 VkPhysicalDeviceVulkan12Features& value)
 +{
 +      s << "VkPhysicalDeviceVulkan12Features = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\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 VkConformanceVersion& value)
 +{
 +      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 VkPhysicalDeviceVulkan12Properties& value)
 +{
 +      s << "VkPhysicalDeviceVulkan12Properties = {\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 << "\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 VkSubpassDescriptionDepthStencilResolve& value)
 +{
 +      s << "VkSubpassDescriptionDepthStencilResolve = {\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 << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDepthStencilResolveProperties& value)
 +{
 +      s << "VkPhysicalDeviceDepthStencilResolveProperties = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\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 VkPhysicalDeviceScalarBlockLayoutFeatures& value)
 +{
 +      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 VkImageStencilUsageCreateInfo& value)
 +{
 +      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 VkSamplerReductionModeCreateInfo& value)
 +{
 +      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 VkPhysicalDeviceSamplerFilterMinmaxProperties& value)
 +{
 +      s << "VkPhysicalDeviceSamplerFilterMinmaxProperties = {\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 VkPhysicalDeviceVulkanMemoryModelFeatures& value)
 +{
 +      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 VkPhysicalDeviceImagelessFramebufferFeatures& value)
 +{
 +      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 VkFramebufferAttachmentImageInfo& value)
 +{
 +      s << "VkFramebufferAttachmentImageInfo = {\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 << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkFramebufferAttachmentsCreateInfo& value)
 +{
 +      s << "VkFramebufferAttachmentsCreateInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tattachmentImageInfoCount = " << value.attachmentImageInfoCount << '\n';
 +      s << "\tpAttachmentImageInfos = " << value.pAttachmentImageInfos << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkRenderPassAttachmentBeginInfo& value)
 +{
 +      s << "VkRenderPassAttachmentBeginInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tattachmentCount = " << value.attachmentCount << '\n';
 +      s << "\tpAttachments = " << value.pAttachments << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceUniformBufferStandardLayoutFeatures& value)
 +{
 +      s << "VkPhysicalDeviceUniformBufferStandardLayoutFeatures = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tuniformBufferStandardLayout = " << value.uniformBufferStandardLayout << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures& value)
 +{
 +      s << "VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tshaderSubgroupExtendedTypes = " << value.shaderSubgroupExtendedTypes << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures& value)
 +{
 +      s << "VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tseparateDepthStencilLayouts = " << value.separateDepthStencilLayouts << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkAttachmentReferenceStencilLayout& value)
 +{
 +      s << "VkAttachmentReferenceStencilLayout = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tstencilLayout = " << value.stencilLayout << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkAttachmentDescriptionStencilLayout& value)
 +{
 +      s << "VkAttachmentDescriptionStencilLayout = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tstencilInitialLayout = " << value.stencilInitialLayout << '\n';
 +      s << "\tstencilFinalLayout = " << value.stencilFinalLayout << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceHostQueryResetFeatures& value)
 +{
 +      s << "VkPhysicalDeviceHostQueryResetFeatures = {\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 VkPhysicalDeviceTimelineSemaphoreFeatures& value)
 +{
 +      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 VkPhysicalDeviceTimelineSemaphoreProperties& value)
 +{
 +      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 VkSemaphoreTypeCreateInfo& value)
 +{
 +      s << "VkSemaphoreTypeCreateInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tsemaphoreType = " << value.semaphoreType << '\n';
 +      s << "\tinitialValue = " << value.initialValue << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkTimelineSemaphoreSubmitInfo& value)
 +{
 +      s << "VkTimelineSemaphoreSubmitInfo = {\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 << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkSemaphoreWaitInfo& value)
 +{
 +      s << "VkSemaphoreWaitInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\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 VkSemaphoreSignalInfo& value)
 +{
 +      s << "VkSemaphoreSignalInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tsemaphore = " << value.semaphore << '\n';
 +      s << "\tvalue = " << value.value << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceBufferDeviceAddressFeatures& value)
 +{
 +      s << "VkPhysicalDeviceBufferDeviceAddressFeatures = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\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 VkBufferDeviceAddressInfo& value)
 +{
 +      s << "VkBufferDeviceAddressInfo = {\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 VkBufferOpaqueCaptureAddressCreateInfo& value)
 +{
 +      s << "VkBufferOpaqueCaptureAddressCreateInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\topaqueCaptureAddress = " << value.opaqueCaptureAddress << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkMemoryOpaqueCaptureAddressAllocateInfo& value)
 +{
 +      s << "VkMemoryOpaqueCaptureAddressAllocateInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\topaqueCaptureAddress = " << value.opaqueCaptureAddress << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkDeviceMemoryOpaqueCaptureAddressInfo& value)
 +{
 +      s << "VkDeviceMemoryOpaqueCaptureAddressInfo = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tmemory = " << value.memory << '\n';
 +      s << '}';
 +      return s;
 +}
 +
-       s << "VkSurfaceCapabilitiesKHR = {\n";
-       s << "\tminImageCount = " << value.minImageCount << '\n';
-       s << "\tmaxImageCount = " << value.maxImageCount << '\n';
-       s << "\tcurrentExtent = " << value.currentExtent << '\n';
-       s << "\tminImageExtent = " << value.minImageExtent << '\n';
++std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVulkanSC10Features& value)
 +{
++      s << "VkPhysicalDeviceVulkanSC10Features = {\n";
++      s << "\tsType = " << value.sType << '\n';
++      s << "\tpNext = " << value.pNext << '\n';
++      s << "\tpipelineIdentifier = " << value.pipelineIdentifier << '\n';
++      s << "\tshaderAtomicInstructions = " << value.shaderAtomicInstructions << '\n';
++      s << '}';
++      return s;
++}
++
++std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVulkanSC10Properties& value)
++{
++      s << "VkPhysicalDeviceVulkanSC10Properties = {\n";
++      s << "\tsType = " << value.sType << '\n';
++      s << "\tpNext = " << value.pNext << '\n';
++      s << "\tdeviceNoDynamicHostAllocations = " << value.deviceNoDynamicHostAllocations << '\n';
++      s << "\tdeviceDestroyFreesMemory = " << value.deviceDestroyFreesMemory << '\n';
++      s << "\tcommandPoolMultipleCommandBuffersRecording = " << value.commandPoolMultipleCommandBuffersRecording << '\n';
++      s << "\tcommandPoolResetCommandBuffer = " << value.commandPoolResetCommandBuffer << '\n';
++      s << "\tcommandBufferSimultaneousUse = " << value.commandBufferSimultaneousUse << '\n';
++      s << "\tsecondaryCommandBufferNullFramebuffer = " << value.secondaryCommandBufferNullFramebuffer << '\n';
++      s << "\tdescriptorPoolFreeDescriptorSets = " << value.descriptorPoolFreeDescriptorSets << '\n';
++      s << "\trecyclePipelineMemory = " << value.recyclePipelineMemory << '\n';
++      s << "\tmaxRenderPassSubpasses = " << value.maxRenderPassSubpasses << '\n';
++      s << "\tmaxRenderPassDependencies = " << value.maxRenderPassDependencies << '\n';
++      s << "\tmaxSubpassInputAttachments = " << value.maxSubpassInputAttachments << '\n';
++      s << "\tmaxSubpassPreserveAttachments = " << value.maxSubpassPreserveAttachments << '\n';
++      s << "\tmaxFramebufferAttachments = " << value.maxFramebufferAttachments << '\n';
++      s << "\tmaxDescriptorSetLayoutBindings = " << value.maxDescriptorSetLayoutBindings << '\n';
++      s << "\tmaxQueryFaultCount = " << value.maxQueryFaultCount << '\n';
++      s << "\tmaxCallbackFaultCount = " << value.maxCallbackFaultCount << '\n';
++      s << '}';
++      return s;
++}
++
++std::ostream& operator<< (std::ostream& s, const VkPipelinePoolSize& value)
++{
++      s << "VkPipelinePoolSize = {\n";
++      s << "\tsType = " << value.sType << '\n';
++      s << "\tpNext = " << value.pNext << '\n';
++      s << "\tpoolEntrySize = " << value.poolEntrySize << '\n';
++      s << "\tpoolEntryCount = " << value.poolEntryCount << '\n';
++      s << '}';
++      return s;
++}
++
++std::ostream& operator<< (std::ostream& s, const VkDeviceObjectReservationCreateInfo& value)
++{
++      s << "VkDeviceObjectReservationCreateInfo = {\n";
++      s << "\tsType = " << value.sType << '\n';
++      s << "\tpNext = " << value.pNext << '\n';
++      s << "\tpipelineCacheCreateInfoCount = " << value.pipelineCacheCreateInfoCount << '\n';
++      s << "\tpPipelineCacheCreateInfos = " << value.pPipelineCacheCreateInfos << '\n';
++      s << "\tpipelinePoolSizeCount = " << value.pipelinePoolSizeCount << '\n';
++      s << "\tpPipelinePoolSizes = " << value.pPipelinePoolSizes << '\n';
++      s << "\tsemaphoreRequestCount = " << value.semaphoreRequestCount << '\n';
++      s << "\tcommandBufferRequestCount = " << value.commandBufferRequestCount << '\n';
++      s << "\tfenceRequestCount = " << value.fenceRequestCount << '\n';
++      s << "\tdeviceMemoryRequestCount = " << value.deviceMemoryRequestCount << '\n';
++      s << "\tbufferRequestCount = " << value.bufferRequestCount << '\n';
++      s << "\timageRequestCount = " << value.imageRequestCount << '\n';
++      s << "\teventRequestCount = " << value.eventRequestCount << '\n';
++      s << "\tqueryPoolRequestCount = " << value.queryPoolRequestCount << '\n';
++      s << "\tbufferViewRequestCount = " << value.bufferViewRequestCount << '\n';
++      s << "\timageViewRequestCount = " << value.imageViewRequestCount << '\n';
++      s << "\tlayeredImageViewRequestCount = " << value.layeredImageViewRequestCount << '\n';
++      s << "\tpipelineCacheRequestCount = " << value.pipelineCacheRequestCount << '\n';
++      s << "\tpipelineLayoutRequestCount = " << value.pipelineLayoutRequestCount << '\n';
++      s << "\trenderPassRequestCount = " << value.renderPassRequestCount << '\n';
++      s << "\tgraphicsPipelineRequestCount = " << value.graphicsPipelineRequestCount << '\n';
++      s << "\tcomputePipelineRequestCount = " << value.computePipelineRequestCount << '\n';
++      s << "\tdescriptorSetLayoutRequestCount = " << value.descriptorSetLayoutRequestCount << '\n';
++      s << "\tsamplerRequestCount = " << value.samplerRequestCount << '\n';
++      s << "\tdescriptorPoolRequestCount = " << value.descriptorPoolRequestCount << '\n';
++      s << "\tdescriptorSetRequestCount = " << value.descriptorSetRequestCount << '\n';
++      s << "\tframebufferRequestCount = " << value.framebufferRequestCount << '\n';
++      s << "\tcommandPoolRequestCount = " << value.commandPoolRequestCount << '\n';
++      s << "\tsamplerYcbcrConversionRequestCount = " << value.samplerYcbcrConversionRequestCount << '\n';
++      s << "\tsurfaceRequestCount = " << value.surfaceRequestCount << '\n';
++      s << "\tswapchainRequestCount = " << value.swapchainRequestCount << '\n';
++      s << "\tdisplayModeRequestCount = " << value.displayModeRequestCount << '\n';
++      s << "\tsubpassDescriptionRequestCount = " << value.subpassDescriptionRequestCount << '\n';
++      s << "\tattachmentDescriptionRequestCount = " << value.attachmentDescriptionRequestCount << '\n';
++      s << "\tdescriptorSetLayoutBindingRequestCount = " << value.descriptorSetLayoutBindingRequestCount << '\n';
++      s << "\tdescriptorSetLayoutBindingLimit = " << value.descriptorSetLayoutBindingLimit << '\n';
++      s << "\tmaxImageViewMipLevels = " << value.maxImageViewMipLevels << '\n';
++      s << "\tmaxImageViewArrayLayers = " << value.maxImageViewArrayLayers << '\n';
++      s << "\tmaxLayeredImageViewMipLevels = " << value.maxLayeredImageViewMipLevels << '\n';
++      s << "\tmaxOcclusionQueriesPerPool = " << value.maxOcclusionQueriesPerPool << '\n';
++      s << "\tmaxPipelineStatisticsQueriesPerPool = " << value.maxPipelineStatisticsQueriesPerPool << '\n';
++      s << "\tmaxTimestampQueriesPerPool = " << value.maxTimestampQueriesPerPool << '\n';
++      s << '}';
++      return s;
++}
++
++std::ostream& operator<< (std::ostream& s, const VkCommandPoolMemoryReservationCreateInfo& value)
++{
++      s << "VkCommandPoolMemoryReservationCreateInfo = {\n";
++      s << "\tsType = " << value.sType << '\n';
++      s << "\tpNext = " << value.pNext << '\n';
++      s << "\tcommandPoolReservedSize = " << value.commandPoolReservedSize << '\n';
++      s << "\tcommandPoolMaxCommandBuffers = " << value.commandPoolMaxCommandBuffers << '\n';
++      s << '}';
++      return s;
++}
++
++std::ostream& operator<< (std::ostream& s, const VkCommandPoolMemoryConsumption& value)
++{
++      s << "VkCommandPoolMemoryConsumption = {\n";
++      s << "\tsType = " << value.sType << '\n';
++      s << "\tpNext = " << value.pNext << '\n';
++      s << "\tcommandPoolAllocated = " << value.commandPoolAllocated << '\n';
++      s << "\tcommandPoolReservedSize = " << value.commandPoolReservedSize << '\n';
++      s << "\tcommandBufferAllocated = " << value.commandBufferAllocated << '\n';
++      s << '}';
++      return s;
++}
++
++std::ostream& operator<< (std::ostream& s, const VkPipelinePoolEntrySizeCreateInfo& value)
++{
++      s << "VkPipelinePoolEntrySizeCreateInfo = {\n";
++      s << "\tsType = " << value.sType << '\n';
++      s << "\tpNext = " << value.pNext << '\n';
++      s << "\tpoolEntrySize = " << value.poolEntrySize << '\n';
++      s << '}';
++      return s;
++}
++
++std::ostream& operator<< (std::ostream& s, const VkFaultData& value)
++{
++      s << "VkFaultData = {\n";
++      s << "\tsType = " << value.sType << '\n';
++      s << "\tpNext = " << value.pNext << '\n';
++      s << "\tfaultLevel = " << value.faultLevel << '\n';
++      s << "\tfaultType = " << value.faultType << '\n';
++      s << '}';
++      return s;
++}
++
++std::ostream& operator<< (std::ostream& s, const VkFaultCallbackInfo& value)
++{
++      s << "VkFaultCallbackInfo = {\n";
++      s << "\tsType = " << value.sType << '\n';
++      s << "\tpNext = " << value.pNext << '\n';
++      s << "\tpFaults = " << value.pFaults << '\n';
++      s << "\tpfnFaultCallback = " << value.pfnFaultCallback << '\n';
++      s << '}';
++      return s;
++}
++
++std::ostream& operator<< (std::ostream& s, const VkPipelineIdentifierInfo& value)
++{
++      s << "VkPipelineIdentifierInfo = {\n";
++      s << "\tsType = " << value.sType << '\n';
++      s << "\tpNext = " << value.pNext << '\n';
++      s << "\tpipelineIdentifier = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<deUint8>(DE_ARRAY_BEGIN(value.pipelineIdentifier)), tcu::Format::HexIterator<deUint8>(DE_ARRAY_END(value.pipelineIdentifier))) << '\n';
++      s << "\tmatchControl = " << value.matchControl << '\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 VkPresentInfoKHR& value)
 +{
 +      s << "VkPresentInfoKHR = {\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 << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkImageSwapchainCreateInfoKHR& value)
 +{
 +      s << "VkImageSwapchainCreateInfoKHR = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tswapchain = " << value.swapchain << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkBindImageMemorySwapchainInfoKHR& value)
 +{
 +      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 VkAcquireNextImageInfoKHR& 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 << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkDeviceGroupPresentCapabilitiesKHR& value)
 +{
 +      s << "VkDeviceGroupPresentCapabilitiesKHR = {\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 << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkDeviceGroupPresentInfoKHR& value)
 +{
 +      s << "VkDeviceGroupPresentInfoKHR = {\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 << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkDeviceGroupSwapchainCreateInfoKHR& value)
 +{
 +      s << "VkDeviceGroupSwapchainCreateInfoKHR = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tmodes = " << getDeviceGroupPresentModeFlagsKHRStr(value.modes) << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkDisplayModeParametersKHR& value)
 +{
 +      s << "VkDisplayModeParametersKHR = {\n";
 +      s << "\tvisibleRegion = " << value.visibleRegion << '\n';
 +      s << "\trefreshRate = " << value.refreshRate << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkDisplayModeCreateInfoKHR& value)
 +{
 +      s << "VkDisplayModeCreateInfoKHR = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tflags = " << getDisplayModeCreateFlagsKHRStr(value.flags) << '\n';
 +      s << "\tparameters = " << value.parameters << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkDisplayModePropertiesKHR& value)
 +{
 +      s << "VkDisplayModePropertiesKHR = {\n";
 +      s << "\tdisplayMode = " << value.displayMode << '\n';
 +      s << "\tparameters = " << value.parameters << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkDisplayPlaneCapabilitiesKHR& 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 << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkDisplayPlanePropertiesKHR& value)
 +{
 +      s << "VkDisplayPlanePropertiesKHR = {\n";
 +      s << "\tcurrentDisplay = " << value.currentDisplay << '\n';
 +      s << "\tcurrentStackIndex = " << value.currentStackIndex << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkDisplayPropertiesKHR& 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 << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkDisplaySurfaceCreateInfoKHR& value)
 +{
 +      s << "VkDisplaySurfaceCreateInfoKHR = {\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 << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkDisplayPresentInfoKHR& value)
 +{
 +      s << "VkDisplayPresentInfoKHR = {\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 << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkImportMemoryFdInfoKHR& value)
 +{
 +      s << "VkImportMemoryFdInfoKHR = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\thandleType = " << value.handleType << '\n';
 +      s << "\tfd = " << value.fd << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkMemoryFdPropertiesKHR& value)
 +{
 +      s << "VkMemoryFdPropertiesKHR = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tmemoryTypeBits = " << value.memoryTypeBits << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkMemoryGetFdInfoKHR& value)
 +{
 +      s << "VkMemoryGetFdInfoKHR = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tmemory = " << value.memory << '\n';
 +      s << "\thandleType = " << value.handleType << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkImportSemaphoreFdInfoKHR& value)
 +{
 +      s << "VkImportSemaphoreFdInfoKHR = {\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 << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkSemaphoreGetFdInfoKHR& value)
 +{
 +      s << "VkSemaphoreGetFdInfoKHR = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tsemaphore = " << value.semaphore << '\n';
 +      s << "\thandleType = " << value.handleType << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkRectLayerKHR& value)
 +{
 +      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 VkPresentRegionKHR& value)
 +{
 +      s << "VkPresentRegionKHR = {\n";
 +      s << "\trectangleCount = " << value.rectangleCount << '\n';
 +      s << "\tpRectangles = " << value.pRectangles << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPresentRegionsKHR& value)
 +{
 +      s << "VkPresentRegionsKHR = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tswapchainCount = " << value.swapchainCount << '\n';
 +      s << "\tpRegions = " << value.pRegions << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkSharedPresentSurfaceCapabilitiesKHR& value)
 +{
 +      s << "VkSharedPresentSurfaceCapabilitiesKHR = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tsharedPresentSupportedUsageFlags = " << getImageUsageFlagsStr(value.sharedPresentSupportedUsageFlags) << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkImportFenceFdInfoKHR& value)
 +{
 +      s << "VkImportFenceFdInfoKHR = {\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 << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkFenceGetFdInfoKHR& value)
 +{
 +      s << "VkFenceGetFdInfoKHR = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tfence = " << value.fence << '\n';
 +      s << "\thandleType = " << value.handleType << '\n';
 +      s << '}';
 +      return s;
 +}
 +
++std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePerformanceQueryFeaturesKHR& value)
++{
++      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 VkPhysicalDevicePerformanceQueryPropertiesKHR& value)
++{
++      s << "VkPhysicalDevicePerformanceQueryPropertiesKHR = {\n";
++      s << "\tsType = " << value.sType << '\n';
++      s << "\tpNext = " << value.pNext << '\n';
++      s << "\tallowCommandBufferQueryCopies = " << value.allowCommandBufferQueryCopies << '\n';
++      s << '}';
++      return s;
++}
++
++std::ostream& operator<< (std::ostream& s, const VkPerformanceCounterKHR& 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 << '}';
++      return s;
++}
++
++std::ostream& operator<< (std::ostream& s, const VkPerformanceCounterDescriptionKHR& 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 << '}';
++      return s;
++}
++
++std::ostream& operator<< (std::ostream& s, const VkQueryPoolPerformanceCreateInfoKHR& value)
++{
++      s << "VkQueryPoolPerformanceCreateInfoKHR = {\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 << '}';
++      return s;
++}
++
++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 << "VkAcquireProfilingLockInfoKHR = {\n";
++      s << "\tsType = " << value.sType << '\n';
++      s << "\tpNext = " << value.pNext << '\n';
++      s << "\tflags = " << getAcquireProfilingLockFlagsKHRStr(value.flags) << '\n';
++      s << "\ttimeout = " << value.timeout << '\n';
++      s << '}';
++      return s;
++}
++
++std::ostream& operator<< (std::ostream& s, const VkPerformanceQuerySubmitInfoKHR& value)
++{
++      s << "VkPerformanceQuerySubmitInfoKHR = {\n";
++      s << "\tsType = " << value.sType << '\n';
++      s << "\tpNext = " << value.pNext << '\n';
++      s << "\tcounterPassIndex = " << value.counterPassIndex << '\n';
++      s << '}';
++      return s;
++}
++
++std::ostream& operator<< (std::ostream& s, const VkPerformanceQueryReservationInfoKHR& value)
++{
++      s << "VkPerformanceQueryReservationInfoKHR = {\n";
++      s << "\tsType = " << value.sType << '\n';
++      s << "\tpNext = " << value.pNext << '\n';
++      s << "\tmaxPerformanceQueriesPerPool = " << value.maxPerformanceQueriesPerPool << '\n';
++      s << '}';
++      return s;
++}
++
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSurfaceInfo2KHR& value)
 +{
 +      s << "VkPhysicalDeviceSurfaceInfo2KHR = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tsurface = " << value.surface << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkSurfaceCapabilities2KHR& value)
 +{
 +      s << "VkSurfaceCapabilities2KHR = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tsurfaceCapabilities = " << value.surfaceCapabilities << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkSurfaceFormat2KHR& value)
 +{
 +      s << "VkSurfaceFormat2KHR = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tsurfaceFormat = " << value.surfaceFormat << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkDisplayProperties2KHR& value)
 +{
 +      s << "VkDisplayProperties2KHR = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tdisplayProperties = " << value.displayProperties << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkDisplayPlaneProperties2KHR& value)
 +{
 +      s << "VkDisplayPlaneProperties2KHR = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tdisplayPlaneProperties = " << value.displayPlaneProperties << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkDisplayModeProperties2KHR& value)
 +{
 +      s << "VkDisplayModeProperties2KHR = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tdisplayModeProperties = " << value.displayModeProperties << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkDisplayPlaneInfo2KHR& value)
 +{
 +      s << "VkDisplayPlaneInfo2KHR = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tmode = " << value.mode << '\n';
 +      s << "\tplaneIndex = " << value.planeIndex << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkDisplayPlaneCapabilities2KHR& value)
 +{
 +      s << "VkDisplayPlaneCapabilities2KHR = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tcapabilities = " << value.capabilities << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderClockFeaturesKHR& value)
 +{
 +      s << "VkPhysicalDeviceShaderClockFeaturesKHR = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tshaderSubgroupClock = " << value.shaderSubgroupClock << '\n';
 +      s << "\tshaderDeviceClock = " << value.shaderDeviceClock << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR& value)
 +{
 +      s << "VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tshaderTerminateInvocation = " << value.shaderTerminateInvocation << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkFragmentShadingRateAttachmentInfoKHR& value)
 +{
 +      s << "VkFragmentShadingRateAttachmentInfoKHR = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tpFragmentShadingRateAttachment = " << value.pFragmentShadingRateAttachment << '\n';
 +      s << "\tshadingRateAttachmentTexelSize = " << value.shadingRateAttachmentTexelSize << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPipelineFragmentShadingRateStateCreateInfoKHR& value)
 +{
 +      s << "VkPipelineFragmentShadingRateStateCreateInfoKHR = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tfragmentSize = " << value.fragmentSize << '\n';
 +      s << "\tcombinerOps = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.combinerOps), DE_ARRAY_END(value.combinerOps)) << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFragmentShadingRateFeaturesKHR& value)
 +{
 +      s << "VkPhysicalDeviceFragmentShadingRateFeaturesKHR = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tpipelineFragmentShadingRate = " << value.pipelineFragmentShadingRate << '\n';
 +      s << "\tprimitiveFragmentShadingRate = " << value.primitiveFragmentShadingRate << '\n';
 +      s << "\tattachmentFragmentShadingRate = " << value.attachmentFragmentShadingRate << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFragmentShadingRatePropertiesKHR& value)
 +{
 +      s << "VkPhysicalDeviceFragmentShadingRatePropertiesKHR = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tminFragmentShadingRateAttachmentTexelSize = " << value.minFragmentShadingRateAttachmentTexelSize << '\n';
 +      s << "\tmaxFragmentShadingRateAttachmentTexelSize = " << value.maxFragmentShadingRateAttachmentTexelSize << '\n';
 +      s << "\tmaxFragmentShadingRateAttachmentTexelSizeAspectRatio = " << value.maxFragmentShadingRateAttachmentTexelSizeAspectRatio << '\n';
 +      s << "\tprimitiveFragmentShadingRateWithMultipleViewports = " << value.primitiveFragmentShadingRateWithMultipleViewports << '\n';
 +      s << "\tlayeredShadingRateAttachments = " << value.layeredShadingRateAttachments << '\n';
 +      s << "\tfragmentShadingRateNonTrivialCombinerOps = " << value.fragmentShadingRateNonTrivialCombinerOps << '\n';
 +      s << "\tmaxFragmentSize = " << value.maxFragmentSize << '\n';
 +      s << "\tmaxFragmentSizeAspectRatio = " << value.maxFragmentSizeAspectRatio << '\n';
 +      s << "\tmaxFragmentShadingRateCoverageSamples = " << value.maxFragmentShadingRateCoverageSamples << '\n';
 +      s << "\tmaxFragmentShadingRateRasterizationSamples = " << value.maxFragmentShadingRateRasterizationSamples << '\n';
 +      s << "\tfragmentShadingRateWithShaderDepthStencilWrites = " << value.fragmentShadingRateWithShaderDepthStencilWrites << '\n';
 +      s << "\tfragmentShadingRateWithSampleMask = " << value.fragmentShadingRateWithSampleMask << '\n';
 +      s << "\tfragmentShadingRateWithShaderSampleMask = " << value.fragmentShadingRateWithShaderSampleMask << '\n';
 +      s << "\tfragmentShadingRateWithConservativeRasterization = " << value.fragmentShadingRateWithConservativeRasterization << '\n';
 +      s << "\tfragmentShadingRateWithFragmentShaderInterlock = " << value.fragmentShadingRateWithFragmentShaderInterlock << '\n';
 +      s << "\tfragmentShadingRateWithCustomSampleLocations = " << value.fragmentShadingRateWithCustomSampleLocations << '\n';
 +      s << "\tfragmentShadingRateStrictMultiplyCombiner = " << value.fragmentShadingRateStrictMultiplyCombiner << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFragmentShadingRateKHR& value)
 +{
 +      s << "VkPhysicalDeviceFragmentShadingRateKHR = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tsampleCounts = " << getSampleCountFlagsStr(value.sampleCounts) << '\n';
 +      s << "\tfragmentSize = " << value.fragmentSize << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkRefreshObjectKHR& value)
 +{
 +      s << "VkRefreshObjectKHR = {\n";
 +      s << "\tobjectType = " << value.objectType << '\n';
 +      s << "\tobjectHandle = " << value.objectHandle << '\n';
 +      s << "\tflags = " << getRefreshObjectFlagsKHRStr(value.flags) << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkRefreshObjectListKHR& value)
 +{
 +      s << "VkRefreshObjectListKHR = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tobjectCount = " << value.objectCount << '\n';
 +      s << "\tpObjects = " << value.pObjects << '\n';
 +      s << '}';
 +      return s;
 +}
 +
++std::ostream& operator<< (std::ostream& s, const VkMemoryBarrier2KHR& value)
++{
++      s << "VkMemoryBarrier2KHR = {\n";
++      s << "\tsType = " << value.sType << '\n';
++      s << "\tpNext = " << value.pNext << '\n';
++      s << "\tsrcStageMask = " << value.srcStageMask << '\n';
++      s << "\tsrcAccessMask = " << value.srcAccessMask << '\n';
++      s << "\tdstStageMask = " << value.dstStageMask << '\n';
++      s << "\tdstAccessMask = " << value.dstAccessMask << '\n';
++      s << '}';
++      return s;
++}
++
++std::ostream& operator<< (std::ostream& s, const VkBufferMemoryBarrier2KHR& value)
++{
++      s << "VkBufferMemoryBarrier2KHR = {\n";
++      s << "\tsType = " << value.sType << '\n';
++      s << "\tpNext = " << value.pNext << '\n';
++      s << "\tsrcStageMask = " << value.srcStageMask << '\n';
++      s << "\tsrcAccessMask = " << value.srcAccessMask << '\n';
++      s << "\tdstStageMask = " << value.dstStageMask << '\n';
++      s << "\tdstAccessMask = " << value.dstAccessMask << '\n';
++      s << "\tsrcQueueFamilyIndex = " << value.srcQueueFamilyIndex << '\n';
++      s << "\tdstQueueFamilyIndex = " << value.dstQueueFamilyIndex << '\n';
++      s << "\tbuffer = " << value.buffer << '\n';
++      s << "\toffset = " << value.offset << '\n';
++      s << "\tsize = " << value.size << '\n';
++      s << '}';
++      return s;
++}
++
++std::ostream& operator<< (std::ostream& s, const VkImageMemoryBarrier2KHR& value)
++{
++      s << "VkImageMemoryBarrier2KHR = {\n";
++      s << "\tsType = " << value.sType << '\n';
++      s << "\tpNext = " << value.pNext << '\n';
++      s << "\tsrcStageMask = " << value.srcStageMask << '\n';
++      s << "\tsrcAccessMask = " << value.srcAccessMask << '\n';
++      s << "\tdstStageMask = " << value.dstStageMask << '\n';
++      s << "\tdstAccessMask = " << value.dstAccessMask << '\n';
++      s << "\toldLayout = " << value.oldLayout << '\n';
++      s << "\tnewLayout = " << value.newLayout << '\n';
++      s << "\tsrcQueueFamilyIndex = " << value.srcQueueFamilyIndex << '\n';
++      s << "\tdstQueueFamilyIndex = " << value.dstQueueFamilyIndex << '\n';
++      s << "\timage = " << value.image << '\n';
++      s << "\tsubresourceRange = " << value.subresourceRange << '\n';
++      s << '}';
++      return s;
++}
++
++std::ostream& operator<< (std::ostream& s, const VkDependencyInfoKHR& value)
++{
++      s << "VkDependencyInfoKHR = {\n";
++      s << "\tsType = " << value.sType << '\n';
++      s << "\tpNext = " << value.pNext << '\n';
++      s << "\tdependencyFlags = " << getDependencyFlagsStr(value.dependencyFlags) << '\n';
++      s << "\tmemoryBarrierCount = " << value.memoryBarrierCount << '\n';
++      s << "\tpMemoryBarriers = " << value.pMemoryBarriers << '\n';
++      s << "\tbufferMemoryBarrierCount = " << value.bufferMemoryBarrierCount << '\n';
++      s << "\tpBufferMemoryBarriers = " << value.pBufferMemoryBarriers << '\n';
++      s << "\timageMemoryBarrierCount = " << value.imageMemoryBarrierCount << '\n';
++      s << "\tpImageMemoryBarriers = " << value.pImageMemoryBarriers << '\n';
++      s << '}';
++      return s;
++}
++
++std::ostream& operator<< (std::ostream& s, const VkSemaphoreSubmitInfoKHR& value)
++{
++      s << "VkSemaphoreSubmitInfoKHR = {\n";
++      s << "\tsType = " << value.sType << '\n';
++      s << "\tpNext = " << value.pNext << '\n';
++      s << "\tsemaphore = " << value.semaphore << '\n';
++      s << "\tvalue = " << value.value << '\n';
++      s << "\tstageMask = " << value.stageMask << '\n';
++      s << "\tdeviceIndex = " << value.deviceIndex << '\n';
++      s << '}';
++      return s;
++}
++
++std::ostream& operator<< (std::ostream& s, const VkCommandBufferSubmitInfoKHR& value)
++{
++      s << "VkCommandBufferSubmitInfoKHR = {\n";
++      s << "\tsType = " << value.sType << '\n';
++      s << "\tpNext = " << value.pNext << '\n';
++      s << "\tcommandBuffer = " << value.commandBuffer << '\n';
++      s << "\tdeviceMask = " << value.deviceMask << '\n';
++      s << '}';
++      return s;
++}
++
++std::ostream& operator<< (std::ostream& s, const VkSubmitInfo2KHR& value)
++{
++      s << "VkSubmitInfo2KHR = {\n";
++      s << "\tsType = " << value.sType << '\n';
++      s << "\tpNext = " << value.pNext << '\n';
++      s << "\tflags = " << getSubmitFlagsKHRStr(value.flags) << '\n';
++      s << "\twaitSemaphoreInfoCount = " << value.waitSemaphoreInfoCount << '\n';
++      s << "\tpWaitSemaphoreInfos = " << value.pWaitSemaphoreInfos << '\n';
++      s << "\tcommandBufferInfoCount = " << value.commandBufferInfoCount << '\n';
++      s << "\tpCommandBufferInfos = " << value.pCommandBufferInfos << '\n';
++      s << "\tsignalSemaphoreInfoCount = " << value.signalSemaphoreInfoCount << '\n';
++      s << "\tpSignalSemaphoreInfos = " << value.pSignalSemaphoreInfos << '\n';
++      s << '}';
++      return s;
++}
++
++std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSynchronization2FeaturesKHR& value)
++{
++      s << "VkPhysicalDeviceSynchronization2FeaturesKHR = {\n";
++      s << "\tsType = " << value.sType << '\n';
++      s << "\tpNext = " << value.pNext << '\n';
++      s << "\tsynchronization2 = " << value.synchronization2 << '\n';
++      s << '}';
++      return s;
++}
++
++std::ostream& operator<< (std::ostream& s, const VkQueueFamilyCheckpointProperties2NV& value)
++{
++      s << "VkQueueFamilyCheckpointProperties2NV = {\n";
++      s << "\tsType = " << value.sType << '\n';
++      s << "\tpNext = " << value.pNext << '\n';
++      s << "\tcheckpointExecutionStageMask = " << value.checkpointExecutionStageMask << '\n';
++      s << '}';
++      return s;
++}
++
++std::ostream& operator<< (std::ostream& s, const VkCheckpointData2NV& value)
++{
++      s << "VkCheckpointData2NV = {\n";
++      s << "\tsType = " << value.sType << '\n';
++      s << "\tpNext = " << value.pNext << '\n';
++      s << "\tstage = " << value.stage << '\n';
++      s << "\tpCheckpointMarker = " << value.pCheckpointMarker << '\n';
++      s << '}';
++      return s;
++}
++
 +std::ostream& operator<< (std::ostream& s, const VkBufferCopy2KHR& value)
 +{
 +      s << "VkBufferCopy2KHR = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tsrcOffset = " << value.srcOffset << '\n';
 +      s << "\tdstOffset = " << value.dstOffset << '\n';
 +      s << "\tsize = " << value.size << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkCopyBufferInfo2KHR& value)
 +{
 +      s << "VkCopyBufferInfo2KHR = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tsrcBuffer = " << value.srcBuffer << '\n';
 +      s << "\tdstBuffer = " << value.dstBuffer << '\n';
 +      s << "\tregionCount = " << value.regionCount << '\n';
 +      s << "\tpRegions = " << value.pRegions << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkImageCopy2KHR& value)
 +{
 +      s << "VkImageCopy2KHR = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tsrcSubresource = " << value.srcSubresource << '\n';
 +      s << "\tsrcOffset = " << value.srcOffset << '\n';
 +      s << "\tdstSubresource = " << value.dstSubresource << '\n';
 +      s << "\tdstOffset = " << value.dstOffset << '\n';
 +      s << "\textent = " << value.extent << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkCopyImageInfo2KHR& value)
 +{
 +      s << "VkCopyImageInfo2KHR = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tsrcImage = " << value.srcImage << '\n';
 +      s << "\tsrcImageLayout = " << value.srcImageLayout << '\n';
 +      s << "\tdstImage = " << value.dstImage << '\n';
 +      s << "\tdstImageLayout = " << value.dstImageLayout << '\n';
 +      s << "\tregionCount = " << value.regionCount << '\n';
 +      s << "\tpRegions = " << value.pRegions << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkBufferImageCopy2KHR& value)
 +{
 +      s << "VkBufferImageCopy2KHR = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tbufferOffset = " << value.bufferOffset << '\n';
 +      s << "\tbufferRowLength = " << value.bufferRowLength << '\n';
 +      s << "\tbufferImageHeight = " << value.bufferImageHeight << '\n';
 +      s << "\timageSubresource = " << value.imageSubresource << '\n';
 +      s << "\timageOffset = " << value.imageOffset << '\n';
 +      s << "\timageExtent = " << value.imageExtent << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkCopyBufferToImageInfo2KHR& value)
 +{
 +      s << "VkCopyBufferToImageInfo2KHR = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tsrcBuffer = " << value.srcBuffer << '\n';
 +      s << "\tdstImage = " << value.dstImage << '\n';
 +      s << "\tdstImageLayout = " << value.dstImageLayout << '\n';
 +      s << "\tregionCount = " << value.regionCount << '\n';
 +      s << "\tpRegions = " << value.pRegions << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkCopyImageToBufferInfo2KHR& value)
 +{
 +      s << "VkCopyImageToBufferInfo2KHR = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tsrcImage = " << value.srcImage << '\n';
 +      s << "\tsrcImageLayout = " << value.srcImageLayout << '\n';
 +      s << "\tdstBuffer = " << value.dstBuffer << '\n';
 +      s << "\tregionCount = " << value.regionCount << '\n';
 +      s << "\tpRegions = " << value.pRegions << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkImageBlit2KHR& value)
 +{
 +      s << "VkImageBlit2KHR = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tsrcSubresource = " << value.srcSubresource << '\n';
 +      s << "\tsrcOffsets = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.srcOffsets), DE_ARRAY_END(value.srcOffsets)) << '\n';
 +      s << "\tdstSubresource = " << value.dstSubresource << '\n';
 +      s << "\tdstOffsets = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.dstOffsets), DE_ARRAY_END(value.dstOffsets)) << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkBlitImageInfo2KHR& value)
 +{
 +      s << "VkBlitImageInfo2KHR = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tsrcImage = " << value.srcImage << '\n';
 +      s << "\tsrcImageLayout = " << value.srcImageLayout << '\n';
 +      s << "\tdstImage = " << value.dstImage << '\n';
 +      s << "\tdstImageLayout = " << value.dstImageLayout << '\n';
 +      s << "\tregionCount = " << value.regionCount << '\n';
 +      s << "\tpRegions = " << value.pRegions << '\n';
 +      s << "\tfilter = " << value.filter << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkImageResolve2KHR& value)
 +{
 +      s << "VkImageResolve2KHR = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tsrcSubresource = " << value.srcSubresource << '\n';
 +      s << "\tsrcOffset = " << value.srcOffset << '\n';
 +      s << "\tdstSubresource = " << value.dstSubresource << '\n';
 +      s << "\tdstOffset = " << value.dstOffset << '\n';
 +      s << "\textent = " << value.extent << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkResolveImageInfo2KHR& value)
 +{
 +      s << "VkResolveImageInfo2KHR = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tsrcImage = " << value.srcImage << '\n';
 +      s << "\tsrcImageLayout = " << value.srcImageLayout << '\n';
 +      s << "\tdstImage = " << value.dstImage << '\n';
 +      s << "\tdstImageLayout = " << value.dstImageLayout << '\n';
 +      s << "\tregionCount = " << value.regionCount << '\n';
 +      s << "\tpRegions = " << value.pRegions << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT& value)
 +{
 +      s << "VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\ttextureCompressionASTC_HDR = " << value.textureCompressionASTC_HDR << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkImageViewASTCDecodeModeEXT& value)
 +{
 +      s << "VkImageViewASTCDecodeModeEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tdecodeMode = " << value.decodeMode << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceASTCDecodeFeaturesEXT& value)
 +{
 +      s << "VkPhysicalDeviceASTCDecodeFeaturesEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tdecodeModeSharedExponent = " << value.decodeModeSharedExponent << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkSurfaceCapabilities2EXT& value)
 +{
 +      s << "VkSurfaceCapabilities2EXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\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 << "\tsupportedSurfaceCounters = " << getSurfaceCounterFlagsEXTStr(value.supportedSurfaceCounters) << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkDisplayPowerInfoEXT& value)
 +{
 +      s << "VkDisplayPowerInfoEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tpowerState = " << value.powerState << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkDeviceEventInfoEXT& value)
 +{
 +      s << "VkDeviceEventInfoEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tdeviceEvent = " << value.deviceEvent << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkDisplayEventInfoEXT& value)
 +{
 +      s << "VkDisplayEventInfoEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tdisplayEvent = " << value.displayEvent << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkSwapchainCounterCreateInfoEXT& value)
 +{
 +      s << "VkSwapchainCounterCreateInfoEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tsurfaceCounters = " << getSurfaceCounterFlagsEXTStr(value.surfaceCounters) << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDiscardRectanglePropertiesEXT& value)
 +{
 +      s << "VkPhysicalDeviceDiscardRectanglePropertiesEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tmaxDiscardRectangles = " << value.maxDiscardRectangles << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPipelineDiscardRectangleStateCreateInfoEXT& value)
 +{
 +      s << "VkPipelineDiscardRectangleStateCreateInfoEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tflags = " << getPipelineDiscardRectangleStateCreateFlagsEXTStr(value.flags) << '\n';
 +      s << "\tdiscardRectangleMode = " << value.discardRectangleMode << '\n';
 +      s << "\tdiscardRectangleCount = " << value.discardRectangleCount << '\n';
 +      s << "\tpDiscardRectangles = " << value.pDiscardRectangles << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceConservativeRasterizationPropertiesEXT& value)
 +{
 +      s << "VkPhysicalDeviceConservativeRasterizationPropertiesEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tprimitiveOverestimationSize = " << value.primitiveOverestimationSize << '\n';
 +      s << "\tmaxExtraPrimitiveOverestimationSize = " << value.maxExtraPrimitiveOverestimationSize << '\n';
 +      s << "\textraPrimitiveOverestimationSizeGranularity = " << value.extraPrimitiveOverestimationSizeGranularity << '\n';
 +      s << "\tprimitiveUnderestimation = " << value.primitiveUnderestimation << '\n';
 +      s << "\tconservativePointAndLineRasterization = " << value.conservativePointAndLineRasterization << '\n';
 +      s << "\tdegenerateTrianglesRasterized = " << value.degenerateTrianglesRasterized << '\n';
 +      s << "\tdegenerateLinesRasterized = " << value.degenerateLinesRasterized << '\n';
 +      s << "\tfullyCoveredFragmentShaderInputVariable = " << value.fullyCoveredFragmentShaderInputVariable << '\n';
 +      s << "\tconservativeRasterizationPostDepthCoverage = " << value.conservativeRasterizationPostDepthCoverage << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPipelineRasterizationConservativeStateCreateInfoEXT& value)
 +{
 +      s << "VkPipelineRasterizationConservativeStateCreateInfoEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tflags = " << getPipelineRasterizationConservativeStateCreateFlagsEXTStr(value.flags) << '\n';
 +      s << "\tconservativeRasterizationMode = " << value.conservativeRasterizationMode << '\n';
 +      s << "\textraPrimitiveOverestimationSize = " << value.extraPrimitiveOverestimationSize << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDepthClipEnableFeaturesEXT& value)
 +{
 +      s << "VkPhysicalDeviceDepthClipEnableFeaturesEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tdepthClipEnable = " << value.depthClipEnable << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPipelineRasterizationDepthClipStateCreateInfoEXT& value)
 +{
 +      s << "VkPipelineRasterizationDepthClipStateCreateInfoEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tflags = " << getPipelineRasterizationDepthClipStateCreateFlagsEXTStr(value.flags) << '\n';
 +      s << "\tdepthClipEnable = " << value.depthClipEnable << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkXYColorEXT& value)
 +{
 +      s << "VkXYColorEXT = {\n";
 +      s << "\tx = " << value.x << '\n';
 +      s << "\ty = " << value.y << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkHdrMetadataEXT& value)
 +{
 +      s << "VkHdrMetadataEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tdisplayPrimaryRed = " << value.displayPrimaryRed << '\n';
 +      s << "\tdisplayPrimaryGreen = " << value.displayPrimaryGreen << '\n';
 +      s << "\tdisplayPrimaryBlue = " << value.displayPrimaryBlue << '\n';
 +      s << "\twhitePoint = " << value.whitePoint << '\n';
 +      s << "\tmaxLuminance = " << value.maxLuminance << '\n';
 +      s << "\tminLuminance = " << value.minLuminance << '\n';
 +      s << "\tmaxContentLightLevel = " << value.maxContentLightLevel << '\n';
 +      s << "\tmaxFrameAverageLightLevel = " << value.maxFrameAverageLightLevel << '\n';
 +      s << '}';
 +      return s;
 +}
 +
++std::ostream& operator<< (std::ostream& s, const VkDebugUtilsLabelEXT& value)
++{
++      s << "VkDebugUtilsLabelEXT = {\n";
++      s << "\tsType = " << value.sType << '\n';
++      s << "\tpNext = " << value.pNext << '\n';
++      s << "\tpLabelName = " << getCharPtrStr(value.pLabelName) << '\n';
++      s << "\tcolor = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.color), DE_ARRAY_END(value.color)) << '\n';
++      s << '}';
++      return s;
++}
++
++std::ostream& operator<< (std::ostream& s, const VkDebugUtilsObjectNameInfoEXT& value)
++{
++      s << "VkDebugUtilsObjectNameInfoEXT = {\n";
++      s << "\tsType = " << value.sType << '\n';
++      s << "\tpNext = " << value.pNext << '\n';
++      s << "\tobjectType = " << value.objectType << '\n';
++      s << "\tobjectHandle = " << value.objectHandle << '\n';
++      s << "\tpObjectName = " << getCharPtrStr(value.pObjectName) << '\n';
++      s << '}';
++      return s;
++}
++
++std::ostream& operator<< (std::ostream& s, const VkDebugUtilsMessengerCallbackDataEXT& value)
++{
++      s << "VkDebugUtilsMessengerCallbackDataEXT = {\n";
++      s << "\tsType = " << value.sType << '\n';
++      s << "\tpNext = " << value.pNext << '\n';
++      s << "\tflags = " << getDebugUtilsMessengerCallbackDataFlagsEXTStr(value.flags) << '\n';
++      s << "\tpMessageIdName = " << getCharPtrStr(value.pMessageIdName) << '\n';
++      s << "\tmessageIdNumber = " << value.messageIdNumber << '\n';
++      s << "\tpMessage = " << getCharPtrStr(value.pMessage) << '\n';
++      s << "\tqueueLabelCount = " << value.queueLabelCount << '\n';
++      s << "\tpQueueLabels = " << value.pQueueLabels << '\n';
++      s << "\tcmdBufLabelCount = " << value.cmdBufLabelCount << '\n';
++      s << "\tpCmdBufLabels = " << value.pCmdBufLabels << '\n';
++      s << "\tobjectCount = " << value.objectCount << '\n';
++      s << "\tpObjects = " << value.pObjects << '\n';
++      s << '}';
++      return s;
++}
++
++std::ostream& operator<< (std::ostream& s, const VkDebugUtilsMessengerCreateInfoEXT& value)
++{
++      s << "VkDebugUtilsMessengerCreateInfoEXT = {\n";
++      s << "\tsType = " << value.sType << '\n';
++      s << "\tpNext = " << value.pNext << '\n';
++      s << "\tflags = " << getDebugUtilsMessengerCreateFlagsEXTStr(value.flags) << '\n';
++      s << "\tmessageSeverity = " << getDebugUtilsMessageSeverityFlagsEXTStr(value.messageSeverity) << '\n';
++      s << "\tmessageType = " << getDebugUtilsMessageTypeFlagsEXTStr(value.messageType) << '\n';
++      s << "\tpfnUserCallback = " << value.pfnUserCallback << '\n';
++      s << "\tpUserData = " << value.pUserData << '\n';
++      s << '}';
++      return s;
++}
++
++std::ostream& operator<< (std::ostream& s, const VkDebugUtilsObjectTagInfoEXT& value)
++{
++      s << "VkDebugUtilsObjectTagInfoEXT = {\n";
++      s << "\tsType = " << value.sType << '\n';
++      s << "\tpNext = " << value.pNext << '\n';
++      s << "\tobjectType = " << value.objectType << '\n';
++      s << "\tobjectHandle = " << value.objectHandle << '\n';
++      s << "\ttagName = " << value.tagName << '\n';
++      s << "\ttagSize = " << value.tagSize << '\n';
++      s << "\tpTag = " << value.pTag << '\n';
++      s << '}';
++      return s;
++}
++
 +std::ostream& operator<< (std::ostream& s, const VkSampleLocationEXT& value)
 +{
 +      s << "VkSampleLocationEXT = {\n";
 +      s << "\tx = " << value.x << '\n';
 +      s << "\ty = " << value.y << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkSampleLocationsInfoEXT& value)
 +{
 +      s << "VkSampleLocationsInfoEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tsampleLocationsPerPixel = " << value.sampleLocationsPerPixel << '\n';
 +      s << "\tsampleLocationGridSize = " << value.sampleLocationGridSize << '\n';
 +      s << "\tsampleLocationsCount = " << value.sampleLocationsCount << '\n';
 +      s << "\tpSampleLocations = " << value.pSampleLocations << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkAttachmentSampleLocationsEXT& value)
 +{
 +      s << "VkAttachmentSampleLocationsEXT = {\n";
 +      s << "\tattachmentIndex = " << value.attachmentIndex << '\n';
 +      s << "\tsampleLocationsInfo = " << value.sampleLocationsInfo << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkSubpassSampleLocationsEXT& value)
 +{
 +      s << "VkSubpassSampleLocationsEXT = {\n";
 +      s << "\tsubpassIndex = " << value.subpassIndex << '\n';
 +      s << "\tsampleLocationsInfo = " << value.sampleLocationsInfo << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkRenderPassSampleLocationsBeginInfoEXT& value)
 +{
 +      s << "VkRenderPassSampleLocationsBeginInfoEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tattachmentInitialSampleLocationsCount = " << value.attachmentInitialSampleLocationsCount << '\n';
 +      s << "\tpAttachmentInitialSampleLocations = " << value.pAttachmentInitialSampleLocations << '\n';
 +      s << "\tpostSubpassSampleLocationsCount = " << value.postSubpassSampleLocationsCount << '\n';
 +      s << "\tpPostSubpassSampleLocations = " << value.pPostSubpassSampleLocations << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPipelineSampleLocationsStateCreateInfoEXT& value)
 +{
 +      s << "VkPipelineSampleLocationsStateCreateInfoEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tsampleLocationsEnable = " << value.sampleLocationsEnable << '\n';
 +      s << "\tsampleLocationsInfo = " << value.sampleLocationsInfo << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSampleLocationsPropertiesEXT& value)
 +{
 +      s << "VkPhysicalDeviceSampleLocationsPropertiesEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tsampleLocationSampleCounts = " << getSampleCountFlagsStr(value.sampleLocationSampleCounts) << '\n';
 +      s << "\tmaxSampleLocationGridSize = " << value.maxSampleLocationGridSize << '\n';
 +      s << "\tsampleLocationCoordinateRange = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.sampleLocationCoordinateRange), DE_ARRAY_END(value.sampleLocationCoordinateRange)) << '\n';
 +      s << "\tsampleLocationSubPixelBits = " << value.sampleLocationSubPixelBits << '\n';
 +      s << "\tvariableSampleLocations = " << value.variableSampleLocations << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkMultisamplePropertiesEXT& value)
 +{
 +      s << "VkMultisamplePropertiesEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tmaxSampleLocationGridSize = " << value.maxSampleLocationGridSize << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT& value)
 +{
 +      s << "VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tadvancedBlendCoherentOperations = " << value.advancedBlendCoherentOperations << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT& value)
 +{
 +      s << "VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tadvancedBlendMaxColorAttachments = " << value.advancedBlendMaxColorAttachments << '\n';
 +      s << "\tadvancedBlendIndependentBlend = " << value.advancedBlendIndependentBlend << '\n';
 +      s << "\tadvancedBlendNonPremultipliedSrcColor = " << value.advancedBlendNonPremultipliedSrcColor << '\n';
 +      s << "\tadvancedBlendNonPremultipliedDstColor = " << value.advancedBlendNonPremultipliedDstColor << '\n';
 +      s << "\tadvancedBlendCorrelatedOverlap = " << value.advancedBlendCorrelatedOverlap << '\n';
 +      s << "\tadvancedBlendAllOperations = " << value.advancedBlendAllOperations << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPipelineColorBlendAdvancedStateCreateInfoEXT& value)
 +{
 +      s << "VkPipelineColorBlendAdvancedStateCreateInfoEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tsrcPremultiplied = " << value.srcPremultiplied << '\n';
 +      s << "\tdstPremultiplied = " << value.dstPremultiplied << '\n';
 +      s << "\tblendOverlap = " << value.blendOverlap << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkDrmFormatModifierPropertiesEXT& value)
 +{
 +      s << "VkDrmFormatModifierPropertiesEXT = {\n";
 +      s << "\tdrmFormatModifier = " << value.drmFormatModifier << '\n';
 +      s << "\tdrmFormatModifierPlaneCount = " << value.drmFormatModifierPlaneCount << '\n';
 +      s << "\tdrmFormatModifierTilingFeatures = " << getFormatFeatureFlagsStr(value.drmFormatModifierTilingFeatures) << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkDrmFormatModifierPropertiesListEXT& value)
 +{
 +      s << "VkDrmFormatModifierPropertiesListEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tdrmFormatModifierCount = " << value.drmFormatModifierCount << '\n';
 +      s << "\tpDrmFormatModifierProperties = " << value.pDrmFormatModifierProperties << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceImageDrmFormatModifierInfoEXT& value)
 +{
 +      s << "VkPhysicalDeviceImageDrmFormatModifierInfoEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tdrmFormatModifier = " << value.drmFormatModifier << '\n';
 +      s << "\tsharingMode = " << value.sharingMode << '\n';
 +      s << "\tqueueFamilyIndexCount = " << value.queueFamilyIndexCount << '\n';
 +      s << "\tpQueueFamilyIndices = " << value.pQueueFamilyIndices << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkImageDrmFormatModifierListCreateInfoEXT& value)
 +{
 +      s << "VkImageDrmFormatModifierListCreateInfoEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tdrmFormatModifierCount = " << value.drmFormatModifierCount << '\n';
 +      s << "\tpDrmFormatModifiers = " << value.pDrmFormatModifiers << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkImageDrmFormatModifierExplicitCreateInfoEXT& value)
 +{
 +      s << "VkImageDrmFormatModifierExplicitCreateInfoEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tdrmFormatModifier = " << value.drmFormatModifier << '\n';
 +      s << "\tdrmFormatModifierPlaneCount = " << value.drmFormatModifierPlaneCount << '\n';
 +      s << "\tpPlaneLayouts = " << value.pPlaneLayouts << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkImageDrmFormatModifierPropertiesEXT& value)
 +{
 +      s << "VkImageDrmFormatModifierPropertiesEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tdrmFormatModifier = " << value.drmFormatModifier << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceImageViewImageFormatInfoEXT& value)
 +{
 +      s << "VkPhysicalDeviceImageViewImageFormatInfoEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\timageViewType = " << value.imageViewType << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkFilterCubicImageViewImageFormatPropertiesEXT& value)
 +{
 +      s << "VkFilterCubicImageViewImageFormatPropertiesEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tfilterCubic = " << value.filterCubic << '\n';
 +      s << "\tfilterCubicMinmax = " << value.filterCubicMinmax << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkDeviceQueueGlobalPriorityCreateInfoEXT& value)
 +{
 +      s << "VkDeviceQueueGlobalPriorityCreateInfoEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tglobalPriority = " << value.globalPriority << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkImportMemoryHostPointerInfoEXT& value)
 +{
 +      s << "VkImportMemoryHostPointerInfoEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\thandleType = " << value.handleType << '\n';
 +      s << "\tpHostPointer = " << value.pHostPointer << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkMemoryHostPointerPropertiesEXT& value)
 +{
 +      s << "VkMemoryHostPointerPropertiesEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tmemoryTypeBits = " << value.memoryTypeBits << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExternalMemoryHostPropertiesEXT& value)
 +{
 +      s << "VkPhysicalDeviceExternalMemoryHostPropertiesEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tminImportedHostPointerAlignment = " << value.minImportedHostPointerAlignment << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkCalibratedTimestampInfoEXT& value)
 +{
 +      s << "VkCalibratedTimestampInfoEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\ttimeDomain = " << value.timeDomain << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT& value)
 +{
 +      s << "VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tmaxVertexAttribDivisor = " << value.maxVertexAttribDivisor << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkVertexInputBindingDivisorDescriptionEXT& value)
 +{
 +      s << "VkVertexInputBindingDivisorDescriptionEXT = {\n";
 +      s << "\tbinding = " << value.binding << '\n';
 +      s << "\tdivisor = " << value.divisor << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPipelineVertexInputDivisorStateCreateInfoEXT& value)
 +{
 +      s << "VkPipelineVertexInputDivisorStateCreateInfoEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tvertexBindingDivisorCount = " << value.vertexBindingDivisorCount << '\n';
 +      s << "\tpVertexBindingDivisors = " << value.pVertexBindingDivisors << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT& value)
 +{
 +      s << "VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tvertexAttributeInstanceRateDivisor = " << value.vertexAttributeInstanceRateDivisor << '\n';
 +      s << "\tvertexAttributeInstanceRateZeroDivisor = " << value.vertexAttributeInstanceRateZeroDivisor << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePCIBusInfoPropertiesEXT& value)
 +{
 +      s << "VkPhysicalDevicePCIBusInfoPropertiesEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tpciDomain = " << value.pciDomain << '\n';
 +      s << "\tpciBus = " << value.pciBus << '\n';
 +      s << "\tpciDevice = " << value.pciDevice << '\n';
 +      s << "\tpciFunction = " << value.pciFunction << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSubgroupSizeControlFeaturesEXT& value)
 +{
 +      s << "VkPhysicalDeviceSubgroupSizeControlFeaturesEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tsubgroupSizeControl = " << value.subgroupSizeControl << '\n';
 +      s << "\tcomputeFullSubgroups = " << value.computeFullSubgroups << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSubgroupSizeControlPropertiesEXT& value)
 +{
 +      s << "VkPhysicalDeviceSubgroupSizeControlPropertiesEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tminSubgroupSize = " << value.minSubgroupSize << '\n';
 +      s << "\tmaxSubgroupSize = " << value.maxSubgroupSize << '\n';
 +      s << "\tmaxComputeWorkgroupSubgroups = " << value.maxComputeWorkgroupSubgroups << '\n';
 +      s << "\trequiredSubgroupSizeStages = " << getShaderStageFlagsStr(value.requiredSubgroupSizeStages) << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT& value)
 +{
 +      s << "VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\trequiredSubgroupSize = " << value.requiredSubgroupSize << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT& value)
 +{
 +      s << "VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tshaderImageInt64Atomics = " << value.shaderImageInt64Atomics << '\n';
 +      s << "\tsparseImageInt64Atomics = " << value.sparseImageInt64Atomics << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMemoryBudgetPropertiesEXT& value)
 +{
 +      s << "VkPhysicalDeviceMemoryBudgetPropertiesEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\theapBudget = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.heapBudget), DE_ARRAY_END(value.heapBudget)) << '\n';
 +      s << "\theapUsage = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.heapUsage), DE_ARRAY_END(value.heapUsage)) << '\n';
 +      s << '}';
 +      return s;
 +}
 +
++std::ostream& operator<< (std::ostream& s, const VkValidationFeaturesEXT& value)
++{
++      s << "VkValidationFeaturesEXT = {\n";
++      s << "\tsType = " << value.sType << '\n';
++      s << "\tpNext = " << value.pNext << '\n';
++      s << "\tenabledValidationFeatureCount = " << value.enabledValidationFeatureCount << '\n';
++      s << "\tpEnabledValidationFeatures = " << value.pEnabledValidationFeatures << '\n';
++      s << "\tdisabledValidationFeatureCount = " << value.disabledValidationFeatureCount << '\n';
++      s << "\tpDisabledValidationFeatures = " << value.pDisabledValidationFeatures << '\n';
++      s << '}';
++      return s;
++}
++
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT& value)
 +{
 +      s << "VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tfragmentShaderSampleInterlock = " << value.fragmentShaderSampleInterlock << '\n';
 +      s << "\tfragmentShaderPixelInterlock = " << value.fragmentShaderPixelInterlock << '\n';
 +      s << "\tfragmentShaderShadingRateInterlock = " << value.fragmentShaderShadingRateInterlock << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceYcbcrImageArraysFeaturesEXT& value)
 +{
 +      s << "VkPhysicalDeviceYcbcrImageArraysFeaturesEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tycbcrImageArrays = " << value.ycbcrImageArrays << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkHeadlessSurfaceCreateInfoEXT& value)
 +{
 +      s << "VkHeadlessSurfaceCreateInfoEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tflags = " << getHeadlessSurfaceCreateFlagsEXTStr(value.flags) << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceLineRasterizationFeaturesEXT& value)
 +{
 +      s << "VkPhysicalDeviceLineRasterizationFeaturesEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\trectangularLines = " << value.rectangularLines << '\n';
 +      s << "\tbresenhamLines = " << value.bresenhamLines << '\n';
 +      s << "\tsmoothLines = " << value.smoothLines << '\n';
 +      s << "\tstippledRectangularLines = " << value.stippledRectangularLines << '\n';
 +      s << "\tstippledBresenhamLines = " << value.stippledBresenhamLines << '\n';
 +      s << "\tstippledSmoothLines = " << value.stippledSmoothLines << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceLineRasterizationPropertiesEXT& value)
 +{
 +      s << "VkPhysicalDeviceLineRasterizationPropertiesEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tlineSubPixelPrecisionBits = " << value.lineSubPixelPrecisionBits << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPipelineRasterizationLineStateCreateInfoEXT& value)
 +{
 +      s << "VkPipelineRasterizationLineStateCreateInfoEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tlineRasterizationMode = " << value.lineRasterizationMode << '\n';
 +      s << "\tstippledLineEnable = " << value.stippledLineEnable << '\n';
 +      s << "\tlineStippleFactor = " << value.lineStippleFactor << '\n';
 +      s << "\tlineStipplePattern = " << value.lineStipplePattern << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderAtomicFloatFeaturesEXT& value)
 +{
 +      s << "VkPhysicalDeviceShaderAtomicFloatFeaturesEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tshaderBufferFloat32Atomics = " << value.shaderBufferFloat32Atomics << '\n';
 +      s << "\tshaderBufferFloat32AtomicAdd = " << value.shaderBufferFloat32AtomicAdd << '\n';
 +      s << "\tshaderBufferFloat64Atomics = " << value.shaderBufferFloat64Atomics << '\n';
 +      s << "\tshaderBufferFloat64AtomicAdd = " << value.shaderBufferFloat64AtomicAdd << '\n';
 +      s << "\tshaderSharedFloat32Atomics = " << value.shaderSharedFloat32Atomics << '\n';
 +      s << "\tshaderSharedFloat32AtomicAdd = " << value.shaderSharedFloat32AtomicAdd << '\n';
 +      s << "\tshaderSharedFloat64Atomics = " << value.shaderSharedFloat64Atomics << '\n';
 +      s << "\tshaderSharedFloat64AtomicAdd = " << value.shaderSharedFloat64AtomicAdd << '\n';
 +      s << "\tshaderImageFloat32Atomics = " << value.shaderImageFloat32Atomics << '\n';
 +      s << "\tshaderImageFloat32AtomicAdd = " << value.shaderImageFloat32AtomicAdd << '\n';
 +      s << "\tsparseImageFloat32Atomics = " << value.sparseImageFloat32Atomics << '\n';
 +      s << "\tsparseImageFloat32AtomicAdd = " << value.sparseImageFloat32AtomicAdd << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceIndexTypeUint8FeaturesEXT& value)
 +{
 +      s << "VkPhysicalDeviceIndexTypeUint8FeaturesEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tindexTypeUint8 = " << value.indexTypeUint8 << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExtendedDynamicStateFeaturesEXT& value)
 +{
 +      s << "VkPhysicalDeviceExtendedDynamicStateFeaturesEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\textendedDynamicState = " << value.extendedDynamicState << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT& value)
 +{
 +      s << "VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tshaderDemoteToHelperInvocation = " << value.shaderDemoteToHelperInvocation << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT& value)
 +{
 +      s << "VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\ttexelBufferAlignment = " << value.texelBufferAlignment << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT& value)
 +{
 +      s << "VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tstorageTexelBufferOffsetAlignmentBytes = " << value.storageTexelBufferOffsetAlignmentBytes << '\n';
 +      s << "\tstorageTexelBufferOffsetSingleTexelAlignment = " << value.storageTexelBufferOffsetSingleTexelAlignment << '\n';
 +      s << "\tuniformTexelBufferOffsetAlignmentBytes = " << value.uniformTexelBufferOffsetAlignmentBytes << '\n';
 +      s << "\tuniformTexelBufferOffsetSingleTexelAlignment = " << value.uniformTexelBufferOffsetSingleTexelAlignment << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceRobustness2FeaturesEXT& value)
 +{
 +      s << "VkPhysicalDeviceRobustness2FeaturesEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\trobustBufferAccess2 = " << value.robustBufferAccess2 << '\n';
 +      s << "\trobustImageAccess2 = " << value.robustImageAccess2 << '\n';
 +      s << "\tnullDescriptor = " << value.nullDescriptor << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceRobustness2PropertiesEXT& value)
 +{
 +      s << "VkPhysicalDeviceRobustness2PropertiesEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\trobustStorageBufferAccessSizeAlignment = " << value.robustStorageBufferAccessSizeAlignment << '\n';
 +      s << "\trobustUniformBufferAccessSizeAlignment = " << value.robustUniformBufferAccessSizeAlignment << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkSamplerCustomBorderColorCreateInfoEXT& value)
 +{
 +      s << "VkSamplerCustomBorderColorCreateInfoEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tcustomBorderColor = " << value.customBorderColor << '\n';
 +      s << "\tformat = " << value.format << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceCustomBorderColorPropertiesEXT& value)
 +{
 +      s << "VkPhysicalDeviceCustomBorderColorPropertiesEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tmaxCustomBorderColorSamplers = " << value.maxCustomBorderColorSamplers << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceCustomBorderColorFeaturesEXT& value)
 +{
 +      s << "VkPhysicalDeviceCustomBorderColorFeaturesEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tcustomBorderColors = " << value.customBorderColors << '\n';
 +      s << "\tcustomBorderColorWithoutFormat = " << value.customBorderColorWithoutFormat << '\n';
 +      s << '}';
 +      return s;
 +}
 +
++std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT& value)
++{
++      s << "VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT = {\n";
++      s << "\tsType = " << value.sType << '\n';
++      s << "\tpNext = " << value.pNext << '\n';
++      s << "\tycbcr2plane444Formats = " << value.ycbcr2plane444Formats << '\n';
++      s << '}';
++      return s;
++}
++
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceImageRobustnessFeaturesEXT& value)
 +{
 +      s << "VkPhysicalDeviceImageRobustnessFeaturesEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\trobustImageAccess = " << value.robustImageAccess << '\n';
 +      s << '}';
 +      return s;
 +}
 +
 +std::ostream& operator<< (std::ostream& s, const VkPhysicalDevice4444FormatsFeaturesEXT& value)
 +{
 +      s << "VkPhysicalDevice4444FormatsFeaturesEXT = {\n";
 +      s << "\tsType = " << value.sType << '\n';
 +      s << "\tpNext = " << value.pNext << '\n';
 +      s << "\tformatA4R4G4B4 = " << value.formatA4R4G4B4 << '\n';
 +      s << "\tformatA4B4G4R4 = " << value.formatA4B4G4R4 << '\n';
 +      s << '}';
 +      return s;
 +}
++
++std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT& value)
++{
++      s << "VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT = {\n";
++      s << "\tsType = " << value.sType << '\n';
++      s << "\tpNext = " << value.pNext << '\n';
++      s << "\tvertexInputDynamicState = " << value.vertexInputDynamicState << '\n';
++      s << '}';
++      return s;
++}
++
++std::ostream& operator<< (std::ostream& s, const VkVertexInputBindingDescription2EXT& value)
++{
++      s << "VkVertexInputBindingDescription2EXT = {\n";
++      s << "\tsType = " << value.sType << '\n';
++      s << "\tpNext = " << value.pNext << '\n';
++      s << "\tbinding = " << value.binding << '\n';
++      s << "\tstride = " << value.stride << '\n';
++      s << "\tinputRate = " << value.inputRate << '\n';
++      s << "\tdivisor = " << value.divisor << '\n';
++      s << '}';
++      return s;
++}
++
++std::ostream& operator<< (std::ostream& s, const VkVertexInputAttributeDescription2EXT& value)
++{
++      s << "VkVertexInputAttributeDescription2EXT = {\n";
++      s << "\tsType = " << value.sType << '\n';
++      s << "\tpNext = " << value.pNext << '\n';
++      s << "\tlocation = " << value.location << '\n';
++      s << "\tbinding = " << value.binding << '\n';
++      s << "\tformat = " << value.format << '\n';
++      s << "\toffset = " << value.offset << '\n';
++      s << '}';
++      return s;
++}
++
++std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExtendedDynamicState2FeaturesEXT& value)
++{
++      s << "VkPhysicalDeviceExtendedDynamicState2FeaturesEXT = {\n";
++      s << "\tsType = " << value.sType << '\n';
++      s << "\tpNext = " << value.pNext << '\n';
++      s << "\textendedDynamicState2 = " << value.extendedDynamicState2 << '\n';
++      s << "\textendedDynamicState2LogicOp = " << value.extendedDynamicState2LogicOp << '\n';
++      s << "\textendedDynamicState2PatchControlPoints = " << value.extendedDynamicState2PatchControlPoints << '\n';
++      s << '}';
++      return s;
++}
++
++std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceColorWriteEnableFeaturesEXT& value)
++{
++      s << "VkPhysicalDeviceColorWriteEnableFeaturesEXT = {\n";
++      s << "\tsType = " << value.sType << '\n';
++      s << "\tpNext = " << value.pNext << '\n';
++      s << "\tcolorWriteEnable = " << value.colorWriteEnable << '\n';
++      s << '}';
++      return s;
++}
++
++std::ostream& operator<< (std::ostream& s, const VkPipelineColorWriteCreateInfoEXT& value)
++{
++      s << "VkPipelineColorWriteCreateInfoEXT = {\n";
++      s << "\tsType = " << value.sType << '\n';
++      s << "\tpNext = " << value.pNext << '\n';
++      s << "\tattachmentCount = " << value.attachmentCount << '\n';
++      s << "\tpColorWriteEnables = " << value.pColorWriteEnables << '\n';
++      s << '}';
++      return s;
++}
index 9629b01,0000000..eabe2af
mode 100644,000000..100644
--- /dev/null
@@@ -1,3582 -1,0 +1,3760 @@@
- struct VkSparseMemoryBind
- {
-       VkDeviceSize                    resourceOffset;
-       VkDeviceSize                    size;
-       VkDeviceMemory                  memory;
-       VkDeviceSize                    memoryOffset;
-       VkSparseMemoryBindFlags flags;
- };
- struct VkSparseBufferMemoryBindInfo
- {
-       VkBuffer                                        buffer;
-       deUint32                                        bindCount;
-       const VkSparseMemoryBind*       pBinds;
- };
- struct VkSparseImageOpaqueMemoryBindInfo
- {
-       VkImage                                         image;
-       deUint32                                        bindCount;
-       const VkSparseMemoryBind*       pBinds;
- };
 +/* WARNING: This is auto-generated file. Do not modify, since changes will
 + * be lost! Modify the generating script instead.
 + */
 +struct VkExtent2D
 +{
 +      deUint32        width;
 +      deUint32        height;
 +};
 +
 +struct VkExtent3D
 +{
 +      deUint32        width;
 +      deUint32        height;
 +      deUint32        depth;
 +};
 +
 +struct VkOffset2D
 +{
 +      deInt32 x;
 +      deInt32 y;
 +};
 +
 +struct VkOffset3D
 +{
 +      deInt32 x;
 +      deInt32 y;
 +      deInt32 z;
 +};
 +
 +struct VkRect2D
 +{
 +      VkOffset2D      offset;
 +      VkExtent2D      extent;
 +};
 +
 +struct VkBaseInStructure
 +{
 +      VkStructureType                                 sType;
 +      const struct VkBaseInStructure* pNext;
 +};
 +
 +struct VkBaseOutStructure
 +{
 +      VkStructureType                         sType;
 +      struct VkBaseOutStructure*      pNext;
 +};
 +
 +struct VkBufferMemoryBarrier
 +{
 +      VkStructureType sType;
 +      const void*             pNext;
 +      VkAccessFlags   srcAccessMask;
 +      VkAccessFlags   dstAccessMask;
 +      deUint32                srcQueueFamilyIndex;
 +      deUint32                dstQueueFamilyIndex;
 +      VkBuffer                buffer;
 +      VkDeviceSize    offset;
 +      VkDeviceSize    size;
 +};
 +
 +struct VkDispatchIndirectCommand
 +{
 +      deUint32        x;
 +      deUint32        y;
 +      deUint32        z;
 +};
 +
 +struct VkDrawIndexedIndirectCommand
 +{
 +      deUint32        indexCount;
 +      deUint32        instanceCount;
 +      deUint32        firstIndex;
 +      deInt32         vertexOffset;
 +      deUint32        firstInstance;
 +};
 +
 +struct VkDrawIndirectCommand
 +{
 +      deUint32        vertexCount;
 +      deUint32        instanceCount;
 +      deUint32        firstVertex;
 +      deUint32        firstInstance;
 +};
 +
 +struct VkImageSubresourceRange
 +{
 +      VkImageAspectFlags      aspectMask;
 +      deUint32                        baseMipLevel;
 +      deUint32                        levelCount;
 +      deUint32                        baseArrayLayer;
 +      deUint32                        layerCount;
 +};
 +
 +struct VkImageMemoryBarrier
 +{
 +      VkStructureType                 sType;
 +      const void*                             pNext;
 +      VkAccessFlags                   srcAccessMask;
 +      VkAccessFlags                   dstAccessMask;
 +      VkImageLayout                   oldLayout;
 +      VkImageLayout                   newLayout;
 +      deUint32                                srcQueueFamilyIndex;
 +      deUint32                                dstQueueFamilyIndex;
 +      VkImage                                 image;
 +      VkImageSubresourceRange subresourceRange;
 +};
 +
 +struct VkMemoryBarrier
 +{
 +      VkStructureType sType;
 +      const void*             pNext;
 +      VkAccessFlags   srcAccessMask;
 +      VkAccessFlags   dstAccessMask;
 +};
 +
 +struct VkAllocationCallbacks
 +{
 +      void*                                                                   pUserData;
 +      PFN_vkAllocationFunction                                pfnAllocation;
 +      PFN_vkReallocationFunction                              pfnReallocation;
 +      PFN_vkFreeFunction                                              pfnFree;
 +      PFN_vkInternalAllocationNotification    pfnInternalAllocation;
 +      PFN_vkInternalFreeNotification                  pfnInternalFree;
 +};
 +
 +struct VkApplicationInfo
 +{
 +      VkStructureType sType;
 +      const void*             pNext;
 +      const char*             pApplicationName;
 +      deUint32                applicationVersion;
 +      const char*             pEngineName;
 +      deUint32                engineVersion;
 +      deUint32                apiVersion;
 +};
 +
 +struct VkFormatProperties
 +{
 +      VkFormatFeatureFlags    linearTilingFeatures;
 +      VkFormatFeatureFlags    optimalTilingFeatures;
 +      VkFormatFeatureFlags    bufferFeatures;
 +};
 +
 +struct VkImageFormatProperties
 +{
 +      VkExtent3D                      maxExtent;
 +      deUint32                        maxMipLevels;
 +      deUint32                        maxArrayLayers;
 +      VkSampleCountFlags      sampleCounts;
 +      VkDeviceSize            maxResourceSize;
 +};
 +
 +struct VkInstanceCreateInfo
 +{
 +      VkStructureType                         sType;
 +      const void*                                     pNext;
 +      VkInstanceCreateFlags           flags;
 +      const VkApplicationInfo*        pApplicationInfo;
 +      deUint32                                        enabledLayerCount;
 +      const char* const*                      ppEnabledLayerNames;
 +      deUint32                                        enabledExtensionCount;
 +      const char* const*                      ppEnabledExtensionNames;
 +};
 +
 +struct VkMemoryHeap
 +{
 +      VkDeviceSize            size;
 +      VkMemoryHeapFlags       flags;
 +};
 +
 +struct VkMemoryType
 +{
 +      VkMemoryPropertyFlags   propertyFlags;
 +      deUint32                                heapIndex;
 +};
 +
 +struct VkPhysicalDeviceFeatures
 +{
 +      VkBool32        robustBufferAccess;
 +      VkBool32        fullDrawIndexUint32;
 +      VkBool32        imageCubeArray;
 +      VkBool32        independentBlend;
 +      VkBool32        geometryShader;
 +      VkBool32        tessellationShader;
 +      VkBool32        sampleRateShading;
 +      VkBool32        dualSrcBlend;
 +      VkBool32        logicOp;
 +      VkBool32        multiDrawIndirect;
 +      VkBool32        drawIndirectFirstInstance;
 +      VkBool32        depthClamp;
 +      VkBool32        depthBiasClamp;
 +      VkBool32        fillModeNonSolid;
 +      VkBool32        depthBounds;
 +      VkBool32        wideLines;
 +      VkBool32        largePoints;
 +      VkBool32        alphaToOne;
 +      VkBool32        multiViewport;
 +      VkBool32        samplerAnisotropy;
 +      VkBool32        textureCompressionETC2;
 +      VkBool32        textureCompressionASTC_LDR;
 +      VkBool32        textureCompressionBC;
 +      VkBool32        occlusionQueryPrecise;
 +      VkBool32        pipelineStatisticsQuery;
 +      VkBool32        vertexPipelineStoresAndAtomics;
 +      VkBool32        fragmentStoresAndAtomics;
 +      VkBool32        shaderTessellationAndGeometryPointSize;
 +      VkBool32        shaderImageGatherExtended;
 +      VkBool32        shaderStorageImageExtendedFormats;
 +      VkBool32        shaderStorageImageMultisample;
 +      VkBool32        shaderStorageImageReadWithoutFormat;
 +      VkBool32        shaderStorageImageWriteWithoutFormat;
 +      VkBool32        shaderUniformBufferArrayDynamicIndexing;
 +      VkBool32        shaderSampledImageArrayDynamicIndexing;
 +      VkBool32        shaderStorageBufferArrayDynamicIndexing;
 +      VkBool32        shaderStorageImageArrayDynamicIndexing;
 +      VkBool32        shaderClipDistance;
 +      VkBool32        shaderCullDistance;
 +      VkBool32        shaderFloat64;
 +      VkBool32        shaderInt64;
 +      VkBool32        shaderInt16;
 +      VkBool32        shaderResourceResidency;
 +      VkBool32        shaderResourceMinLod;
 +      VkBool32        sparseBinding;
 +      VkBool32        sparseResidencyBuffer;
 +      VkBool32        sparseResidencyImage2D;
 +      VkBool32        sparseResidencyImage3D;
 +      VkBool32        sparseResidency2Samples;
 +      VkBool32        sparseResidency4Samples;
 +      VkBool32        sparseResidency8Samples;
 +      VkBool32        sparseResidency16Samples;
 +      VkBool32        sparseResidencyAliased;
 +      VkBool32        variableMultisampleRate;
 +      VkBool32        inheritedQueries;
 +};
 +
 +struct VkPhysicalDeviceLimits
 +{
 +      deUint32                        maxImageDimension1D;
 +      deUint32                        maxImageDimension2D;
 +      deUint32                        maxImageDimension3D;
 +      deUint32                        maxImageDimensionCube;
 +      deUint32                        maxImageArrayLayers;
 +      deUint32                        maxTexelBufferElements;
 +      deUint32                        maxUniformBufferRange;
 +      deUint32                        maxStorageBufferRange;
 +      deUint32                        maxPushConstantsSize;
 +      deUint32                        maxMemoryAllocationCount;
 +      deUint32                        maxSamplerAllocationCount;
 +      VkDeviceSize            bufferImageGranularity;
 +      VkDeviceSize            sparseAddressSpaceSize;
 +      deUint32                        maxBoundDescriptorSets;
 +      deUint32                        maxPerStageDescriptorSamplers;
 +      deUint32                        maxPerStageDescriptorUniformBuffers;
 +      deUint32                        maxPerStageDescriptorStorageBuffers;
 +      deUint32                        maxPerStageDescriptorSampledImages;
 +      deUint32                        maxPerStageDescriptorStorageImages;
 +      deUint32                        maxPerStageDescriptorInputAttachments;
 +      deUint32                        maxPerStageResources;
 +      deUint32                        maxDescriptorSetSamplers;
 +      deUint32                        maxDescriptorSetUniformBuffers;
 +      deUint32                        maxDescriptorSetUniformBuffersDynamic;
 +      deUint32                        maxDescriptorSetStorageBuffers;
 +      deUint32                        maxDescriptorSetStorageBuffersDynamic;
 +      deUint32                        maxDescriptorSetSampledImages;
 +      deUint32                        maxDescriptorSetStorageImages;
 +      deUint32                        maxDescriptorSetInputAttachments;
 +      deUint32                        maxVertexInputAttributes;
 +      deUint32                        maxVertexInputBindings;
 +      deUint32                        maxVertexInputAttributeOffset;
 +      deUint32                        maxVertexInputBindingStride;
 +      deUint32                        maxVertexOutputComponents;
 +      deUint32                        maxTessellationGenerationLevel;
 +      deUint32                        maxTessellationPatchSize;
 +      deUint32                        maxTessellationControlPerVertexInputComponents;
 +      deUint32                        maxTessellationControlPerVertexOutputComponents;
 +      deUint32                        maxTessellationControlPerPatchOutputComponents;
 +      deUint32                        maxTessellationControlTotalOutputComponents;
 +      deUint32                        maxTessellationEvaluationInputComponents;
 +      deUint32                        maxTessellationEvaluationOutputComponents;
 +      deUint32                        maxGeometryShaderInvocations;
 +      deUint32                        maxGeometryInputComponents;
 +      deUint32                        maxGeometryOutputComponents;
 +      deUint32                        maxGeometryOutputVertices;
 +      deUint32                        maxGeometryTotalOutputComponents;
 +      deUint32                        maxFragmentInputComponents;
 +      deUint32                        maxFragmentOutputAttachments;
 +      deUint32                        maxFragmentDualSrcAttachments;
 +      deUint32                        maxFragmentCombinedOutputResources;
 +      deUint32                        maxComputeSharedMemorySize;
 +      deUint32                        maxComputeWorkGroupCount[3];
 +      deUint32                        maxComputeWorkGroupInvocations;
 +      deUint32                        maxComputeWorkGroupSize[3];
 +      deUint32                        subPixelPrecisionBits;
 +      deUint32                        subTexelPrecisionBits;
 +      deUint32                        mipmapPrecisionBits;
 +      deUint32                        maxDrawIndexedIndexValue;
 +      deUint32                        maxDrawIndirectCount;
 +      float                           maxSamplerLodBias;
 +      float                           maxSamplerAnisotropy;
 +      deUint32                        maxViewports;
 +      deUint32                        maxViewportDimensions[2];
 +      float                           viewportBoundsRange[2];
 +      deUint32                        viewportSubPixelBits;
 +      deUintptr                       minMemoryMapAlignment;
 +      VkDeviceSize            minTexelBufferOffsetAlignment;
 +      VkDeviceSize            minUniformBufferOffsetAlignment;
 +      VkDeviceSize            minStorageBufferOffsetAlignment;
 +      deInt32                         minTexelOffset;
 +      deUint32                        maxTexelOffset;
 +      deInt32                         minTexelGatherOffset;
 +      deUint32                        maxTexelGatherOffset;
 +      float                           minInterpolationOffset;
 +      float                           maxInterpolationOffset;
 +      deUint32                        subPixelInterpolationOffsetBits;
 +      deUint32                        maxFramebufferWidth;
 +      deUint32                        maxFramebufferHeight;
 +      deUint32                        maxFramebufferLayers;
 +      VkSampleCountFlags      framebufferColorSampleCounts;
 +      VkSampleCountFlags      framebufferDepthSampleCounts;
 +      VkSampleCountFlags      framebufferStencilSampleCounts;
 +      VkSampleCountFlags      framebufferNoAttachmentsSampleCounts;
 +      deUint32                        maxColorAttachments;
 +      VkSampleCountFlags      sampledImageColorSampleCounts;
 +      VkSampleCountFlags      sampledImageIntegerSampleCounts;
 +      VkSampleCountFlags      sampledImageDepthSampleCounts;
 +      VkSampleCountFlags      sampledImageStencilSampleCounts;
 +      VkSampleCountFlags      storageImageSampleCounts;
 +      deUint32                        maxSampleMaskWords;
 +      VkBool32                        timestampComputeAndGraphics;
 +      float                           timestampPeriod;
 +      deUint32                        maxClipDistances;
 +      deUint32                        maxCullDistances;
 +      deUint32                        maxCombinedClipAndCullDistances;
 +      deUint32                        discreteQueuePriorities;
 +      float                           pointSizeRange[2];
 +      float                           lineWidthRange[2];
 +      float                           pointSizeGranularity;
 +      float                           lineWidthGranularity;
 +      VkBool32                        strictLines;
 +      VkBool32                        standardSampleLocations;
 +      VkDeviceSize            optimalBufferCopyOffsetAlignment;
 +      VkDeviceSize            optimalBufferCopyRowPitchAlignment;
 +      VkDeviceSize            nonCoherentAtomSize;
 +};
 +
 +struct VkPhysicalDeviceMemoryProperties
 +{
 +      deUint32                memoryTypeCount;
 +      VkMemoryType    memoryTypes[VK_MAX_MEMORY_TYPES];
 +      deUint32                memoryHeapCount;
 +      VkMemoryHeap    memoryHeaps[VK_MAX_MEMORY_HEAPS];
 +};
 +
 +struct VkPhysicalDeviceSparseProperties
 +{
 +      VkBool32        residencyStandard2DBlockShape;
 +      VkBool32        residencyStandard2DMultisampleBlockShape;
 +      VkBool32        residencyStandard3DBlockShape;
 +      VkBool32        residencyAlignedMipSize;
 +      VkBool32        residencyNonResidentStrict;
 +};
 +
 +struct VkPhysicalDeviceProperties
 +{
 +      deUint32                                                        apiVersion;
 +      deUint32                                                        driverVersion;
 +      deUint32                                                        vendorID;
 +      deUint32                                                        deviceID;
 +      VkPhysicalDeviceType                            deviceType;
 +      char                                                            deviceName[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE];
 +      deUint8                                                         pipelineCacheUUID[VK_UUID_SIZE];
 +      VkPhysicalDeviceLimits                          limits;
 +      VkPhysicalDeviceSparseProperties        sparseProperties;
 +};
 +
 +struct VkQueueFamilyProperties
 +{
 +      VkQueueFlags    queueFlags;
 +      deUint32                queueCount;
 +      deUint32                timestampValidBits;
 +      VkExtent3D              minImageTransferGranularity;
 +};
 +
 +struct VkDeviceQueueCreateInfo
 +{
 +      VkStructureType                         sType;
 +      const void*                                     pNext;
 +      VkDeviceQueueCreateFlags        flags;
 +      deUint32                                        queueFamilyIndex;
 +      deUint32                                        queueCount;
 +      const float*                            pQueuePriorities;
 +};
 +
 +struct VkDeviceCreateInfo
 +{
 +      VkStructureType                                 sType;
 +      const void*                                             pNext;
 +      VkDeviceCreateFlags                             flags;
 +      deUint32                                                queueCreateInfoCount;
 +      const VkDeviceQueueCreateInfo*  pQueueCreateInfos;
 +      deUint32                                                enabledLayerCount;
 +      const char* const*                              ppEnabledLayerNames;
 +      deUint32                                                enabledExtensionCount;
 +      const char* const*                              ppEnabledExtensionNames;
 +      const VkPhysicalDeviceFeatures* pEnabledFeatures;
 +};
 +
 +struct VkExtensionProperties
 +{
 +      char            extensionName[VK_MAX_EXTENSION_NAME_SIZE];
 +      deUint32        specVersion;
 +};
 +
 +struct VkLayerProperties
 +{
 +      char            layerName[VK_MAX_EXTENSION_NAME_SIZE];
 +      deUint32        specVersion;
 +      deUint32        implementationVersion;
 +      char            description[VK_MAX_DESCRIPTION_SIZE];
 +};
 +
 +struct VkSubmitInfo
 +{
 +      VkStructureType                         sType;
 +      const void*                                     pNext;
 +      deUint32                                        waitSemaphoreCount;
 +      const VkSemaphore*                      pWaitSemaphores;
 +      const VkPipelineStageFlags*     pWaitDstStageMask;
 +      deUint32                                        commandBufferCount;
 +      const VkCommandBuffer*          pCommandBuffers;
 +      deUint32                                        signalSemaphoreCount;
 +      const VkSemaphore*                      pSignalSemaphores;
 +};
 +
 +struct VkMappedMemoryRange
 +{
 +      VkStructureType sType;
 +      const void*             pNext;
 +      VkDeviceMemory  memory;
 +      VkDeviceSize    offset;
 +      VkDeviceSize    size;
 +};
 +
 +struct VkMemoryAllocateInfo
 +{
 +      VkStructureType sType;
 +      const void*             pNext;
 +      VkDeviceSize    allocationSize;
 +      deUint32                memoryTypeIndex;
 +};
 +
 +struct VkMemoryRequirements
 +{
 +      VkDeviceSize    size;
 +      VkDeviceSize    alignment;
 +      deUint32                memoryTypeBits;
 +};
 +
- struct VkSparseImageMemoryBind
- {
-       VkImageSubresource              subresource;
-       VkOffset3D                              offset;
-       VkExtent3D                              extent;
-       VkDeviceMemory                  memory;
-       VkDeviceSize                    memoryOffset;
-       VkSparseMemoryBindFlags flags;
- };
- struct VkSparseImageMemoryBindInfo
- {
-       VkImage                                                 image;
-       deUint32                                                bindCount;
-       const VkSparseImageMemoryBind*  pBinds;
- };
- struct VkBindSparseInfo
- {
-       VkStructureType                                                         sType;
-       const void*                                                                     pNext;
-       deUint32                                                                        waitSemaphoreCount;
-       const VkSemaphore*                                                      pWaitSemaphores;
-       deUint32                                                                        bufferBindCount;
-       const VkSparseBufferMemoryBindInfo*                     pBufferBinds;
-       deUint32                                                                        imageOpaqueBindCount;
-       const VkSparseImageOpaqueMemoryBindInfo*        pImageOpaqueBinds;
-       deUint32                                                                        imageBindCount;
-       const VkSparseImageMemoryBindInfo*                      pImageBinds;
-       deUint32                                                                        signalSemaphoreCount;
-       const VkSemaphore*                                                      pSignalSemaphores;
- };
- struct VkSparseImageFormatProperties
- {
-       VkImageAspectFlags                      aspectMask;
-       VkExtent3D                                      imageGranularity;
-       VkSparseImageFormatFlags        flags;
- };
- struct VkSparseImageMemoryRequirements
- {
-       VkSparseImageFormatProperties   formatProperties;
-       deUint32                                                imageMipTailFirstLod;
-       VkDeviceSize                                    imageMipTailSize;
-       VkDeviceSize                                    imageMipTailOffset;
-       VkDeviceSize                                    imageMipTailStride;
- };
 +struct VkImageSubresource
 +{
 +      VkImageAspectFlags      aspectMask;
 +      deUint32                        mipLevel;
 +      deUint32                        arrayLayer;
 +};
 +
- struct VkPhysicalDeviceVulkanSC10Features
- {
-       VkStructureType sType;
-       void*                   pNext;
-       VkBool32                pipelineIdentifier;
-       VkBool32                shaderAtomicInstructions;
- };
- struct VkPhysicalDeviceVulkanSC10Properties
- {
-       VkStructureType sType;
-       void*                   pNext;
-       VkBool32                deviceDestroyFreesMemory;
-       VkBool32                commandPoolMultipleCommandBuffersRecording;
-       VkBool32                commandPoolResetCommandBuffer;
-       VkBool32                descriptorPoolFreeDescriptorSets;
-       VkBool32                externalSubpassDependencies;
-       VkBool32                recyclePipelineMemory;
-       deUint32                maxSubpasses;
-       deUint32                maxInputAttachments;
-       deUint32                maxPreserveAttachments;
-       deUint32                maxFramebufferAttachments;
-       deUint32                maxQueryFaultCount;
-       deUint32                maxCallbackFaultCount;
-       VkBool32                commandBufferSimultaneousUse;
-       VkBool32                secondaryCommandBufferNullFramebuffer;
- };
- struct VkPipelinePoolSize
- {
-       VkStructureType sType;
-       const void*             pNext;
-       VkDeviceSize    poolEntrySize;
-       deUint32                poolEntryCount;
- };
- struct VkDeviceMemoryReservationCreateInfo
- {
-       VkStructureType                                         sType;
-       const void*                                                     pNext;
-       deUint32                                                        pipelineCacheCreateInfoCount;
-       const VkPipelineCacheCreateInfo*        pPipelineCacheCreateInfos;
-       deUint32                                                        pipelinePoolSizeCount;
-       const VkPipelinePoolSize*                       pPipelinePoolSizes;
-       deUint32                                                        descriptorSetLayoutBindingCount;
-       deUint32                                                        imageViewMaxMipLevels;
-       deUint32                                                        imageViewMaxArrayLayers;
-       deUint32                                                        layeredImageViewMaxMipLevels;
-       deUint32                                                        semaphoreRequestCount;
-       deUint32                                                        commandBufferRequestCount;
-       deUint32                                                        fenceRequestCount;
-       deUint32                                                        deviceMemoryRequestCount;
-       deUint32                                                        bufferRequestCount;
-       deUint32                                                        imageRequestCount;
-       deUint32                                                        eventRequestCount;
-       deUint32                                                        queryPoolRequestCount;
-       deUint32                                                        bufferViewRequestCount;
-       deUint32                                                        imageViewRequestCount;
-       deUint32                                                        layeredImageViewRequestCount;
-       deUint32                                                        pipelineLayoutRequestCount;
-       deUint32                                                        renderPassRequestCount;
-       deUint32                                                        graphicsPipelineRequestCount;
-       deUint32                                                        computePipelineRequestCount;
-       deUint32                                                        descriptorSetLayoutRequestCount;
-       deUint32                                                        samplerRequestCount;
-       deUint32                                                        descriptorPoolRequestCount;
-       deUint32                                                        descriptorSetRequestCount;
-       deUint32                                                        framebufferRequestCount;
-       deUint32                                                        commandPoolRequestCount;
-       deUint32                                                        samplerYcbcrConversionRequestCount;
-       deUint32                                                        surfaceRequestCount;
-       deUint32                                                        swapchainRequestCount;
-       deUint32                                                        displayModeRequestCount;
- };
- struct VkCommandPoolMemoryReservationCreateInfo
- {
-       VkStructureType sType;
-       const void*             pNext;
-       VkDeviceSize    commandPoolReservedSize;
-       deUint32                commandPoolMaxCommandBuffers;
- };
- struct VkCommandPoolMemoryConsumption
- {
-       VkStructureType sType;
-       void*                   pNext;
-       VkDeviceSize    commandPoolAllocated;
-       VkDeviceSize    commandPoolReservedSize;
-       VkDeviceSize    commandBufferAllocated;
- };
- struct VkPipelinePoolEntrySizeCreateInfo
- {
-       VkStructureType sType;
-       const void*             pNext;
-       VkDeviceSize    poolEntrySize;
- };
- struct VkFaultData
- {
-       VkStructureType sType;
-       void*                   pNext;
-       VkFaultLevel    faultLevel;
-       VkFaultType             faultType;
- };
- struct VkFaultCallbackInfo
- {
-       VkStructureType                         sType;
-       void*                                           pNext;
-       VkFaultData*                            pFaults;
-       PFN_vkFaultCallbackFunction     pfnFaultCallback;
- };
- struct VkPhysicalDeviceFaultHandlingProperties
- {
-       VkStructureType sType;
-       void*                   pNext;
-       deUint32                maxQueryFaultCount;
-       deUint32                maxCallbackFaultCount;
- };
- struct VkPhysicalDevicePipelineIdentifierFeatures
- {
-       VkStructureType sType;
-       void*                   pNext;
-       VkBool32                pipelineIdentifier;
- };
- struct VkPipelineIdentifierInfo
- {
-       VkStructureType                 sType;
-       const void*                             pNext;
-       deUint8                                 pipelineIdentifier[VK_UUID_SIZE];
-       VkPipelineMatchControl  matchControl;
- };
 +struct VkFenceCreateInfo
 +{
 +      VkStructureType         sType;
 +      const void*                     pNext;
 +      VkFenceCreateFlags      flags;
 +};
 +
 +struct VkSemaphoreCreateInfo
 +{
 +      VkStructureType                 sType;
 +      const void*                             pNext;
 +      VkSemaphoreCreateFlags  flags;
 +};
 +
 +struct VkEventCreateInfo
 +{
 +      VkStructureType         sType;
 +      const void*                     pNext;
 +      VkEventCreateFlags      flags;
 +};
 +
 +struct VkQueryPoolCreateInfo
 +{
 +      VkStructureType                                 sType;
 +      const void*                                             pNext;
 +      VkQueryPoolCreateFlags                  flags;
 +      VkQueryType                                             queryType;
 +      deUint32                                                queryCount;
 +      VkQueryPipelineStatisticFlags   pipelineStatistics;
 +};
 +
 +struct VkBufferCreateInfo
 +{
 +      VkStructureType         sType;
 +      const void*                     pNext;
 +      VkBufferCreateFlags     flags;
 +      VkDeviceSize            size;
 +      VkBufferUsageFlags      usage;
 +      VkSharingMode           sharingMode;
 +      deUint32                        queueFamilyIndexCount;
 +      const deUint32*         pQueueFamilyIndices;
 +};
 +
 +struct VkBufferViewCreateInfo
 +{
 +      VkStructureType                 sType;
 +      const void*                             pNext;
 +      VkBufferViewCreateFlags flags;
 +      VkBuffer                                buffer;
 +      VkFormat                                format;
 +      VkDeviceSize                    offset;
 +      VkDeviceSize                    range;
 +};
 +
 +struct VkImageCreateInfo
 +{
 +      VkStructureType                 sType;
 +      const void*                             pNext;
 +      VkImageCreateFlags              flags;
 +      VkImageType                             imageType;
 +      VkFormat                                format;
 +      VkExtent3D                              extent;
 +      deUint32                                mipLevels;
 +      deUint32                                arrayLayers;
 +      VkSampleCountFlagBits   samples;
 +      VkImageTiling                   tiling;
 +      VkImageUsageFlags               usage;
 +      VkSharingMode                   sharingMode;
 +      deUint32                                queueFamilyIndexCount;
 +      const deUint32*                 pQueueFamilyIndices;
 +      VkImageLayout                   initialLayout;
 +};
 +
 +struct VkSubresourceLayout
 +{
 +      VkDeviceSize    offset;
 +      VkDeviceSize    size;
 +      VkDeviceSize    rowPitch;
 +      VkDeviceSize    arrayPitch;
 +      VkDeviceSize    depthPitch;
 +};
 +
 +struct VkComponentMapping
 +{
 +      VkComponentSwizzle      r;
 +      VkComponentSwizzle      g;
 +      VkComponentSwizzle      b;
 +      VkComponentSwizzle      a;
 +};
 +
 +struct VkImageViewCreateInfo
 +{
 +      VkStructureType                 sType;
 +      const void*                             pNext;
 +      VkImageViewCreateFlags  flags;
 +      VkImage                                 image;
 +      VkImageViewType                 viewType;
 +      VkFormat                                format;
 +      VkComponentMapping              components;
 +      VkImageSubresourceRange subresourceRange;
 +};
 +
 +struct VkPipelineCacheCreateInfo
 +{
 +      VkStructureType                         sType;
 +      const void*                                     pNext;
 +      VkPipelineCacheCreateFlags      flags;
 +      deUintptr                                       initialDataSize;
 +      const void*                                     pInitialData;
 +};
 +
 +struct VkSpecializationMapEntry
 +{
 +      deUint32        constantID;
 +      deUint32        offset;
 +      deUintptr       size;
 +};
 +
 +struct VkSpecializationInfo
 +{
 +      deUint32                                                mapEntryCount;
 +      const VkSpecializationMapEntry* pMapEntries;
 +      deUintptr                                               dataSize;
 +      const void*                                             pData;
 +};
 +
 +struct VkPipelineShaderStageCreateInfo
 +{
 +      VkStructureType                                         sType;
 +      const void*                                                     pNext;
 +      VkPipelineShaderStageCreateFlags        flags;
 +      VkShaderStageFlagBits                           stage;
 +      VkShaderModule                                          module;
 +      const char*                                                     pName;
 +      const VkSpecializationInfo*                     pSpecializationInfo;
 +};
 +
 +struct VkComputePipelineCreateInfo
 +{
 +      VkStructureType                                 sType;
 +      const void*                                             pNext;
 +      VkPipelineCreateFlags                   flags;
 +      VkPipelineShaderStageCreateInfo stage;
 +      VkPipelineLayout                                layout;
 +      VkPipeline                                              basePipelineHandle;
 +      deInt32                                                 basePipelineIndex;
 +};
 +
 +struct VkVertexInputBindingDescription
 +{
 +      deUint32                        binding;
 +      deUint32                        stride;
 +      VkVertexInputRate       inputRate;
 +};
 +
 +struct VkVertexInputAttributeDescription
 +{
 +      deUint32        location;
 +      deUint32        binding;
 +      VkFormat        format;
 +      deUint32        offset;
 +};
 +
 +struct VkPipelineVertexInputStateCreateInfo
 +{
 +      VkStructureType                                                         sType;
 +      const void*                                                                     pNext;
 +      VkPipelineVertexInputStateCreateFlags           flags;
 +      deUint32                                                                        vertexBindingDescriptionCount;
 +      const VkVertexInputBindingDescription*          pVertexBindingDescriptions;
 +      deUint32                                                                        vertexAttributeDescriptionCount;
 +      const VkVertexInputAttributeDescription*        pVertexAttributeDescriptions;
 +};
 +
 +struct VkPipelineInputAssemblyStateCreateInfo
 +{
 +      VkStructureType                                                 sType;
 +      const void*                                                             pNext;
 +      VkPipelineInputAssemblyStateCreateFlags flags;
 +      VkPrimitiveTopology                                             topology;
 +      VkBool32                                                                primitiveRestartEnable;
 +};
 +
 +struct VkPipelineTessellationStateCreateInfo
 +{
 +      VkStructureType                                                 sType;
 +      const void*                                                             pNext;
 +      VkPipelineTessellationStateCreateFlags  flags;
 +      deUint32                                                                patchControlPoints;
 +};
 +
 +struct VkViewport
 +{
 +      float   x;
 +      float   y;
 +      float   width;
 +      float   height;
 +      float   minDepth;
 +      float   maxDepth;
 +};
 +
 +struct VkPipelineViewportStateCreateInfo
 +{
 +      VkStructureType                                         sType;
 +      const void*                                                     pNext;
 +      VkPipelineViewportStateCreateFlags      flags;
 +      deUint32                                                        viewportCount;
 +      const VkViewport*                                       pViewports;
 +      deUint32                                                        scissorCount;
 +      const VkRect2D*                                         pScissors;
 +};
 +
 +struct VkPipelineRasterizationStateCreateInfo
 +{
 +      VkStructureType                                                 sType;
 +      const void*                                                             pNext;
 +      VkPipelineRasterizationStateCreateFlags flags;
 +      VkBool32                                                                depthClampEnable;
 +      VkBool32                                                                rasterizerDiscardEnable;
 +      VkPolygonMode                                                   polygonMode;
 +      VkCullModeFlags                                                 cullMode;
 +      VkFrontFace                                                             frontFace;
 +      VkBool32                                                                depthBiasEnable;
 +      float                                                                   depthBiasConstantFactor;
 +      float                                                                   depthBiasClamp;
 +      float                                                                   depthBiasSlopeFactor;
 +      float                                                                   lineWidth;
 +};
 +
 +struct VkPipelineMultisampleStateCreateInfo
 +{
 +      VkStructureType                                                 sType;
 +      const void*                                                             pNext;
 +      VkPipelineMultisampleStateCreateFlags   flags;
 +      VkSampleCountFlagBits                                   rasterizationSamples;
 +      VkBool32                                                                sampleShadingEnable;
 +      float                                                                   minSampleShading;
 +      const VkSampleMask*                                             pSampleMask;
 +      VkBool32                                                                alphaToCoverageEnable;
 +      VkBool32                                                                alphaToOneEnable;
 +};
 +
 +struct VkStencilOpState
 +{
 +      VkStencilOp     failOp;
 +      VkStencilOp     passOp;
 +      VkStencilOp     depthFailOp;
 +      VkCompareOp     compareOp;
 +      deUint32        compareMask;
 +      deUint32        writeMask;
 +      deUint32        reference;
 +};
 +
 +struct VkPipelineDepthStencilStateCreateInfo
 +{
 +      VkStructureType                                                 sType;
 +      const void*                                                             pNext;
 +      VkPipelineDepthStencilStateCreateFlags  flags;
 +      VkBool32                                                                depthTestEnable;
 +      VkBool32                                                                depthWriteEnable;
 +      VkCompareOp                                                             depthCompareOp;
 +      VkBool32                                                                depthBoundsTestEnable;
 +      VkBool32                                                                stencilTestEnable;
 +      VkStencilOpState                                                front;
 +      VkStencilOpState                                                back;
 +      float                                                                   minDepthBounds;
 +      float                                                                   maxDepthBounds;
 +};
 +
 +struct VkPipelineColorBlendAttachmentState
 +{
 +      VkBool32                                blendEnable;
 +      VkBlendFactor                   srcColorBlendFactor;
 +      VkBlendFactor                   dstColorBlendFactor;
 +      VkBlendOp                               colorBlendOp;
 +      VkBlendFactor                   srcAlphaBlendFactor;
 +      VkBlendFactor                   dstAlphaBlendFactor;
 +      VkBlendOp                               alphaBlendOp;
 +      VkColorComponentFlags   colorWriteMask;
 +};
 +
 +struct VkPipelineColorBlendStateCreateInfo
 +{
 +      VkStructureType                                                         sType;
 +      const void*                                                                     pNext;
 +      VkPipelineColorBlendStateCreateFlags            flags;
 +      VkBool32                                                                        logicOpEnable;
 +      VkLogicOp                                                                       logicOp;
 +      deUint32                                                                        attachmentCount;
 +      const VkPipelineColorBlendAttachmentState*      pAttachments;
 +      float                                                                           blendConstants[4];
 +};
 +
 +struct VkPipelineDynamicStateCreateInfo
 +{
 +      VkStructureType                                         sType;
 +      const void*                                                     pNext;
 +      VkPipelineDynamicStateCreateFlags       flags;
 +      deUint32                                                        dynamicStateCount;
 +      const VkDynamicState*                           pDynamicStates;
 +};
 +
 +struct VkGraphicsPipelineCreateInfo
 +{
 +      VkStructureType                                                                 sType;
 +      const void*                                                                             pNext;
 +      VkPipelineCreateFlags                                                   flags;
 +      deUint32                                                                                stageCount;
 +      const VkPipelineShaderStageCreateInfo*                  pStages;
 +      const VkPipelineVertexInputStateCreateInfo*             pVertexInputState;
 +      const VkPipelineInputAssemblyStateCreateInfo*   pInputAssemblyState;
 +      const VkPipelineTessellationStateCreateInfo*    pTessellationState;
 +      const VkPipelineViewportStateCreateInfo*                pViewportState;
 +      const VkPipelineRasterizationStateCreateInfo*   pRasterizationState;
 +      const VkPipelineMultisampleStateCreateInfo*             pMultisampleState;
 +      const VkPipelineDepthStencilStateCreateInfo*    pDepthStencilState;
 +      const VkPipelineColorBlendStateCreateInfo*              pColorBlendState;
 +      const VkPipelineDynamicStateCreateInfo*                 pDynamicState;
 +      VkPipelineLayout                                                                layout;
 +      VkRenderPass                                                                    renderPass;
 +      deUint32                                                                                subpass;
 +      VkPipeline                                                                              basePipelineHandle;
 +      deInt32                                                                                 basePipelineIndex;
 +};
 +
 +struct VkPushConstantRange
 +{
 +      VkShaderStageFlags      stageFlags;
 +      deUint32                        offset;
 +      deUint32                        size;
 +};
 +
 +struct VkPipelineLayoutCreateInfo
 +{
 +      VkStructureType                                 sType;
 +      const void*                                             pNext;
 +      VkPipelineLayoutCreateFlags             flags;
 +      deUint32                                                setLayoutCount;
 +      const VkDescriptorSetLayout*    pSetLayouts;
 +      deUint32                                                pushConstantRangeCount;
 +      const VkPushConstantRange*              pPushConstantRanges;
 +};
 +
 +struct VkSamplerCreateInfo
 +{
 +      VkStructureType                 sType;
 +      const void*                             pNext;
 +      VkSamplerCreateFlags    flags;
 +      VkFilter                                magFilter;
 +      VkFilter                                minFilter;
 +      VkSamplerMipmapMode             mipmapMode;
 +      VkSamplerAddressMode    addressModeU;
 +      VkSamplerAddressMode    addressModeV;
 +      VkSamplerAddressMode    addressModeW;
 +      float                                   mipLodBias;
 +      VkBool32                                anisotropyEnable;
 +      float                                   maxAnisotropy;
 +      VkBool32                                compareEnable;
 +      VkCompareOp                             compareOp;
 +      float                                   minLod;
 +      float                                   maxLod;
 +      VkBorderColor                   borderColor;
 +      VkBool32                                unnormalizedCoordinates;
 +};
 +
 +struct VkCopyDescriptorSet
 +{
 +      VkStructureType sType;
 +      const void*             pNext;
 +      VkDescriptorSet srcSet;
 +      deUint32                srcBinding;
 +      deUint32                srcArrayElement;
 +      VkDescriptorSet dstSet;
 +      deUint32                dstBinding;
 +      deUint32                dstArrayElement;
 +      deUint32                descriptorCount;
 +};
 +
 +struct VkDescriptorBufferInfo
 +{
 +      VkBuffer                buffer;
 +      VkDeviceSize    offset;
 +      VkDeviceSize    range;
 +};
 +
 +struct VkDescriptorImageInfo
 +{
 +      VkSampler               sampler;
 +      VkImageView             imageView;
 +      VkImageLayout   imageLayout;
 +};
 +
 +struct VkDescriptorPoolSize
 +{
 +      VkDescriptorType        type;
 +      deUint32                        descriptorCount;
 +};
 +
 +struct VkDescriptorPoolCreateInfo
 +{
 +      VkStructureType                         sType;
 +      const void*                                     pNext;
 +      VkDescriptorPoolCreateFlags     flags;
 +      deUint32                                        maxSets;
 +      deUint32                                        poolSizeCount;
 +      const VkDescriptorPoolSize*     pPoolSizes;
 +};
 +
 +struct VkDescriptorSetAllocateInfo
 +{
 +      VkStructureType                                 sType;
 +      const void*                                             pNext;
 +      VkDescriptorPool                                descriptorPool;
 +      deUint32                                                descriptorSetCount;
 +      const VkDescriptorSetLayout*    pSetLayouts;
 +};
 +
 +struct VkDescriptorSetLayoutBinding
 +{
 +      deUint32                        binding;
 +      VkDescriptorType        descriptorType;
 +      deUint32                        descriptorCount;
 +      VkShaderStageFlags      stageFlags;
 +      const VkSampler*        pImmutableSamplers;
 +};
 +
 +struct VkDescriptorSetLayoutCreateInfo
 +{
 +      VkStructureType                                         sType;
 +      const void*                                                     pNext;
 +      VkDescriptorSetLayoutCreateFlags        flags;
 +      deUint32                                                        bindingCount;
 +      const VkDescriptorSetLayoutBinding*     pBindings;
 +};
 +
 +struct VkWriteDescriptorSet
 +{
 +      VkStructureType                                 sType;
 +      const void*                                             pNext;
 +      VkDescriptorSet                                 dstSet;
 +      deUint32                                                dstBinding;
 +      deUint32                                                dstArrayElement;
 +      deUint32                                                descriptorCount;
 +      VkDescriptorType                                descriptorType;
 +      const VkDescriptorImageInfo*    pImageInfo;
 +      const VkDescriptorBufferInfo*   pBufferInfo;
 +      const VkBufferView*                             pTexelBufferView;
 +};
 +
 +struct VkAttachmentDescription
 +{
 +      VkAttachmentDescriptionFlags    flags;
 +      VkFormat                                                format;
 +      VkSampleCountFlagBits                   samples;
 +      VkAttachmentLoadOp                              loadOp;
 +      VkAttachmentStoreOp                             storeOp;
 +      VkAttachmentLoadOp                              stencilLoadOp;
 +      VkAttachmentStoreOp                             stencilStoreOp;
 +      VkImageLayout                                   initialLayout;
 +      VkImageLayout                                   finalLayout;
 +};
 +
 +struct VkAttachmentReference
 +{
 +      deUint32                attachment;
 +      VkImageLayout   layout;
 +};
 +
 +struct VkFramebufferCreateInfo
 +{
 +      VkStructureType                         sType;
 +      const void*                                     pNext;
 +      VkFramebufferCreateFlags        flags;
 +      VkRenderPass                            renderPass;
 +      deUint32                                        attachmentCount;
 +      const VkImageView*                      pAttachments;
 +      deUint32                                        width;
 +      deUint32                                        height;
 +      deUint32                                        layers;
 +};
 +
 +struct VkSubpassDescription
 +{
 +      VkSubpassDescriptionFlags               flags;
 +      VkPipelineBindPoint                             pipelineBindPoint;
 +      deUint32                                                inputAttachmentCount;
 +      const VkAttachmentReference*    pInputAttachments;
 +      deUint32                                                colorAttachmentCount;
 +      const VkAttachmentReference*    pColorAttachments;
 +      const VkAttachmentReference*    pResolveAttachments;
 +      const VkAttachmentReference*    pDepthStencilAttachment;
 +      deUint32                                                preserveAttachmentCount;
 +      const deUint32*                                 pPreserveAttachments;
 +};
 +
 +struct VkSubpassDependency
 +{
 +      deUint32                                srcSubpass;
 +      deUint32                                dstSubpass;
 +      VkPipelineStageFlags    srcStageMask;
 +      VkPipelineStageFlags    dstStageMask;
 +      VkAccessFlags                   srcAccessMask;
 +      VkAccessFlags                   dstAccessMask;
 +      VkDependencyFlags               dependencyFlags;
 +};
 +
 +struct VkRenderPassCreateInfo
 +{
 +      VkStructureType                                 sType;
 +      const void*                                             pNext;
 +      VkRenderPassCreateFlags                 flags;
 +      deUint32                                                attachmentCount;
 +      const VkAttachmentDescription*  pAttachments;
 +      deUint32                                                subpassCount;
 +      const VkSubpassDescription*             pSubpasses;
 +      deUint32                                                dependencyCount;
 +      const VkSubpassDependency*              pDependencies;
 +};
 +
 +struct VkCommandPoolCreateInfo
 +{
 +      VkStructureType                         sType;
 +      const void*                                     pNext;
 +      VkCommandPoolCreateFlags        flags;
 +      deUint32                                        queueFamilyIndex;
 +};
 +
 +struct VkCommandBufferAllocateInfo
 +{
 +      VkStructureType                 sType;
 +      const void*                             pNext;
 +      VkCommandPool                   commandPool;
 +      VkCommandBufferLevel    level;
 +      deUint32                                commandBufferCount;
 +};
 +
 +struct VkCommandBufferInheritanceInfo
 +{
 +      VkStructureType                                 sType;
 +      const void*                                             pNext;
 +      VkRenderPass                                    renderPass;
 +      deUint32                                                subpass;
 +      VkFramebuffer                                   framebuffer;
 +      VkBool32                                                occlusionQueryEnable;
 +      VkQueryControlFlags                             queryFlags;
 +      VkQueryPipelineStatisticFlags   pipelineStatistics;
 +};
 +
 +struct VkCommandBufferBeginInfo
 +{
 +      VkStructureType                                                 sType;
 +      const void*                                                             pNext;
 +      VkCommandBufferUsageFlags                               flags;
 +      const VkCommandBufferInheritanceInfo*   pInheritanceInfo;
 +};
 +
 +struct VkBufferCopy
 +{
 +      VkDeviceSize    srcOffset;
 +      VkDeviceSize    dstOffset;
 +      VkDeviceSize    size;
 +};
 +
 +struct VkImageSubresourceLayers
 +{
 +      VkImageAspectFlags      aspectMask;
 +      deUint32                        mipLevel;
 +      deUint32                        baseArrayLayer;
 +      deUint32                        layerCount;
 +};
 +
 +struct VkBufferImageCopy
 +{
 +      VkDeviceSize                            bufferOffset;
 +      deUint32                                        bufferRowLength;
 +      deUint32                                        bufferImageHeight;
 +      VkImageSubresourceLayers        imageSubresource;
 +      VkOffset3D                                      imageOffset;
 +      VkExtent3D                                      imageExtent;
 +};
 +
 +union VkClearColorValue
 +{
 +      float           float32[4];
 +      deInt32         int32[4];
 +      deUint32        uint32[4];
 +};
 +
 +struct VkClearDepthStencilValue
 +{
 +      float           depth;
 +      deUint32        stencil;
 +};
 +
 +union VkClearValue
 +{
 +      VkClearColorValue                       color;
 +      VkClearDepthStencilValue        depthStencil;
 +};
 +
 +struct VkClearAttachment
 +{
 +      VkImageAspectFlags      aspectMask;
 +      deUint32                        colorAttachment;
 +      VkClearValue            clearValue;
 +};
 +
 +struct VkClearRect
 +{
 +      VkRect2D        rect;
 +      deUint32        baseArrayLayer;
 +      deUint32        layerCount;
 +};
 +
 +struct VkImageBlit
 +{
 +      VkImageSubresourceLayers        srcSubresource;
 +      VkOffset3D                                      srcOffsets[2];
 +      VkImageSubresourceLayers        dstSubresource;
 +      VkOffset3D                                      dstOffsets[2];
 +};
 +
 +struct VkImageCopy
 +{
 +      VkImageSubresourceLayers        srcSubresource;
 +      VkOffset3D                                      srcOffset;
 +      VkImageSubresourceLayers        dstSubresource;
 +      VkOffset3D                                      dstOffset;
 +      VkExtent3D                                      extent;
 +};
 +
 +struct VkImageResolve
 +{
 +      VkImageSubresourceLayers        srcSubresource;
 +      VkOffset3D                                      srcOffset;
 +      VkImageSubresourceLayers        dstSubresource;
 +      VkOffset3D                                      dstOffset;
 +      VkExtent3D                                      extent;
 +};
 +
 +struct VkRenderPassBeginInfo
 +{
 +      VkStructureType         sType;
 +      const void*                     pNext;
 +      VkRenderPass            renderPass;
 +      VkFramebuffer           framebuffer;
 +      VkRect2D                        renderArea;
 +      deUint32                        clearValueCount;
 +      const VkClearValue*     pClearValues;
 +};
 +
- struct VkDeviceGroupBindSparseInfo
- {
-       VkStructureType sType;
-       const void*             pNext;
-       deUint32                resourceDeviceIndex;
-       deUint32                memoryDeviceIndex;
- };
 +struct VkPhysicalDeviceSubgroupProperties
 +{
 +      VkStructureType                 sType;
 +      void*                                   pNext;
 +      deUint32                                subgroupSize;
 +      VkShaderStageFlags              supportedStages;
 +      VkSubgroupFeatureFlags  supportedOperations;
 +      VkBool32                                quadOperationsInAllStages;
 +};
 +
 +struct VkBindBufferMemoryInfo
 +{
 +      VkStructureType sType;
 +      const void*             pNext;
 +      VkBuffer                buffer;
 +      VkDeviceMemory  memory;
 +      VkDeviceSize    memoryOffset;
 +};
 +
 +struct VkBindImageMemoryInfo
 +{
 +      VkStructureType sType;
 +      const void*             pNext;
 +      VkImage                 image;
 +      VkDeviceMemory  memory;
 +      VkDeviceSize    memoryOffset;
 +};
 +
 +struct VkPhysicalDevice16BitStorageFeatures
 +{
 +      VkStructureType sType;
 +      void*                   pNext;
 +      VkBool32                storageBuffer16BitAccess;
 +      VkBool32                uniformAndStorageBuffer16BitAccess;
 +      VkBool32                storagePushConstant16;
 +      VkBool32                storageInputOutput16;
 +};
 +
 +struct VkMemoryDedicatedRequirements
 +{
 +      VkStructureType sType;
 +      void*                   pNext;
 +      VkBool32                prefersDedicatedAllocation;
 +      VkBool32                requiresDedicatedAllocation;
 +};
 +
 +struct VkMemoryDedicatedAllocateInfo
 +{
 +      VkStructureType sType;
 +      const void*             pNext;
 +      VkImage                 image;
 +      VkBuffer                buffer;
 +};
 +
 +struct VkMemoryAllocateFlagsInfo
 +{
 +      VkStructureType                 sType;
 +      const void*                             pNext;
 +      VkMemoryAllocateFlags   flags;
 +      deUint32                                deviceMask;
 +};
 +
 +struct VkDeviceGroupRenderPassBeginInfo
 +{
 +      VkStructureType sType;
 +      const void*             pNext;
 +      deUint32                deviceMask;
 +      deUint32                deviceRenderAreaCount;
 +      const VkRect2D* pDeviceRenderAreas;
 +};
 +
 +struct VkDeviceGroupCommandBufferBeginInfo
 +{
 +      VkStructureType sType;
 +      const void*             pNext;
 +      deUint32                deviceMask;
 +};
 +
 +struct VkDeviceGroupSubmitInfo
 +{
 +      VkStructureType sType;
 +      const void*             pNext;
 +      deUint32                waitSemaphoreCount;
 +      const deUint32* pWaitSemaphoreDeviceIndices;
 +      deUint32                commandBufferCount;
 +      const deUint32* pCommandBufferDeviceMasks;
 +      deUint32                signalSemaphoreCount;
 +      const deUint32* pSignalSemaphoreDeviceIndices;
 +};
 +
- struct VkImageSparseMemoryRequirementsInfo2
- {
-       VkStructureType sType;
-       const void*             pNext;
-       VkImage                 image;
- };
 +struct VkBindBufferMemoryDeviceGroupInfo
 +{
 +      VkStructureType sType;
 +      const void*             pNext;
 +      deUint32                deviceIndexCount;
 +      const deUint32* pDeviceIndices;
 +};
 +
 +struct VkBindImageMemoryDeviceGroupInfo
 +{
 +      VkStructureType sType;
 +      const void*             pNext;
 +      deUint32                deviceIndexCount;
 +      const deUint32* pDeviceIndices;
 +      deUint32                splitInstanceBindRegionCount;
 +      const VkRect2D* pSplitInstanceBindRegions;
 +};
 +
 +struct VkPhysicalDeviceGroupProperties
 +{
 +      VkStructureType         sType;
 +      void*                           pNext;
 +      deUint32                        physicalDeviceCount;
 +      VkPhysicalDevice        physicalDevices[VK_MAX_DEVICE_GROUP_SIZE];
 +      VkBool32                        subsetAllocation;
 +};
 +
 +struct VkDeviceGroupDeviceCreateInfo
 +{
 +      VkStructureType                 sType;
 +      const void*                             pNext;
 +      deUint32                                physicalDeviceCount;
 +      const VkPhysicalDevice* pPhysicalDevices;
 +};
 +
 +struct VkBufferMemoryRequirementsInfo2
 +{
 +      VkStructureType sType;
 +      const void*             pNext;
 +      VkBuffer                buffer;
 +};
 +
 +struct VkImageMemoryRequirementsInfo2
 +{
 +      VkStructureType sType;
 +      const void*             pNext;
 +      VkImage                 image;
 +};
 +
- struct VkSparseImageMemoryRequirements2
- {
-       VkStructureType                                 sType;
-       void*                                                   pNext;
-       VkSparseImageMemoryRequirements memoryRequirements;
- };
 +struct VkMemoryRequirements2
 +{
 +      VkStructureType                 sType;
 +      void*                                   pNext;
 +      VkMemoryRequirements    memoryRequirements;
 +};
 +
- struct VkSparseImageFormatProperties2
- {
-       VkStructureType                                 sType;
-       void*                                                   pNext;
-       VkSparseImageFormatProperties   properties;
- };
- struct VkPhysicalDeviceSparseImageFormatInfo2
- {
-       VkStructureType                 sType;
-       const void*                             pNext;
-       VkFormat                                format;
-       VkImageType                             type;
-       VkSampleCountFlagBits   samples;
-       VkImageUsageFlags               usage;
-       VkImageTiling                   tiling;
- };
 +struct VkPhysicalDeviceFeatures2
 +{
 +      VkStructureType                         sType;
 +      void*                                           pNext;
 +      VkPhysicalDeviceFeatures        features;
 +};
 +
 +struct VkPhysicalDeviceProperties2
 +{
 +      VkStructureType                         sType;
 +      void*                                           pNext;
 +      VkPhysicalDeviceProperties      properties;
 +};
 +
 +struct VkFormatProperties2
 +{
 +      VkStructureType         sType;
 +      void*                           pNext;
 +      VkFormatProperties      formatProperties;
 +};
 +
 +struct VkImageFormatProperties2
 +{
 +      VkStructureType                 sType;
 +      void*                                   pNext;
 +      VkImageFormatProperties imageFormatProperties;
 +};
 +
 +struct VkPhysicalDeviceImageFormatInfo2
 +{
 +      VkStructureType         sType;
 +      const void*                     pNext;
 +      VkFormat                        format;
 +      VkImageType                     type;
 +      VkImageTiling           tiling;
 +      VkImageUsageFlags       usage;
 +      VkImageCreateFlags      flags;
 +};
 +
 +struct VkQueueFamilyProperties2
 +{
 +      VkStructureType                 sType;
 +      void*                                   pNext;
 +      VkQueueFamilyProperties queueFamilyProperties;
 +};
 +
 +struct VkPhysicalDeviceMemoryProperties2
 +{
 +      VkStructureType                                         sType;
 +      void*                                                           pNext;
 +      VkPhysicalDeviceMemoryProperties        memoryProperties;
 +};
 +
- typedef VkFaultData VkFaultDataKHR;
 +struct VkPhysicalDevicePointClippingProperties
 +{
 +      VkStructureType                 sType;
 +      void*                                   pNext;
 +      VkPointClippingBehavior pointClippingBehavior;
 +};
 +
 +struct VkInputAttachmentAspectReference
 +{
 +      deUint32                        subpass;
 +      deUint32                        inputAttachmentIndex;
 +      VkImageAspectFlags      aspectMask;
 +};
 +
 +struct VkRenderPassInputAttachmentAspectCreateInfo
 +{
 +      VkStructureType                                                 sType;
 +      const void*                                                             pNext;
 +      deUint32                                                                aspectReferenceCount;
 +      const VkInputAttachmentAspectReference* pAspectReferences;
 +};
 +
 +struct VkImageViewUsageCreateInfo
 +{
 +      VkStructureType         sType;
 +      const void*                     pNext;
 +      VkImageUsageFlags       usage;
 +};
 +
 +struct VkPipelineTessellationDomainOriginStateCreateInfo
 +{
 +      VkStructureType                         sType;
 +      const void*                                     pNext;
 +      VkTessellationDomainOrigin      domainOrigin;
 +};
 +
 +struct VkRenderPassMultiviewCreateInfo
 +{
 +      VkStructureType sType;
 +      const void*             pNext;
 +      deUint32                subpassCount;
 +      const deUint32* pViewMasks;
 +      deUint32                dependencyCount;
 +      const deInt32*  pViewOffsets;
 +      deUint32                correlationMaskCount;
 +      const deUint32* pCorrelationMasks;
 +};
 +
 +struct VkPhysicalDeviceMultiviewFeatures
 +{
 +      VkStructureType sType;
 +      void*                   pNext;
 +      VkBool32                multiview;
 +      VkBool32                multiviewGeometryShader;
 +      VkBool32                multiviewTessellationShader;
 +};
 +
 +struct VkPhysicalDeviceMultiviewProperties
 +{
 +      VkStructureType sType;
 +      void*                   pNext;
 +      deUint32                maxMultiviewViewCount;
 +      deUint32                maxMultiviewInstanceIndex;
 +};
 +
 +struct VkPhysicalDeviceVariablePointersFeatures
 +{
 +      VkStructureType sType;
 +      void*                   pNext;
 +      VkBool32                variablePointersStorageBuffer;
 +      VkBool32                variablePointers;
 +};
 +
 +struct VkPhysicalDeviceProtectedMemoryFeatures
 +{
 +      VkStructureType sType;
 +      void*                   pNext;
 +      VkBool32                protectedMemory;
 +};
 +
 +struct VkPhysicalDeviceProtectedMemoryProperties
 +{
 +      VkStructureType sType;
 +      void*                   pNext;
 +      VkBool32                protectedNoFault;
 +};
 +
 +struct VkDeviceQueueInfo2
 +{
 +      VkStructureType                         sType;
 +      const void*                                     pNext;
 +      VkDeviceQueueCreateFlags        flags;
 +      deUint32                                        queueFamilyIndex;
 +      deUint32                                        queueIndex;
 +};
 +
 +struct VkProtectedSubmitInfo
 +{
 +      VkStructureType sType;
 +      const void*             pNext;
 +      VkBool32                protectedSubmit;
 +};
 +
 +struct VkSamplerYcbcrConversionCreateInfo
 +{
 +      VkStructureType                                 sType;
 +      const void*                                             pNext;
 +      VkFormat                                                format;
 +      VkSamplerYcbcrModelConversion   ycbcrModel;
 +      VkSamplerYcbcrRange                             ycbcrRange;
 +      VkComponentMapping                              components;
 +      VkChromaLocation                                xChromaOffset;
 +      VkChromaLocation                                yChromaOffset;
 +      VkFilter                                                chromaFilter;
 +      VkBool32                                                forceExplicitReconstruction;
 +};
 +
 +struct VkSamplerYcbcrConversionInfo
 +{
 +      VkStructureType                         sType;
 +      const void*                                     pNext;
 +      VkSamplerYcbcrConversion        conversion;
 +};
 +
 +struct VkBindImagePlaneMemoryInfo
 +{
 +      VkStructureType                 sType;
 +      const void*                             pNext;
 +      VkImageAspectFlagBits   planeAspect;
 +};
 +
 +struct VkImagePlaneMemoryRequirementsInfo
 +{
 +      VkStructureType                 sType;
 +      const void*                             pNext;
 +      VkImageAspectFlagBits   planeAspect;
 +};
 +
 +struct VkPhysicalDeviceSamplerYcbcrConversionFeatures
 +{
 +      VkStructureType sType;
 +      void*                   pNext;
 +      VkBool32                samplerYcbcrConversion;
 +};
 +
 +struct VkSamplerYcbcrConversionImageFormatProperties
 +{
 +      VkStructureType sType;
 +      void*                   pNext;
 +      deUint32                combinedImageSamplerDescriptorCount;
 +};
 +
 +struct VkExternalMemoryProperties
 +{
 +      VkExternalMemoryFeatureFlags    externalMemoryFeatures;
 +      VkExternalMemoryHandleTypeFlags exportFromImportedHandleTypes;
 +      VkExternalMemoryHandleTypeFlags compatibleHandleTypes;
 +};
 +
 +struct VkPhysicalDeviceExternalImageFormatInfo
 +{
 +      VkStructureType                                         sType;
 +      const void*                                                     pNext;
 +      VkExternalMemoryHandleTypeFlagBits      handleType;
 +};
 +
 +struct VkExternalImageFormatProperties
 +{
 +      VkStructureType                         sType;
 +      void*                                           pNext;
 +      VkExternalMemoryProperties      externalMemoryProperties;
 +};
 +
 +struct VkPhysicalDeviceExternalBufferInfo
 +{
 +      VkStructureType                                         sType;
 +      const void*                                                     pNext;
 +      VkBufferCreateFlags                                     flags;
 +      VkBufferUsageFlags                                      usage;
 +      VkExternalMemoryHandleTypeFlagBits      handleType;
 +};
 +
 +struct VkExternalBufferProperties
 +{
 +      VkStructureType                         sType;
 +      void*                                           pNext;
 +      VkExternalMemoryProperties      externalMemoryProperties;
 +};
 +
 +struct VkPhysicalDeviceIDProperties
 +{
 +      VkStructureType sType;
 +      void*                   pNext;
 +      deUint8                 deviceUUID[VK_UUID_SIZE];
 +      deUint8                 driverUUID[VK_UUID_SIZE];
 +      deUint8                 deviceLUID[VK_LUID_SIZE];
 +      deUint32                deviceNodeMask;
 +      VkBool32                deviceLUIDValid;
 +};
 +
 +struct VkExternalMemoryImageCreateInfo
 +{
 +      VkStructureType                                 sType;
 +      const void*                                             pNext;
 +      VkExternalMemoryHandleTypeFlags handleTypes;
 +};
 +
 +struct VkExternalMemoryBufferCreateInfo
 +{
 +      VkStructureType                                 sType;
 +      const void*                                             pNext;
 +      VkExternalMemoryHandleTypeFlags handleTypes;
 +};
 +
 +struct VkExportMemoryAllocateInfo
 +{
 +      VkStructureType                                 sType;
 +      const void*                                             pNext;
 +      VkExternalMemoryHandleTypeFlags handleTypes;
 +};
 +
 +struct VkPhysicalDeviceExternalFenceInfo
 +{
 +      VkStructureType                                         sType;
 +      const void*                                                     pNext;
 +      VkExternalFenceHandleTypeFlagBits       handleType;
 +};
 +
 +struct VkExternalFenceProperties
 +{
 +      VkStructureType                                 sType;
 +      void*                                                   pNext;
 +      VkExternalFenceHandleTypeFlags  exportFromImportedHandleTypes;
 +      VkExternalFenceHandleTypeFlags  compatibleHandleTypes;
 +      VkExternalFenceFeatureFlags             externalFenceFeatures;
 +};
 +
 +struct VkExportFenceCreateInfo
 +{
 +      VkStructureType                                 sType;
 +      const void*                                             pNext;
 +      VkExternalFenceHandleTypeFlags  handleTypes;
 +};
 +
 +struct VkExportSemaphoreCreateInfo
 +{
 +      VkStructureType                                         sType;
 +      const void*                                                     pNext;
 +      VkExternalSemaphoreHandleTypeFlags      handleTypes;
 +};
 +
 +struct VkPhysicalDeviceExternalSemaphoreInfo
 +{
 +      VkStructureType                                                 sType;
 +      const void*                                                             pNext;
 +      VkExternalSemaphoreHandleTypeFlagBits   handleType;
 +};
 +
 +struct VkExternalSemaphoreProperties
 +{
 +      VkStructureType                                         sType;
 +      void*                                                           pNext;
 +      VkExternalSemaphoreHandleTypeFlags      exportFromImportedHandleTypes;
 +      VkExternalSemaphoreHandleTypeFlags      compatibleHandleTypes;
 +      VkExternalSemaphoreFeatureFlags         externalSemaphoreFeatures;
 +};
 +
 +struct VkPhysicalDeviceMaintenance3Properties
 +{
 +      VkStructureType sType;
 +      void*                   pNext;
 +      deUint32                maxPerSetDescriptors;
 +      VkDeviceSize    maxMemoryAllocationSize;
 +};
 +
 +struct VkDescriptorSetLayoutSupport
 +{
 +      VkStructureType sType;
 +      void*                   pNext;
 +      VkBool32                supported;
 +};
 +
 +struct VkPhysicalDeviceShaderDrawParametersFeatures
 +{
 +      VkStructureType sType;
 +      void*                   pNext;
 +      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 VkPhysicalDeviceVulkanSC10Features
++{
++      VkStructureType sType;
++      void*                   pNext;
++      VkBool32                pipelineIdentifier;
++      VkBool32                shaderAtomicInstructions;
++};
++
++struct VkPhysicalDeviceVulkanSC10Properties
++{
++      VkStructureType sType;
++      void*                   pNext;
++      VkBool32                deviceNoDynamicHostAllocations;
++      VkBool32                deviceDestroyFreesMemory;
++      VkBool32                commandPoolMultipleCommandBuffersRecording;
++      VkBool32                commandPoolResetCommandBuffer;
++      VkBool32                commandBufferSimultaneousUse;
++      VkBool32                secondaryCommandBufferNullFramebuffer;
++      VkBool32                descriptorPoolFreeDescriptorSets;
++      VkBool32                recyclePipelineMemory;
++      deUint32                maxRenderPassSubpasses;
++      deUint32                maxRenderPassDependencies;
++      deUint32                maxSubpassInputAttachments;
++      deUint32                maxSubpassPreserveAttachments;
++      deUint32                maxFramebufferAttachments;
++      deUint32                maxDescriptorSetLayoutBindings;
++      deUint32                maxQueryFaultCount;
++      deUint32                maxCallbackFaultCount;
++};
++
++struct VkPipelinePoolSize
++{
++      VkStructureType sType;
++      const void*             pNext;
++      VkDeviceSize    poolEntrySize;
++      deUint32                poolEntryCount;
++};
++
++struct VkDeviceObjectReservationCreateInfo
++{
++      VkStructureType                                         sType;
++      const void*                                                     pNext;
++      deUint32                                                        pipelineCacheCreateInfoCount;
++      const VkPipelineCacheCreateInfo*        pPipelineCacheCreateInfos;
++      deUint32                                                        pipelinePoolSizeCount;
++      const VkPipelinePoolSize*                       pPipelinePoolSizes;
++      deUint32                                                        semaphoreRequestCount;
++      deUint32                                                        commandBufferRequestCount;
++      deUint32                                                        fenceRequestCount;
++      deUint32                                                        deviceMemoryRequestCount;
++      deUint32                                                        bufferRequestCount;
++      deUint32                                                        imageRequestCount;
++      deUint32                                                        eventRequestCount;
++      deUint32                                                        queryPoolRequestCount;
++      deUint32                                                        bufferViewRequestCount;
++      deUint32                                                        imageViewRequestCount;
++      deUint32                                                        layeredImageViewRequestCount;
++      deUint32                                                        pipelineCacheRequestCount;
++      deUint32                                                        pipelineLayoutRequestCount;
++      deUint32                                                        renderPassRequestCount;
++      deUint32                                                        graphicsPipelineRequestCount;
++      deUint32                                                        computePipelineRequestCount;
++      deUint32                                                        descriptorSetLayoutRequestCount;
++      deUint32                                                        samplerRequestCount;
++      deUint32                                                        descriptorPoolRequestCount;
++      deUint32                                                        descriptorSetRequestCount;
++      deUint32                                                        framebufferRequestCount;
++      deUint32                                                        commandPoolRequestCount;
++      deUint32                                                        samplerYcbcrConversionRequestCount;
++      deUint32                                                        surfaceRequestCount;
++      deUint32                                                        swapchainRequestCount;
++      deUint32                                                        displayModeRequestCount;
++      deUint32                                                        subpassDescriptionRequestCount;
++      deUint32                                                        attachmentDescriptionRequestCount;
++      deUint32                                                        descriptorSetLayoutBindingRequestCount;
++      deUint32                                                        descriptorSetLayoutBindingLimit;
++      deUint32                                                        maxImageViewMipLevels;
++      deUint32                                                        maxImageViewArrayLayers;
++      deUint32                                                        maxLayeredImageViewMipLevels;
++      deUint32                                                        maxOcclusionQueriesPerPool;
++      deUint32                                                        maxPipelineStatisticsQueriesPerPool;
++      deUint32                                                        maxTimestampQueriesPerPool;
++};
++
++struct VkCommandPoolMemoryReservationCreateInfo
++{
++      VkStructureType sType;
++      const void*             pNext;
++      VkDeviceSize    commandPoolReservedSize;
++      deUint32                commandPoolMaxCommandBuffers;
++};
++
++struct VkCommandPoolMemoryConsumption
++{
++      VkStructureType sType;
++      void*                   pNext;
++      VkDeviceSize    commandPoolAllocated;
++      VkDeviceSize    commandPoolReservedSize;
++      VkDeviceSize    commandBufferAllocated;
++};
++
++struct VkPipelinePoolEntrySizeCreateInfo
++{
++      VkStructureType sType;
++      const void*             pNext;
++      VkDeviceSize    poolEntrySize;
++};
++
++struct VkFaultData
++{
++      VkStructureType sType;
++      void*                   pNext;
++      VkFaultLevel    faultLevel;
++      VkFaultType             faultType;
++};
++
++struct VkFaultCallbackInfo
++{
++      VkStructureType                         sType;
++      void*                                           pNext;
++      VkFaultData*                            pFaults;
++      PFN_vkFaultCallbackFunction     pfnFaultCallback;
++};
++
++struct VkPipelineIdentifierInfo
++{
++      VkStructureType                 sType;
++      const void*                             pNext;
++      deUint8                                 pipelineIdentifier[VK_UUID_SIZE];
++      VkPipelineMatchControl  matchControl;
++};
++
 +struct VkSurfaceCapabilitiesKHR
 +{
 +      deUint32                                                minImageCount;
 +      deUint32                                                maxImageCount;
 +      VkExtent2D                                              currentExtent;
 +      VkExtent2D                                              minImageExtent;
 +      VkExtent2D                                              maxImageExtent;
 +      deUint32                                                maxImageArrayLayers;
 +      VkSurfaceTransformFlagsKHR              supportedTransforms;
 +      VkSurfaceTransformFlagBitsKHR   currentTransform;
 +      VkCompositeAlphaFlagsKHR                supportedCompositeAlpha;
 +      VkImageUsageFlags                               supportedUsageFlags;
 +};
 +
 +struct VkSurfaceFormatKHR
 +{
 +      VkFormat                format;
 +      VkColorSpaceKHR colorSpace;
 +};
 +
 +struct VkSwapchainCreateInfoKHR
 +{
 +      VkStructureType                                 sType;
 +      const void*                                             pNext;
 +      VkSwapchainCreateFlagsKHR               flags;
 +      VkSurfaceKHR                                    surface;
 +      deUint32                                                minImageCount;
 +      VkFormat                                                imageFormat;
 +      VkColorSpaceKHR                                 imageColorSpace;
 +      VkExtent2D                                              imageExtent;
 +      deUint32                                                imageArrayLayers;
 +      VkImageUsageFlags                               imageUsage;
 +      VkSharingMode                                   imageSharingMode;
 +      deUint32                                                queueFamilyIndexCount;
 +      const deUint32*                                 pQueueFamilyIndices;
 +      VkSurfaceTransformFlagBitsKHR   preTransform;
 +      VkCompositeAlphaFlagBitsKHR             compositeAlpha;
 +      VkPresentModeKHR                                presentMode;
 +      VkBool32                                                clipped;
 +      VkSwapchainKHR                                  oldSwapchain;
 +};
 +
 +struct VkPresentInfoKHR
 +{
 +      VkStructureType                 sType;
 +      const void*                             pNext;
 +      deUint32                                waitSemaphoreCount;
 +      const VkSemaphore*              pWaitSemaphores;
 +      deUint32                                swapchainCount;
 +      const VkSwapchainKHR*   pSwapchains;
 +      const deUint32*                 pImageIndices;
 +      VkResult*                               pResults;
 +};
 +
 +struct VkImageSwapchainCreateInfoKHR
 +{
 +      VkStructureType sType;
 +      const void*             pNext;
 +      VkSwapchainKHR  swapchain;
 +};
 +
 +struct VkBindImageMemorySwapchainInfoKHR
 +{
 +      VkStructureType sType;
 +      const void*             pNext;
 +      VkSwapchainKHR  swapchain;
 +      deUint32                imageIndex;
 +};
 +
 +struct VkAcquireNextImageInfoKHR
 +{
 +      VkStructureType sType;
 +      const void*             pNext;
 +      VkSwapchainKHR  swapchain;
 +      deUint64                timeout;
 +      VkSemaphore             semaphore;
 +      VkFence                 fence;
 +      deUint32                deviceMask;
 +};
 +
 +struct VkDeviceGroupPresentCapabilitiesKHR
 +{
 +      VkStructureType                                         sType;
 +      const void*                                                     pNext;
 +      deUint32                                                        presentMask[VK_MAX_DEVICE_GROUP_SIZE];
 +      VkDeviceGroupPresentModeFlagsKHR        modes;
 +};
 +
 +struct VkDeviceGroupPresentInfoKHR
 +{
 +      VkStructureType                                         sType;
 +      const void*                                                     pNext;
 +      deUint32                                                        swapchainCount;
 +      const deUint32*                                         pDeviceMasks;
 +      VkDeviceGroupPresentModeFlagBitsKHR     mode;
 +};
 +
 +struct VkDeviceGroupSwapchainCreateInfoKHR
 +{
 +      VkStructureType                                         sType;
 +      const void*                                                     pNext;
 +      VkDeviceGroupPresentModeFlagsKHR        modes;
 +};
 +
 +struct VkDisplayModeParametersKHR
 +{
 +      VkExtent2D      visibleRegion;
 +      deUint32        refreshRate;
 +};
 +
 +struct VkDisplayModeCreateInfoKHR
 +{
 +      VkStructureType                         sType;
 +      const void*                                     pNext;
 +      VkDisplayModeCreateFlagsKHR     flags;
 +      VkDisplayModeParametersKHR      parameters;
 +};
 +
 +struct VkDisplayModePropertiesKHR
 +{
 +      VkDisplayModeKHR                        displayMode;
 +      VkDisplayModeParametersKHR      parameters;
 +};
 +
 +struct VkDisplayPlaneCapabilitiesKHR
 +{
 +      VkDisplayPlaneAlphaFlagsKHR     supportedAlpha;
 +      VkOffset2D                                      minSrcPosition;
 +      VkOffset2D                                      maxSrcPosition;
 +      VkExtent2D                                      minSrcExtent;
 +      VkExtent2D                                      maxSrcExtent;
 +      VkOffset2D                                      minDstPosition;
 +      VkOffset2D                                      maxDstPosition;
 +      VkExtent2D                                      minDstExtent;
 +      VkExtent2D                                      maxDstExtent;
 +};
 +
 +struct VkDisplayPlanePropertiesKHR
 +{
 +      VkDisplayKHR    currentDisplay;
 +      deUint32                currentStackIndex;
 +};
 +
 +struct VkDisplayPropertiesKHR
 +{
 +      VkDisplayKHR                            display;
 +      const char*                                     displayName;
 +      VkExtent2D                                      physicalDimensions;
 +      VkExtent2D                                      physicalResolution;
 +      VkSurfaceTransformFlagsKHR      supportedTransforms;
 +      VkBool32                                        planeReorderPossible;
 +      VkBool32                                        persistentContent;
 +};
 +
 +struct VkDisplaySurfaceCreateInfoKHR
 +{
 +      VkStructureType                                 sType;
 +      const void*                                             pNext;
 +      VkDisplaySurfaceCreateFlagsKHR  flags;
 +      VkDisplayModeKHR                                displayMode;
 +      deUint32                                                planeIndex;
 +      deUint32                                                planeStackIndex;
 +      VkSurfaceTransformFlagBitsKHR   transform;
 +      float                                                   globalAlpha;
 +      VkDisplayPlaneAlphaFlagBitsKHR  alphaMode;
 +      VkExtent2D                                              imageExtent;
 +};
 +
 +struct VkDisplayPresentInfoKHR
 +{
 +      VkStructureType sType;
 +      const void*             pNext;
 +      VkRect2D                srcRect;
 +      VkRect2D                dstRect;
 +      VkBool32                persistent;
 +};
 +
 +struct VkImportMemoryFdInfoKHR
 +{
 +      VkStructureType                                         sType;
 +      const void*                                                     pNext;
 +      VkExternalMemoryHandleTypeFlagBits      handleType;
 +      int                                                                     fd;
 +};
 +
 +struct VkMemoryFdPropertiesKHR
 +{
 +      VkStructureType sType;
 +      void*                   pNext;
 +      deUint32                memoryTypeBits;
 +};
 +
 +struct VkMemoryGetFdInfoKHR
 +{
 +      VkStructureType                                         sType;
 +      const void*                                                     pNext;
 +      VkDeviceMemory                                          memory;
 +      VkExternalMemoryHandleTypeFlagBits      handleType;
 +};
 +
 +struct VkImportSemaphoreFdInfoKHR
 +{
 +      VkStructureType                                                 sType;
 +      const void*                                                             pNext;
 +      VkSemaphore                                                             semaphore;
 +      VkSemaphoreImportFlags                                  flags;
 +      VkExternalSemaphoreHandleTypeFlagBits   handleType;
 +      int                                                                             fd;
 +};
 +
 +struct VkSemaphoreGetFdInfoKHR
 +{
 +      VkStructureType                                                 sType;
 +      const void*                                                             pNext;
 +      VkSemaphore                                                             semaphore;
 +      VkExternalSemaphoreHandleTypeFlagBits   handleType;
 +};
 +
 +struct VkRectLayerKHR
 +{
 +      VkOffset2D      offset;
 +      VkExtent2D      extent;
 +      deUint32        layer;
 +};
 +
 +struct VkPresentRegionKHR
 +{
 +      deUint32                                rectangleCount;
 +      const VkRectLayerKHR*   pRectangles;
 +};
 +
 +struct VkPresentRegionsKHR
 +{
 +      VkStructureType                         sType;
 +      const void*                                     pNext;
 +      deUint32                                        swapchainCount;
 +      const VkPresentRegionKHR*       pRegions;
 +};
 +
 +struct VkSharedPresentSurfaceCapabilitiesKHR
 +{
 +      VkStructureType         sType;
 +      void*                           pNext;
 +      VkImageUsageFlags       sharedPresentSupportedUsageFlags;
 +};
 +
 +struct VkImportFenceFdInfoKHR
 +{
 +      VkStructureType                                         sType;
 +      const void*                                                     pNext;
 +      VkFence                                                         fence;
 +      VkFenceImportFlags                                      flags;
 +      VkExternalFenceHandleTypeFlagBits       handleType;
 +      int                                                                     fd;
 +};
 +
 +struct VkFenceGetFdInfoKHR
 +{
 +      VkStructureType                                         sType;
 +      const void*                                                     pNext;
 +      VkFence                                                         fence;
 +      VkExternalFenceHandleTypeFlagBits       handleType;
 +};
 +
++struct VkPhysicalDevicePerformanceQueryFeaturesKHR
++{
++      VkStructureType sType;
++      void*                   pNext;
++      VkBool32                performanceCounterQueryPools;
++      VkBool32                performanceCounterMultipleQueryPools;
++};
++
++struct VkPhysicalDevicePerformanceQueryPropertiesKHR
++{
++      VkStructureType sType;
++      void*                   pNext;
++      VkBool32                allowCommandBufferQueryCopies;
++};
++
++struct VkPerformanceCounterKHR
++{
++      VkStructureType                                 sType;
++      const void*                                             pNext;
++      VkPerformanceCounterUnitKHR             unit;
++      VkPerformanceCounterScopeKHR    scope;
++      VkPerformanceCounterStorageKHR  storage;
++      deUint8                                                 uuid[VK_UUID_SIZE];
++};
++
++struct VkPerformanceCounterDescriptionKHR
++{
++      VkStructureType                                                 sType;
++      const void*                                                             pNext;
++      VkPerformanceCounterDescriptionFlagsKHR flags;
++      char                                                                    name[VK_MAX_DESCRIPTION_SIZE];
++      char                                                                    category[VK_MAX_DESCRIPTION_SIZE];
++      char                                                                    description[VK_MAX_DESCRIPTION_SIZE];
++};
++
++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 VkPerformanceQueryReservationInfoKHR
++{
++      VkStructureType sType;
++      const void*             pNext;
++      deUint32                maxPerformanceQueriesPerPool;
++};
++
 +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 VkPhysicalDeviceShaderClockFeaturesKHR
 +{
 +      VkStructureType sType;
 +      void*                   pNext;
 +      VkBool32                shaderSubgroupClock;
 +      VkBool32                shaderDeviceClock;
 +};
 +
 +struct VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR
 +{
 +      VkStructureType sType;
 +      void*                   pNext;
 +      VkBool32                shaderTerminateInvocation;
 +};
 +
 +struct VkFragmentShadingRateAttachmentInfoKHR
 +{
 +      VkStructureType                                 sType;
 +      const void*                                             pNext;
 +      const VkAttachmentReference2*   pFragmentShadingRateAttachment;
 +      VkExtent2D                                              shadingRateAttachmentTexelSize;
 +};
 +
 +struct VkPipelineFragmentShadingRateStateCreateInfoKHR
 +{
 +      VkStructureType                                         sType;
 +      const void*                                                     pNext;
 +      VkExtent2D                                                      fragmentSize;
 +      VkFragmentShadingRateCombinerOpKHR      combinerOps[2];
 +};
 +
 +struct VkPhysicalDeviceFragmentShadingRateFeaturesKHR
 +{
 +      VkStructureType sType;
 +      void*                   pNext;
 +      VkBool32                pipelineFragmentShadingRate;
 +      VkBool32                primitiveFragmentShadingRate;
 +      VkBool32                attachmentFragmentShadingRate;
 +};
 +
 +struct VkPhysicalDeviceFragmentShadingRatePropertiesKHR
 +{
 +      VkStructureType                 sType;
 +      void*                                   pNext;
 +      VkExtent2D                              minFragmentShadingRateAttachmentTexelSize;
 +      VkExtent2D                              maxFragmentShadingRateAttachmentTexelSize;
 +      deUint32                                maxFragmentShadingRateAttachmentTexelSizeAspectRatio;
 +      VkBool32                                primitiveFragmentShadingRateWithMultipleViewports;
 +      VkBool32                                layeredShadingRateAttachments;
 +      VkBool32                                fragmentShadingRateNonTrivialCombinerOps;
 +      VkExtent2D                              maxFragmentSize;
 +      deUint32                                maxFragmentSizeAspectRatio;
 +      deUint32                                maxFragmentShadingRateCoverageSamples;
 +      VkSampleCountFlagBits   maxFragmentShadingRateRasterizationSamples;
 +      VkBool32                                fragmentShadingRateWithShaderDepthStencilWrites;
 +      VkBool32                                fragmentShadingRateWithSampleMask;
 +      VkBool32                                fragmentShadingRateWithShaderSampleMask;
 +      VkBool32                                fragmentShadingRateWithConservativeRasterization;
 +      VkBool32                                fragmentShadingRateWithFragmentShaderInterlock;
 +      VkBool32                                fragmentShadingRateWithCustomSampleLocations;
 +      VkBool32                                fragmentShadingRateStrictMultiplyCombiner;
 +};
 +
 +struct VkPhysicalDeviceFragmentShadingRateKHR
 +{
 +      VkStructureType         sType;
 +      void*                           pNext;
 +      VkSampleCountFlags      sampleCounts;
 +      VkExtent2D                      fragmentSize;
 +};
 +
 +struct VkRefreshObjectKHR
 +{
 +      VkObjectType                    objectType;
 +      deUint64                                objectHandle;
 +      VkRefreshObjectFlagsKHR flags;
 +};
 +
 +struct VkRefreshObjectListKHR
 +{
 +      VkStructureType                         sType;
 +      const void*                                     pNext;
 +      deUint32                                        objectCount;
 +      const VkRefreshObjectKHR*       pObjects;
 +};
 +
++struct VkMemoryBarrier2KHR
++{
++      VkStructureType                         sType;
++      const void*                                     pNext;
++      VkPipelineStageFlags2KHR        srcStageMask;
++      VkAccessFlags2KHR                       srcAccessMask;
++      VkPipelineStageFlags2KHR        dstStageMask;
++      VkAccessFlags2KHR                       dstAccessMask;
++};
++
++struct VkBufferMemoryBarrier2KHR
++{
++      VkStructureType                         sType;
++      const void*                                     pNext;
++      VkPipelineStageFlags2KHR        srcStageMask;
++      VkAccessFlags2KHR                       srcAccessMask;
++      VkPipelineStageFlags2KHR        dstStageMask;
++      VkAccessFlags2KHR                       dstAccessMask;
++      deUint32                                        srcQueueFamilyIndex;
++      deUint32                                        dstQueueFamilyIndex;
++      VkBuffer                                        buffer;
++      VkDeviceSize                            offset;
++      VkDeviceSize                            size;
++};
++
++struct VkImageMemoryBarrier2KHR
++{
++      VkStructureType                         sType;
++      const void*                                     pNext;
++      VkPipelineStageFlags2KHR        srcStageMask;
++      VkAccessFlags2KHR                       srcAccessMask;
++      VkPipelineStageFlags2KHR        dstStageMask;
++      VkAccessFlags2KHR                       dstAccessMask;
++      VkImageLayout                           oldLayout;
++      VkImageLayout                           newLayout;
++      deUint32                                        srcQueueFamilyIndex;
++      deUint32                                        dstQueueFamilyIndex;
++      VkImage                                         image;
++      VkImageSubresourceRange         subresourceRange;
++};
++
++struct VkDependencyInfoKHR
++{
++      VkStructureType                                         sType;
++      const void*                                                     pNext;
++      VkDependencyFlags                                       dependencyFlags;
++      deUint32                                                        memoryBarrierCount;
++      const VkMemoryBarrier2KHR*                      pMemoryBarriers;
++      deUint32                                                        bufferMemoryBarrierCount;
++      const VkBufferMemoryBarrier2KHR*        pBufferMemoryBarriers;
++      deUint32                                                        imageMemoryBarrierCount;
++      const VkImageMemoryBarrier2KHR*         pImageMemoryBarriers;
++};
++
++struct VkSemaphoreSubmitInfoKHR
++{
++      VkStructureType                         sType;
++      const void*                                     pNext;
++      VkSemaphore                                     semaphore;
++      deUint64                                        value;
++      VkPipelineStageFlags2KHR        stageMask;
++      deUint32                                        deviceIndex;
++};
++
++struct VkCommandBufferSubmitInfoKHR
++{
++      VkStructureType sType;
++      const void*             pNext;
++      VkCommandBuffer commandBuffer;
++      deUint32                deviceMask;
++};
++
++struct VkSubmitInfo2KHR
++{
++      VkStructureType                                         sType;
++      const void*                                                     pNext;
++      VkSubmitFlagsKHR                                        flags;
++      deUint32                                                        waitSemaphoreInfoCount;
++      const VkSemaphoreSubmitInfoKHR*         pWaitSemaphoreInfos;
++      deUint32                                                        commandBufferInfoCount;
++      const VkCommandBufferSubmitInfoKHR*     pCommandBufferInfos;
++      deUint32                                                        signalSemaphoreInfoCount;
++      const VkSemaphoreSubmitInfoKHR*         pSignalSemaphoreInfos;
++};
++
++struct VkPhysicalDeviceSynchronization2FeaturesKHR
++{
++      VkStructureType sType;
++      void*                   pNext;
++      VkBool32                synchronization2;
++};
++
++struct VkQueueFamilyCheckpointProperties2NV
++{
++      VkStructureType                         sType;
++      void*                                           pNext;
++      VkPipelineStageFlags2KHR        checkpointExecutionStageMask;
++};
++
++struct VkCheckpointData2NV
++{
++      VkStructureType                         sType;
++      void*                                           pNext;
++      VkPipelineStageFlags2KHR        stage;
++      void*                                           pCheckpointMarker;
++};
++
 +struct VkBufferCopy2KHR
 +{
 +      VkStructureType sType;
 +      const void*             pNext;
 +      VkDeviceSize    srcOffset;
 +      VkDeviceSize    dstOffset;
 +      VkDeviceSize    size;
 +};
 +
 +struct VkCopyBufferInfo2KHR
 +{
 +      VkStructureType                 sType;
 +      const void*                             pNext;
 +      VkBuffer                                srcBuffer;
 +      VkBuffer                                dstBuffer;
 +      deUint32                                regionCount;
 +      const VkBufferCopy2KHR* pRegions;
 +};
 +
 +struct VkImageCopy2KHR
 +{
 +      VkStructureType                         sType;
 +      const void*                                     pNext;
 +      VkImageSubresourceLayers        srcSubresource;
 +      VkOffset3D                                      srcOffset;
 +      VkImageSubresourceLayers        dstSubresource;
 +      VkOffset3D                                      dstOffset;
 +      VkExtent3D                                      extent;
 +};
 +
 +struct VkCopyImageInfo2KHR
 +{
 +      VkStructureType                 sType;
 +      const void*                             pNext;
 +      VkImage                                 srcImage;
 +      VkImageLayout                   srcImageLayout;
 +      VkImage                                 dstImage;
 +      VkImageLayout                   dstImageLayout;
 +      deUint32                                regionCount;
 +      const VkImageCopy2KHR*  pRegions;
 +};
 +
 +struct VkBufferImageCopy2KHR
 +{
 +      VkStructureType                         sType;
 +      const void*                                     pNext;
 +      VkDeviceSize                            bufferOffset;
 +      deUint32                                        bufferRowLength;
 +      deUint32                                        bufferImageHeight;
 +      VkImageSubresourceLayers        imageSubresource;
 +      VkOffset3D                                      imageOffset;
 +      VkExtent3D                                      imageExtent;
 +};
 +
 +struct VkCopyBufferToImageInfo2KHR
 +{
 +      VkStructureType                                 sType;
 +      const void*                                             pNext;
 +      VkBuffer                                                srcBuffer;
 +      VkImage                                                 dstImage;
 +      VkImageLayout                                   dstImageLayout;
 +      deUint32                                                regionCount;
 +      const VkBufferImageCopy2KHR*    pRegions;
 +};
 +
 +struct VkCopyImageToBufferInfo2KHR
 +{
 +      VkStructureType                                 sType;
 +      const void*                                             pNext;
 +      VkImage                                                 srcImage;
 +      VkImageLayout                                   srcImageLayout;
 +      VkBuffer                                                dstBuffer;
 +      deUint32                                                regionCount;
 +      const VkBufferImageCopy2KHR*    pRegions;
 +};
 +
 +struct VkImageBlit2KHR
 +{
 +      VkStructureType                         sType;
 +      const void*                                     pNext;
 +      VkImageSubresourceLayers        srcSubresource;
 +      VkOffset3D                                      srcOffsets[2];
 +      VkImageSubresourceLayers        dstSubresource;
 +      VkOffset3D                                      dstOffsets[2];
 +};
 +
 +struct VkBlitImageInfo2KHR
 +{
 +      VkStructureType                 sType;
 +      const void*                             pNext;
 +      VkImage                                 srcImage;
 +      VkImageLayout                   srcImageLayout;
 +      VkImage                                 dstImage;
 +      VkImageLayout                   dstImageLayout;
 +      deUint32                                regionCount;
 +      const VkImageBlit2KHR*  pRegions;
 +      VkFilter                                filter;
 +};
 +
 +struct VkImageResolve2KHR
 +{
 +      VkStructureType                         sType;
 +      const void*                                     pNext;
 +      VkImageSubresourceLayers        srcSubresource;
 +      VkOffset3D                                      srcOffset;
 +      VkImageSubresourceLayers        dstSubresource;
 +      VkOffset3D                                      dstOffset;
 +      VkExtent3D                                      extent;
 +};
 +
 +struct VkResolveImageInfo2KHR
 +{
 +      VkStructureType                         sType;
 +      const void*                                     pNext;
 +      VkImage                                         srcImage;
 +      VkImageLayout                           srcImageLayout;
 +      VkImage                                         dstImage;
 +      VkImageLayout                           dstImageLayout;
 +      deUint32                                        regionCount;
 +      const VkImageResolve2KHR*       pRegions;
 +};
 +
 +struct VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT
 +{
 +      VkStructureType sType;
 +      void*                   pNext;
 +      VkBool32                textureCompressionASTC_HDR;
 +};
 +
 +struct VkImageViewASTCDecodeModeEXT
 +{
 +      VkStructureType sType;
 +      const void*             pNext;
 +      VkFormat                decodeMode;
 +};
 +
 +struct VkPhysicalDeviceASTCDecodeFeaturesEXT
 +{
 +      VkStructureType sType;
 +      void*                   pNext;
 +      VkBool32                decodeModeSharedExponent;
 +};
 +
 +struct VkSurfaceCapabilities2EXT
 +{
 +      VkStructureType                                 sType;
 +      void*                                                   pNext;
 +      deUint32                                                minImageCount;
 +      deUint32                                                maxImageCount;
 +      VkExtent2D                                              currentExtent;
 +      VkExtent2D                                              minImageExtent;
 +      VkExtent2D                                              maxImageExtent;
 +      deUint32                                                maxImageArrayLayers;
 +      VkSurfaceTransformFlagsKHR              supportedTransforms;
 +      VkSurfaceTransformFlagBitsKHR   currentTransform;
 +      VkCompositeAlphaFlagsKHR                supportedCompositeAlpha;
 +      VkImageUsageFlags                               supportedUsageFlags;
 +      VkSurfaceCounterFlagsEXT                supportedSurfaceCounters;
 +};
 +
 +struct VkDisplayPowerInfoEXT
 +{
 +      VkStructureType                 sType;
 +      const void*                             pNext;
 +      VkDisplayPowerStateEXT  powerState;
 +};
 +
 +struct VkDeviceEventInfoEXT
 +{
 +      VkStructureType                 sType;
 +      const void*                             pNext;
 +      VkDeviceEventTypeEXT    deviceEvent;
 +};
 +
 +struct VkDisplayEventInfoEXT
 +{
 +      VkStructureType                 sType;
 +      const void*                             pNext;
 +      VkDisplayEventTypeEXT   displayEvent;
 +};
 +
 +struct VkSwapchainCounterCreateInfoEXT
 +{
 +      VkStructureType                         sType;
 +      const void*                                     pNext;
 +      VkSurfaceCounterFlagsEXT        surfaceCounters;
 +};
 +
 +struct VkPhysicalDeviceDiscardRectanglePropertiesEXT
 +{
 +      VkStructureType sType;
 +      void*                   pNext;
 +      deUint32                maxDiscardRectangles;
 +};
 +
 +struct VkPipelineDiscardRectangleStateCreateInfoEXT
 +{
 +      VkStructureType                                                                 sType;
 +      const void*                                                                             pNext;
 +      VkPipelineDiscardRectangleStateCreateFlagsEXT   flags;
 +      VkDiscardRectangleModeEXT                                               discardRectangleMode;
 +      deUint32                                                                                discardRectangleCount;
 +      const VkRect2D*                                                                 pDiscardRectangles;
 +};
 +
 +struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT
 +{
 +      VkStructureType sType;
 +      void*                   pNext;
 +      float                   primitiveOverestimationSize;
 +      float                   maxExtraPrimitiveOverestimationSize;
 +      float                   extraPrimitiveOverestimationSizeGranularity;
 +      VkBool32                primitiveUnderestimation;
 +      VkBool32                conservativePointAndLineRasterization;
 +      VkBool32                degenerateTrianglesRasterized;
 +      VkBool32                degenerateLinesRasterized;
 +      VkBool32                fullyCoveredFragmentShaderInputVariable;
 +      VkBool32                conservativeRasterizationPostDepthCoverage;
 +};
 +
 +struct VkPipelineRasterizationConservativeStateCreateInfoEXT
 +{
 +      VkStructureType                                                                                 sType;
 +      const void*                                                                                             pNext;
 +      VkPipelineRasterizationConservativeStateCreateFlagsEXT  flags;
 +      VkConservativeRasterizationModeEXT                                              conservativeRasterizationMode;
 +      float                                                                                                   extraPrimitiveOverestimationSize;
 +};
 +
 +struct VkPhysicalDeviceDepthClipEnableFeaturesEXT
 +{
 +      VkStructureType sType;
 +      void*                   pNext;
 +      VkBool32                depthClipEnable;
 +};
 +
 +struct VkPipelineRasterizationDepthClipStateCreateInfoEXT
 +{
 +      VkStructureType                                                                         sType;
 +      const void*                                                                                     pNext;
 +      VkPipelineRasterizationDepthClipStateCreateFlagsEXT     flags;
 +      VkBool32                                                                                        depthClipEnable;
 +};
 +
 +struct VkXYColorEXT
 +{
 +      float   x;
 +      float   y;
 +};
 +
 +struct VkHdrMetadataEXT
 +{
 +      VkStructureType sType;
 +      const void*             pNext;
 +      VkXYColorEXT    displayPrimaryRed;
 +      VkXYColorEXT    displayPrimaryGreen;
 +      VkXYColorEXT    displayPrimaryBlue;
 +      VkXYColorEXT    whitePoint;
 +      float                   maxLuminance;
 +      float                   minLuminance;
 +      float                   maxContentLightLevel;
 +      float                   maxFrameAverageLightLevel;
 +};
 +
++struct VkDebugUtilsLabelEXT
++{
++      VkStructureType sType;
++      const void*             pNext;
++      const char*             pLabelName;
++      float                   color[4];
++};
++
++struct VkDebugUtilsObjectNameInfoEXT
++{
++      VkStructureType sType;
++      const void*             pNext;
++      VkObjectType    objectType;
++      deUint64                objectHandle;
++      const char*             pObjectName;
++};
++
++struct VkDebugUtilsMessengerCallbackDataEXT
++{
++      VkStructureType                                                         sType;
++      const void*                                                                     pNext;
++      VkDebugUtilsMessengerCallbackDataFlagsEXT       flags;
++      const char*                                                                     pMessageIdName;
++      deInt32                                                                         messageIdNumber;
++      const char*                                                                     pMessage;
++      deUint32                                                                        queueLabelCount;
++      const VkDebugUtilsLabelEXT*                                     pQueueLabels;
++      deUint32                                                                        cmdBufLabelCount;
++      const VkDebugUtilsLabelEXT*                                     pCmdBufLabels;
++      deUint32                                                                        objectCount;
++      const VkDebugUtilsObjectNameInfoEXT*            pObjects;
++};
++
++struct VkDebugUtilsMessengerCreateInfoEXT
++{
++      VkStructureType                                                 sType;
++      const void*                                                             pNext;
++      VkDebugUtilsMessengerCreateFlagsEXT             flags;
++      VkDebugUtilsMessageSeverityFlagsEXT             messageSeverity;
++      VkDebugUtilsMessageTypeFlagsEXT                 messageType;
++      PFN_vkDebugUtilsMessengerCallbackEXT    pfnUserCallback;
++      void*                                                                   pUserData;
++};
++
++struct VkDebugUtilsObjectTagInfoEXT
++{
++      VkStructureType sType;
++      const void*             pNext;
++      VkObjectType    objectType;
++      deUint64                objectHandle;
++      deUint64                tagName;
++      deUintptr               tagSize;
++      const void*             pTag;
++};
++
 +struct VkSampleLocationEXT
 +{
 +      float   x;
 +      float   y;
 +};
 +
 +struct VkSampleLocationsInfoEXT
 +{
 +      VkStructureType                         sType;
 +      const void*                                     pNext;
 +      VkSampleCountFlagBits           sampleLocationsPerPixel;
 +      VkExtent2D                                      sampleLocationGridSize;
 +      deUint32                                        sampleLocationsCount;
 +      const VkSampleLocationEXT*      pSampleLocations;
 +};
 +
 +struct VkAttachmentSampleLocationsEXT
 +{
 +      deUint32                                        attachmentIndex;
 +      VkSampleLocationsInfoEXT        sampleLocationsInfo;
 +};
 +
 +struct VkSubpassSampleLocationsEXT
 +{
 +      deUint32                                        subpassIndex;
 +      VkSampleLocationsInfoEXT        sampleLocationsInfo;
 +};
 +
 +struct VkRenderPassSampleLocationsBeginInfoEXT
 +{
 +      VkStructureType                                                 sType;
 +      const void*                                                             pNext;
 +      deUint32                                                                attachmentInitialSampleLocationsCount;
 +      const VkAttachmentSampleLocationsEXT*   pAttachmentInitialSampleLocations;
 +      deUint32                                                                postSubpassSampleLocationsCount;
 +      const VkSubpassSampleLocationsEXT*              pPostSubpassSampleLocations;
 +};
 +
 +struct VkPipelineSampleLocationsStateCreateInfoEXT
 +{
 +      VkStructureType                         sType;
 +      const void*                                     pNext;
 +      VkBool32                                        sampleLocationsEnable;
 +      VkSampleLocationsInfoEXT        sampleLocationsInfo;
 +};
 +
 +struct VkPhysicalDeviceSampleLocationsPropertiesEXT
 +{
 +      VkStructureType         sType;
 +      void*                           pNext;
 +      VkSampleCountFlags      sampleLocationSampleCounts;
 +      VkExtent2D                      maxSampleLocationGridSize;
 +      float                           sampleLocationCoordinateRange[2];
 +      deUint32                        sampleLocationSubPixelBits;
 +      VkBool32                        variableSampleLocations;
 +};
 +
 +struct VkMultisamplePropertiesEXT
 +{
 +      VkStructureType sType;
 +      void*                   pNext;
 +      VkExtent2D              maxSampleLocationGridSize;
 +};
 +
 +struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
 +{
 +      VkStructureType sType;
 +      void*                   pNext;
 +      VkBool32                advancedBlendCoherentOperations;
 +};
 +
 +struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
 +{
 +      VkStructureType sType;
 +      void*                   pNext;
 +      deUint32                advancedBlendMaxColorAttachments;
 +      VkBool32                advancedBlendIndependentBlend;
 +      VkBool32                advancedBlendNonPremultipliedSrcColor;
 +      VkBool32                advancedBlendNonPremultipliedDstColor;
 +      VkBool32                advancedBlendCorrelatedOverlap;
 +      VkBool32                advancedBlendAllOperations;
 +};
 +
 +struct VkPipelineColorBlendAdvancedStateCreateInfoEXT
 +{
 +      VkStructureType         sType;
 +      const void*                     pNext;
 +      VkBool32                        srcPremultiplied;
 +      VkBool32                        dstPremultiplied;
 +      VkBlendOverlapEXT       blendOverlap;
 +};
 +
 +struct VkDrmFormatModifierPropertiesEXT
 +{
 +      deUint64                                drmFormatModifier;
 +      deUint32                                drmFormatModifierPlaneCount;
 +      VkFormatFeatureFlags    drmFormatModifierTilingFeatures;
 +};
 +
 +struct VkDrmFormatModifierPropertiesListEXT
 +{
 +      VkStructureType                                         sType;
 +      void*                                                           pNext;
 +      deUint32                                                        drmFormatModifierCount;
 +      VkDrmFormatModifierPropertiesEXT*       pDrmFormatModifierProperties;
 +};
 +
 +struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT
 +{
 +      VkStructureType sType;
 +      const void*             pNext;
 +      deUint64                drmFormatModifier;
 +      VkSharingMode   sharingMode;
 +      deUint32                queueFamilyIndexCount;
 +      const deUint32* pQueueFamilyIndices;
 +};
 +
 +struct VkImageDrmFormatModifierListCreateInfoEXT
 +{
 +      VkStructureType sType;
 +      const void*             pNext;
 +      deUint32                drmFormatModifierCount;
 +      const deUint64* pDrmFormatModifiers;
 +};
 +
 +struct VkImageDrmFormatModifierExplicitCreateInfoEXT
 +{
 +      VkStructureType                         sType;
 +      const void*                                     pNext;
 +      deUint64                                        drmFormatModifier;
 +      deUint32                                        drmFormatModifierPlaneCount;
 +      const VkSubresourceLayout*      pPlaneLayouts;
 +};
 +
 +struct VkImageDrmFormatModifierPropertiesEXT
 +{
 +      VkStructureType sType;
 +      void*                   pNext;
 +      deUint64                drmFormatModifier;
 +};
 +
 +struct VkPhysicalDeviceImageViewImageFormatInfoEXT
 +{
 +      VkStructureType sType;
 +      void*                   pNext;
 +      VkImageViewType imageViewType;
 +};
 +
 +struct VkFilterCubicImageViewImageFormatPropertiesEXT
 +{
 +      VkStructureType sType;
 +      void*                   pNext;
 +      VkBool32                filterCubic;
 +      VkBool32                filterCubicMinmax;
 +};
 +
 +struct VkDeviceQueueGlobalPriorityCreateInfoEXT
 +{
 +      VkStructureType                         sType;
 +      const void*                                     pNext;
 +      VkQueueGlobalPriorityEXT        globalPriority;
 +};
 +
 +struct VkImportMemoryHostPointerInfoEXT
 +{
 +      VkStructureType                                         sType;
 +      const void*                                                     pNext;
 +      VkExternalMemoryHandleTypeFlagBits      handleType;
 +      void*                                                           pHostPointer;
 +};
 +
 +struct VkMemoryHostPointerPropertiesEXT
 +{
 +      VkStructureType sType;
 +      void*                   pNext;
 +      deUint32                memoryTypeBits;
 +};
 +
 +struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT
 +{
 +      VkStructureType sType;
 +      void*                   pNext;
 +      VkDeviceSize    minImportedHostPointerAlignment;
 +};
 +
 +struct VkCalibratedTimestampInfoEXT
 +{
 +      VkStructureType sType;
 +      const void*             pNext;
 +      VkTimeDomainEXT timeDomain;
 +};
 +
 +struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT
 +{
 +      VkStructureType sType;
 +      void*                   pNext;
 +      deUint32                maxVertexAttribDivisor;
 +};
 +
 +struct VkVertexInputBindingDivisorDescriptionEXT
 +{
 +      deUint32        binding;
 +      deUint32        divisor;
 +};
 +
 +struct VkPipelineVertexInputDivisorStateCreateInfoEXT
 +{
 +      VkStructureType                                                                         sType;
 +      const void*                                                                                     pNext;
 +      deUint32                                                                                        vertexBindingDivisorCount;
 +      const VkVertexInputBindingDivisorDescriptionEXT*        pVertexBindingDivisors;
 +};
 +
 +struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT
 +{
 +      VkStructureType sType;
 +      void*                   pNext;
 +      VkBool32                vertexAttributeInstanceRateDivisor;
 +      VkBool32                vertexAttributeInstanceRateZeroDivisor;
 +};
 +
 +struct VkPhysicalDevicePCIBusInfoPropertiesEXT
 +{
 +      VkStructureType sType;
 +      void*                   pNext;
 +      deUint32                pciDomain;
 +      deUint32                pciBus;
 +      deUint32                pciDevice;
 +      deUint32                pciFunction;
 +};
 +
 +struct VkPhysicalDeviceSubgroupSizeControlFeaturesEXT
 +{
 +      VkStructureType sType;
 +      void*                   pNext;
 +      VkBool32                subgroupSizeControl;
 +      VkBool32                computeFullSubgroups;
 +};
 +
 +struct VkPhysicalDeviceSubgroupSizeControlPropertiesEXT
 +{
 +      VkStructureType         sType;
 +      void*                           pNext;
 +      deUint32                        minSubgroupSize;
 +      deUint32                        maxSubgroupSize;
 +      deUint32                        maxComputeWorkgroupSubgroups;
 +      VkShaderStageFlags      requiredSubgroupSizeStages;
 +};
 +
 +struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT
 +{
 +      VkStructureType sType;
 +      void*                   pNext;
 +      deUint32                requiredSubgroupSize;
 +};
 +
 +struct VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT
 +{
 +      VkStructureType sType;
 +      void*                   pNext;
 +      VkBool32                shaderImageInt64Atomics;
 +      VkBool32                sparseImageInt64Atomics;
 +};
 +
 +struct VkPhysicalDeviceMemoryBudgetPropertiesEXT
 +{
 +      VkStructureType sType;
 +      void*                   pNext;
 +      VkDeviceSize    heapBudget[VK_MAX_MEMORY_HEAPS];
 +      VkDeviceSize    heapUsage[VK_MAX_MEMORY_HEAPS];
 +};
 +
++struct VkValidationFeaturesEXT
++{
++      VkStructureType                                                 sType;
++      const void*                                                             pNext;
++      deUint32                                                                enabledValidationFeatureCount;
++      const VkValidationFeatureEnableEXT*             pEnabledValidationFeatures;
++      deUint32                                                                disabledValidationFeatureCount;
++      const VkValidationFeatureDisableEXT*    pDisabledValidationFeatures;
++};
++
 +struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT
 +{
 +      VkStructureType sType;
 +      void*                   pNext;
 +      VkBool32                fragmentShaderSampleInterlock;
 +      VkBool32                fragmentShaderPixelInterlock;
 +      VkBool32                fragmentShaderShadingRateInterlock;
 +};
 +
 +struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT
 +{
 +      VkStructureType sType;
 +      void*                   pNext;
 +      VkBool32                ycbcrImageArrays;
 +};
 +
 +struct VkHeadlessSurfaceCreateInfoEXT
 +{
 +      VkStructureType                                 sType;
 +      const void*                                             pNext;
 +      VkHeadlessSurfaceCreateFlagsEXT flags;
 +};
 +
 +struct VkPhysicalDeviceLineRasterizationFeaturesEXT
 +{
 +      VkStructureType sType;
 +      void*                   pNext;
 +      VkBool32                rectangularLines;
 +      VkBool32                bresenhamLines;
 +      VkBool32                smoothLines;
 +      VkBool32                stippledRectangularLines;
 +      VkBool32                stippledBresenhamLines;
 +      VkBool32                stippledSmoothLines;
 +};
 +
 +struct VkPhysicalDeviceLineRasterizationPropertiesEXT
 +{
 +      VkStructureType sType;
 +      void*                   pNext;
 +      deUint32                lineSubPixelPrecisionBits;
 +};
 +
 +struct VkPipelineRasterizationLineStateCreateInfoEXT
 +{
 +      VkStructureType                         sType;
 +      const void*                                     pNext;
 +      VkLineRasterizationModeEXT      lineRasterizationMode;
 +      VkBool32                                        stippledLineEnable;
 +      deUint32                                        lineStippleFactor;
 +      deUint16                                        lineStipplePattern;
 +};
 +
 +struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT
 +{
 +      VkStructureType sType;
 +      void*                   pNext;
 +      VkBool32                shaderBufferFloat32Atomics;
 +      VkBool32                shaderBufferFloat32AtomicAdd;
 +      VkBool32                shaderBufferFloat64Atomics;
 +      VkBool32                shaderBufferFloat64AtomicAdd;
 +      VkBool32                shaderSharedFloat32Atomics;
 +      VkBool32                shaderSharedFloat32AtomicAdd;
 +      VkBool32                shaderSharedFloat64Atomics;
 +      VkBool32                shaderSharedFloat64AtomicAdd;
 +      VkBool32                shaderImageFloat32Atomics;
 +      VkBool32                shaderImageFloat32AtomicAdd;
 +      VkBool32                sparseImageFloat32Atomics;
 +      VkBool32                sparseImageFloat32AtomicAdd;
 +};
 +
 +struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT
 +{
 +      VkStructureType sType;
 +      void*                   pNext;
 +      VkBool32                indexTypeUint8;
 +};
 +
 +struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT
 +{
 +      VkStructureType sType;
 +      void*                   pNext;
 +      VkBool32                extendedDynamicState;
 +};
 +
 +struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT
 +{
 +      VkStructureType sType;
 +      void*                   pNext;
 +      VkBool32                shaderDemoteToHelperInvocation;
 +};
 +
 +struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT
 +{
 +      VkStructureType sType;
 +      void*                   pNext;
 +      VkBool32                texelBufferAlignment;
 +};
 +
 +struct VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT
 +{
 +      VkStructureType sType;
 +      void*                   pNext;
 +      VkDeviceSize    storageTexelBufferOffsetAlignmentBytes;
 +      VkBool32                storageTexelBufferOffsetSingleTexelAlignment;
 +      VkDeviceSize    uniformTexelBufferOffsetAlignmentBytes;
 +      VkBool32                uniformTexelBufferOffsetSingleTexelAlignment;
 +};
 +
 +struct VkPhysicalDeviceRobustness2FeaturesEXT
 +{
 +      VkStructureType sType;
 +      void*                   pNext;
 +      VkBool32                robustBufferAccess2;
 +      VkBool32                robustImageAccess2;
 +      VkBool32                nullDescriptor;
 +};
 +
 +struct VkPhysicalDeviceRobustness2PropertiesEXT
 +{
 +      VkStructureType sType;
 +      void*                   pNext;
 +      VkDeviceSize    robustStorageBufferAccessSizeAlignment;
 +      VkDeviceSize    robustUniformBufferAccessSizeAlignment;
 +};
 +
 +struct VkSamplerCustomBorderColorCreateInfoEXT
 +{
 +      VkStructureType         sType;
 +      const void*                     pNext;
 +      VkClearColorValue       customBorderColor;
 +      VkFormat                        format;
 +};
 +
 +struct VkPhysicalDeviceCustomBorderColorPropertiesEXT
 +{
 +      VkStructureType sType;
 +      void*                   pNext;
 +      deUint32                maxCustomBorderColorSamplers;
 +};
 +
 +struct VkPhysicalDeviceCustomBorderColorFeaturesEXT
 +{
 +      VkStructureType sType;
 +      void*                   pNext;
 +      VkBool32                customBorderColors;
 +      VkBool32                customBorderColorWithoutFormat;
 +};
 +
++struct VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT
++{
++      VkStructureType sType;
++      void*                   pNext;
++      VkBool32                ycbcr2plane444Formats;
++};
++
 +struct VkPhysicalDeviceImageRobustnessFeaturesEXT
 +{
 +      VkStructureType sType;
 +      void*                   pNext;
 +      VkBool32                robustImageAccess;
 +};
 +
 +struct VkPhysicalDevice4444FormatsFeaturesEXT
 +{
 +      VkStructureType sType;
 +      void*                   pNext;
 +      VkBool32                formatA4R4G4B4;
 +      VkBool32                formatA4B4G4R4;
 +};
 +
- typedef VkFaultCallbackInfo VkFaultCallbackInfoKHR;
++struct VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT
++{
++      VkStructureType sType;
++      void*                   pNext;
++      VkBool32                vertexInputDynamicState;
++};
++
++struct VkVertexInputBindingDescription2EXT
++{
++      VkStructureType         sType;
++      void*                           pNext;
++      deUint32                        binding;
++      deUint32                        stride;
++      VkVertexInputRate       inputRate;
++      deUint32                        divisor;
++};
 +
- typedef VkPhysicalDeviceFaultHandlingProperties VkPhysicalDeviceFaultHandlingPropertiesKHR;
++struct VkVertexInputAttributeDescription2EXT
++{
++      VkStructureType sType;
++      void*                   pNext;
++      deUint32                location;
++      deUint32                binding;
++      VkFormat                format;
++      deUint32                offset;
++};
 +
- typedef VkPhysicalDevicePipelineIdentifierFeatures VkPhysicalDevicePipelineIdentifierFeaturesKHR;
++struct VkPhysicalDeviceExtendedDynamicState2FeaturesEXT
++{
++      VkStructureType sType;
++      void*                   pNext;
++      VkBool32                extendedDynamicState2;
++      VkBool32                extendedDynamicState2LogicOp;
++      VkBool32                extendedDynamicState2PatchControlPoints;
++};
 +
- typedef VkPipelineIdentifierInfo VkPipelineIdentifierInfoKHR;
++struct VkPhysicalDeviceColorWriteEnableFeaturesEXT
++{
++      VkStructureType sType;
++      void*                   pNext;
++      VkBool32                colorWriteEnable;
++};
 +
++struct VkPipelineColorWriteCreateInfoEXT
++{
++      VkStructureType sType;
++      const void*             pNext;
++      deUint32                attachmentCount;
++      const VkBool32* pColorWriteEnables;
++};
 +
 +typedef VkPhysicalDeviceVariablePointersFeatures VkPhysicalDeviceVariablePointerFeatures;
 +
 +typedef VkPhysicalDeviceShaderDrawParametersFeatures VkPhysicalDeviceShaderDrawParameterFeatures;
 +
index e43d035,0000000..28f4e53
mode 100644,000000..100644
--- /dev/null
@@@ -1,463 -1,0 +1,425 @@@
- inline VkSparseMemoryBind makeSparseMemoryBind (VkDeviceSize resourceOffset, VkDeviceSize size, VkDeviceMemory memory, VkDeviceSize memoryOffset, VkSparseMemoryBindFlags flags)
- {
-       VkSparseMemoryBind res;
-       res.resourceOffset      = resourceOffset;
-       res.size                        = size;
-       res.memory                      = memory;
-       res.memoryOffset        = memoryOffset;
-       res.flags                       = flags;
-       return res;
- }
- inline VkSparseBufferMemoryBindInfo makeSparseBufferMemoryBindInfo (VkBuffer buffer, deUint32 bindCount, const VkSparseMemoryBind* pBinds)
- {
-       VkSparseBufferMemoryBindInfo res;
-       res.buffer              = buffer;
-       res.bindCount   = bindCount;
-       res.pBinds              = pBinds;
-       return res;
- }
- inline VkSparseImageOpaqueMemoryBindInfo makeSparseImageOpaqueMemoryBindInfo (VkImage image, deUint32 bindCount, const VkSparseMemoryBind* pBinds)
- {
-       VkSparseImageOpaqueMemoryBindInfo res;
-       res.image               = image;
-       res.bindCount   = bindCount;
-       res.pBinds              = pBinds;
-       return res;
- }
 +/* WARNING: This is auto-generated file. Do not modify, since changes will
 + * be lost! Modify the generating script instead.
 + */
 +
 +inline VkExtent2D makeExtent2D (deUint32 width, deUint32 height)
 +{
 +      VkExtent2D res;
 +      res.width       = width;
 +      res.height      = height;
 +      return res;
 +}
 +
 +inline VkExtent3D makeExtent3D (deUint32 width, deUint32 height, deUint32 depth)
 +{
 +      VkExtent3D res;
 +      res.width       = width;
 +      res.height      = height;
 +      res.depth       = depth;
 +      return res;
 +}
 +
 +inline VkOffset2D makeOffset2D (deInt32 x, deInt32 y)
 +{
 +      VkOffset2D res;
 +      res.x   = x;
 +      res.y   = y;
 +      return res;
 +}
 +
 +inline VkOffset3D makeOffset3D (deInt32 x, deInt32 y, deInt32 z)
 +{
 +      VkOffset3D res;
 +      res.x   = x;
 +      res.y   = y;
 +      res.z   = z;
 +      return res;
 +}
 +
 +inline VkDispatchIndirectCommand makeDispatchIndirectCommand (deUint32 x, deUint32 y, deUint32 z)
 +{
 +      VkDispatchIndirectCommand res;
 +      res.x   = x;
 +      res.y   = y;
 +      res.z   = z;
 +      return res;
 +}
 +
 +inline VkDrawIndexedIndirectCommand makeDrawIndexedIndirectCommand (deUint32 indexCount, deUint32 instanceCount, deUint32 firstIndex, deInt32 vertexOffset, deUint32 firstInstance)
 +{
 +      VkDrawIndexedIndirectCommand res;
 +      res.indexCount          = indexCount;
 +      res.instanceCount       = instanceCount;
 +      res.firstIndex          = firstIndex;
 +      res.vertexOffset        = vertexOffset;
 +      res.firstInstance       = firstInstance;
 +      return res;
 +}
 +
 +inline VkDrawIndirectCommand makeDrawIndirectCommand (deUint32 vertexCount, deUint32 instanceCount, deUint32 firstVertex, deUint32 firstInstance)
 +{
 +      VkDrawIndirectCommand res;
 +      res.vertexCount         = vertexCount;
 +      res.instanceCount       = instanceCount;
 +      res.firstVertex         = firstVertex;
 +      res.firstInstance       = firstInstance;
 +      return res;
 +}
 +
 +inline VkImageSubresourceRange makeImageSubresourceRange (VkImageAspectFlags aspectMask, deUint32 baseMipLevel, deUint32 levelCount, deUint32 baseArrayLayer, deUint32 layerCount)
 +{
 +      VkImageSubresourceRange res;
 +      res.aspectMask          = aspectMask;
 +      res.baseMipLevel        = baseMipLevel;
 +      res.levelCount          = levelCount;
 +      res.baseArrayLayer      = baseArrayLayer;
 +      res.layerCount          = layerCount;
 +      return res;
 +}
 +
 +inline VkAllocationCallbacks makeAllocationCallbacks (void* pUserData, PFN_vkAllocationFunction pfnAllocation, PFN_vkReallocationFunction pfnReallocation, PFN_vkFreeFunction pfnFree, PFN_vkInternalAllocationNotification pfnInternalAllocation, PFN_vkInternalFreeNotification pfnInternalFree)
 +{
 +      VkAllocationCallbacks res;
 +      res.pUserData                           = pUserData;
 +      res.pfnAllocation                       = pfnAllocation;
 +      res.pfnReallocation                     = pfnReallocation;
 +      res.pfnFree                                     = pfnFree;
 +      res.pfnInternalAllocation       = pfnInternalAllocation;
 +      res.pfnInternalFree                     = pfnInternalFree;
 +      return res;
 +}
 +
 +inline VkMemoryRequirements makeMemoryRequirements (VkDeviceSize size, VkDeviceSize alignment, deUint32 memoryTypeBits)
 +{
 +      VkMemoryRequirements res;
 +      res.size                        = size;
 +      res.alignment           = alignment;
 +      res.memoryTypeBits      = memoryTypeBits;
 +      return res;
 +}
 +
- inline VkSparseImageMemoryBindInfo makeSparseImageMemoryBindInfo (VkImage image, deUint32 bindCount, const VkSparseImageMemoryBind* pBinds)
- {
-       VkSparseImageMemoryBindInfo res;
-       res.image               = image;
-       res.bindCount   = bindCount;
-       res.pBinds              = pBinds;
-       return res;
- }
 +inline VkImageSubresource makeImageSubresource (VkImageAspectFlags aspectMask, deUint32 mipLevel, deUint32 arrayLayer)
 +{
 +      VkImageSubresource res;
 +      res.aspectMask  = aspectMask;
 +      res.mipLevel    = mipLevel;
 +      res.arrayLayer  = arrayLayer;
 +      return res;
 +}
 +
 +inline VkSubresourceLayout makeSubresourceLayout (VkDeviceSize offset, VkDeviceSize size, VkDeviceSize rowPitch, VkDeviceSize arrayPitch, VkDeviceSize depthPitch)
 +{
 +      VkSubresourceLayout res;
 +      res.offset              = offset;
 +      res.size                = size;
 +      res.rowPitch    = rowPitch;
 +      res.arrayPitch  = arrayPitch;
 +      res.depthPitch  = depthPitch;
 +      return res;
 +}
 +
 +inline VkComponentMapping makeComponentMapping (VkComponentSwizzle r, VkComponentSwizzle g, VkComponentSwizzle b, VkComponentSwizzle a)
 +{
 +      VkComponentMapping res;
 +      res.r   = r;
 +      res.g   = g;
 +      res.b   = b;
 +      res.a   = a;
 +      return res;
 +}
 +
 +inline VkSpecializationMapEntry makeSpecializationMapEntry (deUint32 constantID, deUint32 offset, deUintptr size)
 +{
 +      VkSpecializationMapEntry res;
 +      res.constantID  = constantID;
 +      res.offset              = offset;
 +      res.size                = size;
 +      return res;
 +}
 +
 +inline VkSpecializationInfo makeSpecializationInfo (deUint32 mapEntryCount, const VkSpecializationMapEntry* pMapEntries, deUintptr dataSize, const void* pData)
 +{
 +      VkSpecializationInfo res;
 +      res.mapEntryCount       = mapEntryCount;
 +      res.pMapEntries         = pMapEntries;
 +      res.dataSize            = dataSize;
 +      res.pData                       = pData;
 +      return res;
 +}
 +
 +inline VkVertexInputBindingDescription makeVertexInputBindingDescription (deUint32 binding, deUint32 stride, VkVertexInputRate inputRate)
 +{
 +      VkVertexInputBindingDescription res;
 +      res.binding             = binding;
 +      res.stride              = stride;
 +      res.inputRate   = inputRate;
 +      return res;
 +}
 +
 +inline VkVertexInputAttributeDescription makeVertexInputAttributeDescription (deUint32 location, deUint32 binding, VkFormat format, deUint32 offset)
 +{
 +      VkVertexInputAttributeDescription res;
 +      res.location    = location;
 +      res.binding             = binding;
 +      res.format              = format;
 +      res.offset              = offset;
 +      return res;
 +}
 +
 +inline VkViewport makeViewport (float x, float y, float width, float height, float minDepth, float maxDepth)
 +{
 +      VkViewport res;
 +      res.x                   = x;
 +      res.y                   = y;
 +      res.width               = width;
 +      res.height              = height;
 +      res.minDepth    = minDepth;
 +      res.maxDepth    = maxDepth;
 +      return res;
 +}
 +
 +inline VkStencilOpState makeStencilOpState (VkStencilOp failOp, VkStencilOp passOp, VkStencilOp depthFailOp, VkCompareOp compareOp, deUint32 compareMask, deUint32 writeMask, deUint32 reference)
 +{
 +      VkStencilOpState res;
 +      res.failOp              = failOp;
 +      res.passOp              = passOp;
 +      res.depthFailOp = depthFailOp;
 +      res.compareOp   = compareOp;
 +      res.compareMask = compareMask;
 +      res.writeMask   = writeMask;
 +      res.reference   = reference;
 +      return res;
 +}
 +
 +inline VkPipelineColorBlendAttachmentState makePipelineColorBlendAttachmentState (VkBool32 blendEnable, VkBlendFactor srcColorBlendFactor, VkBlendFactor dstColorBlendFactor, VkBlendOp colorBlendOp, VkBlendFactor srcAlphaBlendFactor, VkBlendFactor dstAlphaBlendFactor, VkBlendOp alphaBlendOp, VkColorComponentFlags colorWriteMask)
 +{
 +      VkPipelineColorBlendAttachmentState res;
 +      res.blendEnable                 = blendEnable;
 +      res.srcColorBlendFactor = srcColorBlendFactor;
 +      res.dstColorBlendFactor = dstColorBlendFactor;
 +      res.colorBlendOp                = colorBlendOp;
 +      res.srcAlphaBlendFactor = srcAlphaBlendFactor;
 +      res.dstAlphaBlendFactor = dstAlphaBlendFactor;
 +      res.alphaBlendOp                = alphaBlendOp;
 +      res.colorWriteMask              = colorWriteMask;
 +      return res;
 +}
 +
 +inline VkPushConstantRange makePushConstantRange (VkShaderStageFlags stageFlags, deUint32 offset, deUint32 size)
 +{
 +      VkPushConstantRange res;
 +      res.stageFlags  = stageFlags;
 +      res.offset              = offset;
 +      res.size                = size;
 +      return res;
 +}
 +
 +inline VkDescriptorBufferInfo makeDescriptorBufferInfo (VkBuffer buffer, VkDeviceSize offset, VkDeviceSize range)
 +{
 +      VkDescriptorBufferInfo res;
 +      res.buffer      = buffer;
 +      res.offset      = offset;
 +      res.range       = range;
 +      return res;
 +}
 +
 +inline VkDescriptorImageInfo makeDescriptorImageInfo (VkSampler sampler, VkImageView imageView, VkImageLayout imageLayout)
 +{
 +      VkDescriptorImageInfo res;
 +      res.sampler             = sampler;
 +      res.imageView   = imageView;
 +      res.imageLayout = imageLayout;
 +      return res;
 +}
 +
 +inline VkDescriptorPoolSize makeDescriptorPoolSize (VkDescriptorType type, deUint32 descriptorCount)
 +{
 +      VkDescriptorPoolSize res;
 +      res.type                        = type;
 +      res.descriptorCount     = descriptorCount;
 +      return res;
 +}
 +
 +inline VkDescriptorSetLayoutBinding makeDescriptorSetLayoutBinding (deUint32 binding, VkDescriptorType descriptorType, deUint32 descriptorCount, VkShaderStageFlags stageFlags, const VkSampler* pImmutableSamplers)
 +{
 +      VkDescriptorSetLayoutBinding res;
 +      res.binding                             = binding;
 +      res.descriptorType              = descriptorType;
 +      res.descriptorCount             = descriptorCount;
 +      res.stageFlags                  = stageFlags;
 +      res.pImmutableSamplers  = pImmutableSamplers;
 +      return res;
 +}
 +
 +inline VkAttachmentDescription makeAttachmentDescription (VkAttachmentDescriptionFlags flags, VkFormat format, VkSampleCountFlagBits samples, VkAttachmentLoadOp loadOp, VkAttachmentStoreOp storeOp, VkAttachmentLoadOp stencilLoadOp, VkAttachmentStoreOp stencilStoreOp, VkImageLayout initialLayout, VkImageLayout finalLayout)
 +{
 +      VkAttachmentDescription res;
 +      res.flags                       = flags;
 +      res.format                      = format;
 +      res.samples                     = samples;
 +      res.loadOp                      = loadOp;
 +      res.storeOp                     = storeOp;
 +      res.stencilLoadOp       = stencilLoadOp;
 +      res.stencilStoreOp      = stencilStoreOp;
 +      res.initialLayout       = initialLayout;
 +      res.finalLayout         = finalLayout;
 +      return res;
 +}
 +
 +inline VkAttachmentReference makeAttachmentReference (deUint32 attachment, VkImageLayout layout)
 +{
 +      VkAttachmentReference res;
 +      res.attachment  = attachment;
 +      res.layout              = layout;
 +      return res;
 +}
 +
 +inline VkSubpassDescription makeSubpassDescription (VkSubpassDescriptionFlags flags, VkPipelineBindPoint pipelineBindPoint, deUint32 inputAttachmentCount, const VkAttachmentReference* pInputAttachments, deUint32 colorAttachmentCount, const VkAttachmentReference* pColorAttachments, const VkAttachmentReference* pResolveAttachments, const VkAttachmentReference* pDepthStencilAttachment, deUint32 preserveAttachmentCount, const deUint32* pPreserveAttachments)
 +{
 +      VkSubpassDescription res;
 +      res.flags                                       = flags;
 +      res.pipelineBindPoint           = pipelineBindPoint;
 +      res.inputAttachmentCount        = inputAttachmentCount;
 +      res.pInputAttachments           = pInputAttachments;
 +      res.colorAttachmentCount        = colorAttachmentCount;
 +      res.pColorAttachments           = pColorAttachments;
 +      res.pResolveAttachments         = pResolveAttachments;
 +      res.pDepthStencilAttachment     = pDepthStencilAttachment;
 +      res.preserveAttachmentCount     = preserveAttachmentCount;
 +      res.pPreserveAttachments        = pPreserveAttachments;
 +      return res;
 +}
 +
 +inline VkSubpassDependency makeSubpassDependency (deUint32 srcSubpass, deUint32 dstSubpass, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkAccessFlags srcAccessMask, VkAccessFlags dstAccessMask, VkDependencyFlags dependencyFlags)
 +{
 +      VkSubpassDependency res;
 +      res.srcSubpass          = srcSubpass;
 +      res.dstSubpass          = dstSubpass;
 +      res.srcStageMask        = srcStageMask;
 +      res.dstStageMask        = dstStageMask;
 +      res.srcAccessMask       = srcAccessMask;
 +      res.dstAccessMask       = dstAccessMask;
 +      res.dependencyFlags     = dependencyFlags;
 +      return res;
 +}
 +
 +inline VkBufferCopy makeBufferCopy (VkDeviceSize srcOffset, VkDeviceSize dstOffset, VkDeviceSize size)
 +{
 +      VkBufferCopy res;
 +      res.srcOffset   = srcOffset;
 +      res.dstOffset   = dstOffset;
 +      res.size                = size;
 +      return res;
 +}
 +
 +inline VkImageSubresourceLayers makeImageSubresourceLayers (VkImageAspectFlags aspectMask, deUint32 mipLevel, deUint32 baseArrayLayer, deUint32 layerCount)
 +{
 +      VkImageSubresourceLayers res;
 +      res.aspectMask          = aspectMask;
 +      res.mipLevel            = mipLevel;
 +      res.baseArrayLayer      = baseArrayLayer;
 +      res.layerCount          = layerCount;
 +      return res;
 +}
 +
 +inline VkClearDepthStencilValue makeClearDepthStencilValue (float depth, deUint32 stencil)
 +{
 +      VkClearDepthStencilValue res;
 +      res.depth       = depth;
 +      res.stencil     = stencil;
 +      return res;
 +}
 +
 +inline VkInputAttachmentAspectReference makeInputAttachmentAspectReference (deUint32 subpass, deUint32 inputAttachmentIndex, VkImageAspectFlags aspectMask)
 +{
 +      VkInputAttachmentAspectReference res;
 +      res.subpass                                     = subpass;
 +      res.inputAttachmentIndex        = inputAttachmentIndex;
 +      res.aspectMask                          = aspectMask;
 +      return res;
 +}
 +
 +inline VkExternalMemoryProperties makeExternalMemoryProperties (VkExternalMemoryFeatureFlags externalMemoryFeatures, VkExternalMemoryHandleTypeFlags exportFromImportedHandleTypes, VkExternalMemoryHandleTypeFlags compatibleHandleTypes)
 +{
 +      VkExternalMemoryProperties res;
 +      res.externalMemoryFeatures                      = externalMemoryFeatures;
 +      res.exportFromImportedHandleTypes       = exportFromImportedHandleTypes;
 +      res.compatibleHandleTypes                       = compatibleHandleTypes;
 +      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;
 +      res.format              = format;
 +      res.colorSpace  = colorSpace;
 +      return res;
 +}
 +
 +inline VkDisplayPlanePropertiesKHR makeDisplayPlanePropertiesKHR (VkDisplayKHR currentDisplay, deUint32 currentStackIndex)
 +{
 +      VkDisplayPlanePropertiesKHR res;
 +      res.currentDisplay              = currentDisplay;
 +      res.currentStackIndex   = currentStackIndex;
 +      return res;
 +}
 +
 +inline VkPresentRegionKHR makePresentRegionKHR (deUint32 rectangleCount, const VkRectLayerKHR* pRectangles)
 +{
 +      VkPresentRegionKHR res;
 +      res.rectangleCount      = rectangleCount;
 +      res.pRectangles         = pRectangles;
 +      return res;
 +}
 +
 +inline VkRefreshObjectKHR makeRefreshObjectKHR (VkObjectType objectType, deUint64 objectHandle, VkRefreshObjectFlagsKHR flags)
 +{
 +      VkRefreshObjectKHR res;
 +      res.objectType          = objectType;
 +      res.objectHandle        = objectHandle;
 +      res.flags                       = flags;
 +      return res;
 +}
 +
 +inline VkXYColorEXT makeXYColorEXT (float x, float y)
 +{
 +      VkXYColorEXT res;
 +      res.x   = x;
 +      res.y   = y;
 +      return res;
 +}
 +
 +inline VkSampleLocationEXT makeSampleLocationEXT (float x, float y)
 +{
 +      VkSampleLocationEXT res;
 +      res.x   = x;
 +      res.y   = y;
 +      return res;
 +}
 +
 +inline VkDrmFormatModifierPropertiesEXT makeDrmFormatModifierPropertiesEXT (deUint64 drmFormatModifier, deUint32 drmFormatModifierPlaneCount, VkFormatFeatureFlags drmFormatModifierTilingFeatures)
 +{
 +      VkDrmFormatModifierPropertiesEXT res;
 +      res.drmFormatModifier                           = drmFormatModifier;
 +      res.drmFormatModifierPlaneCount         = drmFormatModifierPlaneCount;
 +      res.drmFormatModifierTilingFeatures     = drmFormatModifierTilingFeatures;
 +      return res;
 +}
 +
 +inline VkVertexInputBindingDivisorDescriptionEXT makeVertexInputBindingDivisorDescriptionEXT (deUint32 binding, deUint32 divisor)
 +{
 +      VkVertexInputBindingDivisorDescriptionEXT res;
 +      res.binding     = binding;
 +      res.divisor     = divisor;
 +      return res;
 +}
index 8fed46a,0000000..bfdd913
mode 100644,000000..100644
--- /dev/null
@@@ -1,190 -1,0 +1,211 @@@
- virtual void                          getImageSparseMemoryRequirements                (VkDevice device, VkImage image, deUint32* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements* pSparseMemoryRequirements) const = 0;
- virtual VkResult                      queueBindSparse                                                 (VkQueue queue, deUint32 bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence) const = 0;
 +/* WARNING: This is auto-generated file. Do not modify, since changes will
 + * be lost! Modify the generating script instead.
 + */
 +virtual PFN_vkVoidFunction    getDeviceProcAddr                                               (VkDevice device, const char* pName) const = 0;
 +virtual void                          destroyDevice                                                   (VkDevice device, const VkAllocationCallbacks* pAllocator) const = 0;
 +virtual void                          getDeviceQueue                                                  (VkDevice device, deUint32 queueFamilyIndex, deUint32 queueIndex, VkQueue* pQueue) const = 0;
 +virtual VkResult                      queueSubmit                                                             (VkQueue queue, deUint32 submitCount, const VkSubmitInfo* pSubmits, VkFence fence) const = 0;
 +virtual VkResult                      queueWaitIdle                                                   (VkQueue queue) const = 0;
 +virtual VkResult                      deviceWaitIdle                                                  (VkDevice device) const = 0;
 +virtual VkResult                      allocateMemory                                                  (VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory) const = 0;
 +virtual VkResult                      mapMemory                                                               (VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData) const = 0;
 +virtual void                          unmapMemory                                                             (VkDevice device, VkDeviceMemory memory) const = 0;
 +virtual VkResult                      flushMappedMemoryRanges                                 (VkDevice device, deUint32 memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges) const = 0;
 +virtual VkResult                      invalidateMappedMemoryRanges                    (VkDevice device, deUint32 memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges) const = 0;
 +virtual void                          getDeviceMemoryCommitment                               (VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes) const = 0;
 +virtual VkResult                      bindBufferMemory                                                (VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset) const = 0;
 +virtual VkResult                      bindImageMemory                                                 (VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset) const = 0;
 +virtual void                          getBufferMemoryRequirements                             (VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements) const = 0;
 +virtual void                          getImageMemoryRequirements                              (VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements) const = 0;
- virtual void                          getCommandPoolMemoryConsumption                 (VkDevice device, VkCommandPool commandPool, VkCommandBuffer commandBuffer, VkCommandPoolMemoryConsumption* pConsumption) const = 0;
- virtual VkResult                      getFaultData                                                    (VkDevice device, VkFaultQueryBehavior faultQueryBehavior, VkBool32* pUnrecordedFaults, deUint32* pFaultCount, VkFaultData* pFaults) const = 0;
 +virtual VkResult                      createFence                                                             (VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence) const = 0;
 +virtual void                          destroyFence                                                    (VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator) const = 0;
 +virtual VkResult                      resetFences                                                             (VkDevice device, deUint32 fenceCount, const VkFence* pFences) const = 0;
 +virtual VkResult                      getFenceStatus                                                  (VkDevice device, VkFence fence) const = 0;
 +virtual VkResult                      waitForFences                                                   (VkDevice device, deUint32 fenceCount, const VkFence* pFences, VkBool32 waitAll, deUint64 timeout) const = 0;
 +virtual VkResult                      createSemaphore                                                 (VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore) const = 0;
 +virtual void                          destroySemaphore                                                (VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator) const = 0;
 +virtual VkResult                      createEvent                                                             (VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkEvent* pEvent) const = 0;
 +virtual void                          destroyEvent                                                    (VkDevice device, VkEvent event, const VkAllocationCallbacks* pAllocator) const = 0;
 +virtual VkResult                      getEventStatus                                                  (VkDevice device, VkEvent event) const = 0;
 +virtual VkResult                      setEvent                                                                (VkDevice device, VkEvent event) const = 0;
 +virtual VkResult                      resetEvent                                                              (VkDevice device, VkEvent event) const = 0;
 +virtual VkResult                      createQueryPool                                                 (VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkQueryPool* pQueryPool) const = 0;
 +virtual VkResult                      getQueryPoolResults                                             (VkDevice device, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount, deUintptr dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags) const = 0;
 +virtual VkResult                      createBuffer                                                    (VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer) const = 0;
 +virtual void                          destroyBuffer                                                   (VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator) const = 0;
 +virtual VkResult                      createBufferView                                                (VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView) const = 0;
 +virtual void                          destroyBufferView                                               (VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* pAllocator) const = 0;
 +virtual VkResult                      createImage                                                             (VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImage* pImage) const = 0;
 +virtual void                          destroyImage                                                    (VkDevice device, VkImage image, const VkAllocationCallbacks* pAllocator) const = 0;
 +virtual void                          getImageSubresourceLayout                               (VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout) const = 0;
 +virtual VkResult                      createImageView                                                 (VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImageView* pView) const = 0;
 +virtual void                          destroyImageView                                                (VkDevice device, VkImageView imageView, const VkAllocationCallbacks* pAllocator) const = 0;
 +virtual VkResult                      createPipelineCache                                             (VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache) const = 0;
 +virtual void                          destroyPipelineCache                                    (VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator) const = 0;
 +virtual VkResult                      createGraphicsPipelines                                 (VkDevice device, VkPipelineCache pipelineCache, deUint32 createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines) const = 0;
 +virtual VkResult                      createComputePipelines                                  (VkDevice device, VkPipelineCache pipelineCache, deUint32 createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines) const = 0;
 +virtual void                          destroyPipeline                                                 (VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator) const = 0;
 +virtual VkResult                      createPipelineLayout                                    (VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout) const = 0;
 +virtual void                          destroyPipelineLayout                                   (VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* pAllocator) const = 0;
 +virtual VkResult                      createSampler                                                   (VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler) const = 0;
 +virtual void                          destroySampler                                                  (VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator) const = 0;
 +virtual VkResult                      createDescriptorSetLayout                               (VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout) const = 0;
 +virtual void                          destroyDescriptorSetLayout                              (VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* pAllocator) const = 0;
 +virtual VkResult                      createDescriptorPool                                    (VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool) const = 0;
 +virtual VkResult                      resetDescriptorPool                                             (VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags) const = 0;
 +virtual VkResult                      allocateDescriptorSets                                  (VkDevice device, const VkDescriptorSetAllocateInfo* pAllocateInfo, VkDescriptorSet* pDescriptorSets) const = 0;
 +virtual VkResult                      freeDescriptorSets                                              (VkDevice device, VkDescriptorPool descriptorPool, deUint32 descriptorSetCount, const VkDescriptorSet* pDescriptorSets) const = 0;
 +virtual void                          updateDescriptorSets                                    (VkDevice device, deUint32 descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites, deUint32 descriptorCopyCount, const VkCopyDescriptorSet* pDescriptorCopies) const = 0;
 +virtual VkResult                      createFramebuffer                                               (VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFramebuffer* pFramebuffer) const = 0;
 +virtual void                          destroyFramebuffer                                              (VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator) const = 0;
 +virtual VkResult                      createRenderPass                                                (VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass) const = 0;
 +virtual void                          destroyRenderPass                                               (VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator) const = 0;
 +virtual void                          getRenderAreaGranularity                                (VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity) const = 0;
 +virtual VkResult                      createCommandPool                                               (VkDevice device, const VkCommandPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCommandPool* pCommandPool) const = 0;
 +virtual VkResult                      resetCommandPool                                                (VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags) const = 0;
 +virtual VkResult                      allocateCommandBuffers                                  (VkDevice device, const VkCommandBufferAllocateInfo* pAllocateInfo, VkCommandBuffer* pCommandBuffers) const = 0;
 +virtual void                          freeCommandBuffers                                              (VkDevice device, VkCommandPool commandPool, deUint32 commandBufferCount, const VkCommandBuffer* pCommandBuffers) const = 0;
 +virtual VkResult                      beginCommandBuffer                                              (VkCommandBuffer commandBuffer, const VkCommandBufferBeginInfo* pBeginInfo) const = 0;
 +virtual VkResult                      endCommandBuffer                                                (VkCommandBuffer commandBuffer) const = 0;
 +virtual VkResult                      resetCommandBuffer                                              (VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags) const = 0;
 +virtual void                          cmdBindPipeline                                                 (VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline) const = 0;
 +virtual void                          cmdSetViewport                                                  (VkCommandBuffer commandBuffer, deUint32 firstViewport, deUint32 viewportCount, const VkViewport* pViewports) const = 0;
 +virtual void                          cmdSetScissor                                                   (VkCommandBuffer commandBuffer, deUint32 firstScissor, deUint32 scissorCount, const VkRect2D* pScissors) const = 0;
 +virtual void                          cmdSetLineWidth                                                 (VkCommandBuffer commandBuffer, float lineWidth) const = 0;
 +virtual void                          cmdSetDepthBias                                                 (VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor) const = 0;
 +virtual void                          cmdSetBlendConstants                                    (VkCommandBuffer commandBuffer, const float blendConstants[4]) const = 0;
 +virtual void                          cmdSetDepthBounds                                               (VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds) const = 0;
 +virtual void                          cmdSetStencilCompareMask                                (VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, deUint32 compareMask) const = 0;
 +virtual void                          cmdSetStencilWriteMask                                  (VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, deUint32 writeMask) const = 0;
 +virtual void                          cmdSetStencilReference                                  (VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, deUint32 reference) const = 0;
 +virtual void                          cmdBindDescriptorSets                                   (VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, deUint32 firstSet, deUint32 descriptorSetCount, const VkDescriptorSet* pDescriptorSets, deUint32 dynamicOffsetCount, const deUint32* pDynamicOffsets) const = 0;
 +virtual void                          cmdBindIndexBuffer                                              (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType) const = 0;
 +virtual void                          cmdBindVertexBuffers                                    (VkCommandBuffer commandBuffer, deUint32 firstBinding, deUint32 bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets) const = 0;
 +virtual void                          cmdDraw                                                                 (VkCommandBuffer commandBuffer, deUint32 vertexCount, deUint32 instanceCount, deUint32 firstVertex, deUint32 firstInstance) const = 0;
 +virtual void                          cmdDrawIndexed                                                  (VkCommandBuffer commandBuffer, deUint32 indexCount, deUint32 instanceCount, deUint32 firstIndex, deInt32 vertexOffset, deUint32 firstInstance) const = 0;
 +virtual void                          cmdDrawIndirect                                                 (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, deUint32 drawCount, deUint32 stride) const = 0;
 +virtual void                          cmdDrawIndexedIndirect                                  (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, deUint32 drawCount, deUint32 stride) const = 0;
 +virtual void                          cmdDispatch                                                             (VkCommandBuffer commandBuffer, deUint32 groupCountX, deUint32 groupCountY, deUint32 groupCountZ) const = 0;
 +virtual void                          cmdDispatchIndirect                                             (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset) const = 0;
 +virtual void                          cmdCopyBuffer                                                   (VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, deUint32 regionCount, const VkBufferCopy* pRegions) const = 0;
 +virtual void                          cmdCopyImage                                                    (VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkImageCopy* pRegions) const = 0;
 +virtual void                          cmdBlitImage                                                    (VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkImageBlit* pRegions, VkFilter filter) const = 0;
 +virtual void                          cmdCopyBufferToImage                                    (VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkBufferImageCopy* pRegions) const = 0;
 +virtual void                          cmdCopyImageToBuffer                                    (VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, deUint32 regionCount, const VkBufferImageCopy* pRegions) const = 0;
 +virtual void                          cmdUpdateBuffer                                                 (VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const void* pData) const = 0;
 +virtual void                          cmdFillBuffer                                                   (VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, deUint32 data) const = 0;
 +virtual void                          cmdClearColorImage                                              (VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, deUint32 rangeCount, const VkImageSubresourceRange* pRanges) const = 0;
 +virtual void                          cmdClearDepthStencilImage                               (VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, deUint32 rangeCount, const VkImageSubresourceRange* pRanges) const = 0;
 +virtual void                          cmdClearAttachments                                             (VkCommandBuffer commandBuffer, deUint32 attachmentCount, const VkClearAttachment* pAttachments, deUint32 rectCount, const VkClearRect* pRects) const = 0;
 +virtual void                          cmdResolveImage                                                 (VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkImageResolve* pRegions) const = 0;
 +virtual void                          cmdSetEvent                                                             (VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask) const = 0;
 +virtual void                          cmdResetEvent                                                   (VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask) const = 0;
 +virtual void                          cmdWaitEvents                                                   (VkCommandBuffer commandBuffer, deUint32 eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, deUint32 memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, deUint32 bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, deUint32 imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers) const = 0;
 +virtual void                          cmdPipelineBarrier                                              (VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, deUint32 memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, deUint32 bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, deUint32 imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers) const = 0;
 +virtual void                          cmdBeginQuery                                                   (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query, VkQueryControlFlags flags) const = 0;
 +virtual void                          cmdEndQuery                                                             (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query) const = 0;
 +virtual void                          cmdResetQueryPool                                               (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount) const = 0;
 +virtual void                          cmdWriteTimestamp                                               (VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, deUint32 query) const = 0;
 +virtual void                          cmdCopyQueryPoolResults                                 (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags) const = 0;
 +virtual void                          cmdPushConstants                                                (VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, deUint32 offset, deUint32 size, const void* pValues) const = 0;
 +virtual void                          cmdBeginRenderPass                                              (VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents) const = 0;
 +virtual void                          cmdNextSubpass                                                  (VkCommandBuffer commandBuffer, VkSubpassContents contents) const = 0;
 +virtual void                          cmdEndRenderPass                                                (VkCommandBuffer commandBuffer) const = 0;
 +virtual void                          cmdExecuteCommands                                              (VkCommandBuffer commandBuffer, deUint32 commandBufferCount, const VkCommandBuffer* pCommandBuffers) const = 0;
- virtual void                          getImageSparseMemoryRequirements2               (VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, deUint32* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) const = 0;
 +virtual VkResult                      bindBufferMemory2                                               (VkDevice device, deUint32 bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos) const = 0;
 +virtual VkResult                      bindImageMemory2                                                (VkDevice device, deUint32 bindInfoCount, const VkBindImageMemoryInfo* pBindInfos) const = 0;
 +virtual void                          getDeviceGroupPeerMemoryFeatures                (VkDevice device, deUint32 heapIndex, deUint32 localDeviceIndex, deUint32 remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures) const = 0;
 +virtual void                          cmdSetDeviceMask                                                (VkCommandBuffer commandBuffer, deUint32 deviceMask) const = 0;
 +virtual void                          cmdDispatchBase                                                 (VkCommandBuffer commandBuffer, deUint32 baseGroupX, deUint32 baseGroupY, deUint32 baseGroupZ, deUint32 groupCountX, deUint32 groupCountY, deUint32 groupCountZ) const = 0;
 +virtual void                          getImageMemoryRequirements2                             (VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements) const = 0;
 +virtual void                          getBufferMemoryRequirements2                    (VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements) const = 0;
- virtual VkResult                      getFaultDataKHR                                                 (VkDevice device, VkFaultQueryBehavior faultQueryBehavior, VkBool32* pUnrecordedFaults, deUint32* pFaultCount, VkFaultData* pFaults) const = 0;
 +virtual void                          getDeviceQueue2                                                 (VkDevice device, const VkDeviceQueueInfo2* pQueueInfo, VkQueue* pQueue) const = 0;
 +virtual VkResult                      createSamplerYcbcrConversion                    (VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion) const = 0;
 +virtual void                          destroySamplerYcbcrConversion                   (VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator) 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 void                          getCommandPoolMemoryConsumption                 (VkDevice device, VkCommandPool commandPool, VkCommandBuffer commandBuffer, VkCommandPoolMemoryConsumption* pConsumption) const = 0;
++virtual VkResult                      getFaultData                                                    (VkDevice device, VkFaultQueryBehavior faultQueryBehavior, VkBool32* pUnrecordedFaults, deUint32* pFaultCount, VkFaultData* pFaults) const = 0;
 +virtual VkResult                      createSwapchainKHR                                              (VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain) const = 0;
 +virtual VkResult                      getSwapchainImagesKHR                                   (VkDevice device, VkSwapchainKHR swapchain, deUint32* pSwapchainImageCount, VkImage* pSwapchainImages) const = 0;
 +virtual VkResult                      acquireNextImageKHR                                             (VkDevice device, VkSwapchainKHR swapchain, deUint64 timeout, VkSemaphore semaphore, VkFence fence, deUint32* pImageIndex) const = 0;
 +virtual VkResult                      queuePresentKHR                                                 (VkQueue queue, const VkPresentInfoKHR* pPresentInfo) const = 0;
 +virtual VkResult                      getDeviceGroupPresentCapabilitiesKHR    (VkDevice device, VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities) const = 0;
 +virtual VkResult                      getDeviceGroupSurfacePresentModesKHR    (VkDevice device, VkSurfaceKHR surface, VkDeviceGroupPresentModeFlagsKHR* pModes) const = 0;
 +virtual VkResult                      acquireNextImage2KHR                                    (VkDevice device, const VkAcquireNextImageInfoKHR* pAcquireInfo, deUint32* pImageIndex) const = 0;
 +virtual VkResult                      createSharedSwapchainsKHR                               (VkDevice device, deUint32 swapchainCount, const VkSwapchainCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchains) const = 0;
 +virtual VkResult                      getMemoryFdKHR                                                  (VkDevice device, const VkMemoryGetFdInfoKHR* pGetFdInfo, int* pFd) const = 0;
 +virtual VkResult                      getMemoryFdPropertiesKHR                                (VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, int fd, VkMemoryFdPropertiesKHR* pMemoryFdProperties) const = 0;
 +virtual VkResult                      importSemaphoreFdKHR                                    (VkDevice device, const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo) const = 0;
 +virtual VkResult                      getSemaphoreFdKHR                                               (VkDevice device, const VkSemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd) 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                          cmdSetFragmentShadingRateKHR                    (VkCommandBuffer commandBuffer, const VkExtent2D* pFragmentSize, const VkFragmentShadingRateCombinerOpKHR combinerOps[2]) const = 0;
 +virtual void                          cmdRefreshObjectsKHR                                    (VkCommandBuffer commandBuffer, const VkRefreshObjectListKHR* pRefreshObjects) const = 0;
++virtual void                          cmdSetEvent2KHR                                                 (VkCommandBuffer commandBuffer, VkEvent event, const VkDependencyInfoKHR* pDependencyInfo) const = 0;
++virtual void                          cmdResetEvent2KHR                                               (VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags2KHR stageMask) const = 0;
++virtual void                          cmdWaitEvents2KHR                                               (VkCommandBuffer commandBuffer, deUint32 eventCount, const VkEvent* pEvents, const VkDependencyInfoKHR* pDependencyInfos) const = 0;
++virtual void                          cmdPipelineBarrier2KHR                                  (VkCommandBuffer commandBuffer, const VkDependencyInfoKHR* pDependencyInfo) const = 0;
++virtual void                          cmdWriteTimestamp2KHR                                   (VkCommandBuffer commandBuffer, VkPipelineStageFlags2KHR stage, VkQueryPool queryPool, deUint32 query) const = 0;
++virtual VkResult                      queueSubmit2KHR                                                 (VkQueue queue, deUint32 submitCount, const VkSubmitInfo2KHR* pSubmits, VkFence fence) const = 0;
++virtual void                          cmdWriteBufferMarker2AMD                                (VkCommandBuffer commandBuffer, VkPipelineStageFlags2KHR stage, VkBuffer dstBuffer, VkDeviceSize dstOffset, deUint32 marker) const = 0;
++virtual void                          getQueueCheckpointData2NV                               (VkQueue queue, deUint32* pCheckpointDataCount, VkCheckpointData2NV* pCheckpointData) const = 0;
 +virtual void                          cmdCopyBuffer2KHR                                               (VkCommandBuffer commandBuffer, const VkCopyBufferInfo2KHR* pCopyBufferInfo) const = 0;
 +virtual void                          cmdCopyImage2KHR                                                (VkCommandBuffer commandBuffer, const VkCopyImageInfo2KHR* pCopyImageInfo) const = 0;
 +virtual void                          cmdCopyBufferToImage2KHR                                (VkCommandBuffer commandBuffer, const VkCopyBufferToImageInfo2KHR* pCopyBufferToImageInfo) const = 0;
 +virtual void                          cmdCopyImageToBuffer2KHR                                (VkCommandBuffer commandBuffer, const VkCopyImageToBufferInfo2KHR* pCopyImageToBufferInfo) const = 0;
 +virtual void                          cmdBlitImage2KHR                                                (VkCommandBuffer commandBuffer, const VkBlitImageInfo2KHR* pBlitImageInfo) const = 0;
 +virtual void                          cmdResolveImage2KHR                                             (VkCommandBuffer commandBuffer, const VkResolveImageInfo2KHR* pResolveImageInfo) const = 0;
 +virtual VkResult                      displayPowerControlEXT                                  (VkDevice device, VkDisplayKHR display, const VkDisplayPowerInfoEXT* pDisplayPowerInfo) const = 0;
 +virtual VkResult                      registerDeviceEventEXT                                  (VkDevice device, const VkDeviceEventInfoEXT* pDeviceEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence) const = 0;
 +virtual VkResult                      registerDisplayEventEXT                                 (VkDevice device, VkDisplayKHR display, const VkDisplayEventInfoEXT* pDisplayEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence) const = 0;
 +virtual VkResult                      getSwapchainCounterEXT                                  (VkDevice device, VkSwapchainKHR swapchain, VkSurfaceCounterFlagBitsEXT counter, deUint64* pCounterValue) const = 0;
 +virtual void                          cmdSetDiscardRectangleEXT                               (VkCommandBuffer commandBuffer, deUint32 firstDiscardRectangle, deUint32 discardRectangleCount, const VkRect2D* pDiscardRectangles) const = 0;
 +virtual void                          setHdrMetadataEXT                                               (VkDevice device, deUint32 swapchainCount, const VkSwapchainKHR* pSwapchains, const VkHdrMetadataEXT* pMetadata) const = 0;
++virtual VkResult                      setDebugUtilsObjectNameEXT                              (VkDevice device, const VkDebugUtilsObjectNameInfoEXT* pNameInfo) const = 0;
++virtual VkResult                      setDebugUtilsObjectTagEXT                               (VkDevice device, const VkDebugUtilsObjectTagInfoEXT* pTagInfo) const = 0;
++virtual void                          queueBeginDebugUtilsLabelEXT                    (VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo) const = 0;
++virtual void                          queueEndDebugUtilsLabelEXT                              (VkQueue queue) const = 0;
++virtual void                          queueInsertDebugUtilsLabelEXT                   (VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo) const = 0;
++virtual void                          cmdBeginDebugUtilsLabelEXT                              (VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo) const = 0;
++virtual void                          cmdEndDebugUtilsLabelEXT                                (VkCommandBuffer commandBuffer) const = 0;
++virtual void                          cmdInsertDebugUtilsLabelEXT                             (VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo) const = 0;
 +virtual void                          cmdSetSampleLocationsEXT                                (VkCommandBuffer commandBuffer, const VkSampleLocationsInfoEXT* pSampleLocationsInfo) const = 0;
 +virtual VkResult                      getImageDrmFormatModifierPropertiesEXT  (VkDevice device, VkImage image, VkImageDrmFormatModifierPropertiesEXT* pProperties) const = 0;
 +virtual VkResult                      getMemoryHostPointerPropertiesEXT               (VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, const void* pHostPointer, VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties) const = 0;
 +virtual VkResult                      getCalibratedTimestampsEXT                              (VkDevice device, deUint32 timestampCount, const VkCalibratedTimestampInfoEXT* pTimestampInfos, deUint64* pTimestamps, deUint64* pMaxDeviation) const = 0;
 +virtual void                          cmdSetLineStippleEXT                                    (VkCommandBuffer commandBuffer, deUint32 lineStippleFactor, deUint16 lineStipplePattern) const = 0;
 +virtual void                          cmdSetCullModeEXT                                               (VkCommandBuffer commandBuffer, VkCullModeFlags cullMode) const = 0;
 +virtual void                          cmdSetFrontFaceEXT                                              (VkCommandBuffer commandBuffer, VkFrontFace frontFace) const = 0;
 +virtual void                          cmdSetPrimitiveTopologyEXT                              (VkCommandBuffer commandBuffer, VkPrimitiveTopology primitiveTopology) const = 0;
 +virtual void                          cmdSetViewportWithCountEXT                              (VkCommandBuffer commandBuffer, deUint32 viewportCount, const VkViewport* pViewports) const = 0;
 +virtual void                          cmdSetScissorWithCountEXT                               (VkCommandBuffer commandBuffer, deUint32 scissorCount, const VkRect2D* pScissors) const = 0;
 +virtual void                          cmdBindVertexBuffers2EXT                                (VkCommandBuffer commandBuffer, deUint32 firstBinding, deUint32 bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes, const VkDeviceSize* pStrides) const = 0;
 +virtual void                          cmdSetDepthTestEnableEXT                                (VkCommandBuffer commandBuffer, VkBool32 depthTestEnable) const = 0;
 +virtual void                          cmdSetDepthWriteEnableEXT                               (VkCommandBuffer commandBuffer, VkBool32 depthWriteEnable) const = 0;
 +virtual void                          cmdSetDepthCompareOpEXT                                 (VkCommandBuffer commandBuffer, VkCompareOp depthCompareOp) const = 0;
 +virtual void                          cmdSetDepthBoundsTestEnableEXT                  (VkCommandBuffer commandBuffer, VkBool32 depthBoundsTestEnable) const = 0;
 +virtual void                          cmdSetStencilTestEnableEXT                              (VkCommandBuffer commandBuffer, VkBool32 stencilTestEnable) const = 0;
 +virtual void                          cmdSetStencilOpEXT                                              (VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, VkStencilOp failOp, VkStencilOp passOp, VkStencilOp depthFailOp, VkCompareOp compareOp) const = 0;
++virtual void                          cmdSetVertexInputEXT                                    (VkCommandBuffer commandBuffer, deUint32 vertexBindingDescriptionCount, const VkVertexInputBindingDescription2EXT* pVertexBindingDescriptions, deUint32 vertexAttributeDescriptionCount, const VkVertexInputAttributeDescription2EXT* pVertexAttributeDescriptions) const = 0;
++virtual void                          cmdSetPatchControlPointsEXT                             (VkCommandBuffer commandBuffer, deUint32 patchControlPoints) const = 0;
++virtual void                          cmdSetRasterizerDiscardEnableEXT                (VkCommandBuffer commandBuffer, VkBool32 rasterizerDiscardEnable) const = 0;
++virtual void                          cmdSetDepthBiasEnableEXT                                (VkCommandBuffer commandBuffer, VkBool32 depthBiasEnable) const = 0;
++virtual void                          cmdSetLogicOpEXT                                                (VkCommandBuffer commandBuffer, VkLogicOp logicOp) const = 0;
++virtual void                          cmdSetPrimitiveRestartEnableEXT                 (VkCommandBuffer commandBuffer, VkBool32 primitiveRestartEnable) const = 0;
++virtual void                          cmdSetColorWriteEnableEXT                               (VkCommandBuffer commandBuffer, deUint32 attachmentCount, const VkBool32* pColorWriteEnables) const = 0;
index 39bd59e,0000000..c9ea05b
mode 100644,000000..100644
--- /dev/null
@@@ -1,52 -1,0 +1,55 @@@
- virtual void          destroyInstance                                                                 (VkInstance instance, const VkAllocationCallbacks* pAllocator) const = 0;
- virtual VkResult      enumeratePhysicalDevices                                                (VkInstance instance, deUint32* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices) const = 0;
- virtual void          getPhysicalDeviceFeatures                                               (VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures) const = 0;
- virtual void          getPhysicalDeviceFormatProperties                               (VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties) const = 0;
- virtual VkResult      getPhysicalDeviceImageFormatProperties                  (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties) const = 0;
- virtual void          getPhysicalDeviceProperties                                             (VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties) const = 0;
- virtual void          getPhysicalDeviceQueueFamilyProperties                  (VkPhysicalDevice physicalDevice, deUint32* pQueueFamilyPropertyCount, VkQueueFamilyProperties* pQueueFamilyProperties) const = 0;
- virtual void          getPhysicalDeviceMemoryProperties                               (VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties) const = 0;
- virtual VkResult      createDevice                                                                    (VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice) const = 0;
- virtual VkResult      enumerateDeviceExtensionProperties                              (VkPhysicalDevice physicalDevice, const char* pLayerName, deUint32* pPropertyCount, VkExtensionProperties* pProperties) const = 0;
- virtual VkResult      enumerateDeviceLayerProperties                                  (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkLayerProperties* pProperties) const = 0;
- virtual void          getPhysicalDeviceSparseImageFormatProperties    (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, deUint32* pPropertyCount, VkSparseImageFormatProperties* pProperties) const = 0;
- virtual VkResult      enumeratePhysicalDeviceGroups                                   (VkInstance instance, deUint32* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties) const = 0;
- virtual void          getPhysicalDeviceFeatures2                                              (VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures) const = 0;
- virtual void          getPhysicalDeviceProperties2                                    (VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties) const = 0;
- virtual void          getPhysicalDeviceFormatProperties2                              (VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties) const = 0;
- virtual VkResult      getPhysicalDeviceImageFormatProperties2                 (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties) const = 0;
- virtual void          getPhysicalDeviceQueueFamilyProperties2                 (VkPhysicalDevice physicalDevice, deUint32* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties) const = 0;
- virtual void          getPhysicalDeviceMemoryProperties2                              (VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties) const = 0;
- virtual void          getPhysicalDeviceSparseImageFormatProperties2   (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, deUint32* pPropertyCount, VkSparseImageFormatProperties2* pProperties) const = 0;
- virtual void          getPhysicalDeviceExternalBufferProperties               (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties) const = 0;
- virtual void          getPhysicalDeviceExternalFenceProperties                (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties) const = 0;
- virtual void          getPhysicalDeviceExternalSemaphoreProperties    (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties) const = 0;
- virtual void          destroySurfaceKHR                                                               (VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks* pAllocator) const = 0;
- virtual VkResult      getPhysicalDeviceSurfaceSupportKHR                              (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported) const = 0;
- virtual VkResult      getPhysicalDeviceSurfaceCapabilitiesKHR                 (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities) const = 0;
- virtual VkResult      getPhysicalDeviceSurfaceFormatsKHR                              (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats) const = 0;
- virtual VkResult      getPhysicalDeviceSurfacePresentModesKHR                 (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pPresentModeCount, VkPresentModeKHR* pPresentModes) const = 0;
- virtual VkResult      getPhysicalDevicePresentRectanglesKHR                   (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pRectCount, VkRect2D* pRects) const = 0;
- virtual VkResult      getPhysicalDeviceDisplayPropertiesKHR                   (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPropertiesKHR* pProperties) const = 0;
- virtual VkResult      getPhysicalDeviceDisplayPlanePropertiesKHR              (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties) const = 0;
- virtual VkResult      getDisplayPlaneSupportedDisplaysKHR                             (VkPhysicalDevice physicalDevice, deUint32 planeIndex, deUint32* pDisplayCount, VkDisplayKHR* pDisplays) const = 0;
- virtual VkResult      getDisplayModePropertiesKHR                                             (VkPhysicalDevice physicalDevice, VkDisplayKHR display, deUint32* pPropertyCount, VkDisplayModePropertiesKHR* pProperties) const = 0;
- virtual VkResult      createDisplayModeKHR                                                    (VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDisplayModeKHR* pMode) const = 0;
- virtual VkResult      getDisplayPlaneCapabilitiesKHR                                  (VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, deUint32 planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities) const = 0;
- virtual VkResult      createDisplayPlaneSurfaceKHR                                    (VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
- virtual VkResult      getPhysicalDeviceSurfaceCapabilities2KHR                (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkSurfaceCapabilities2KHR* pSurfaceCapabilities) const = 0;
- virtual VkResult      getPhysicalDeviceSurfaceFormats2KHR                             (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, deUint32* pSurfaceFormatCount, VkSurfaceFormat2KHR* pSurfaceFormats) const = 0;
- virtual VkResult      getPhysicalDeviceDisplayProperties2KHR                  (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayProperties2KHR* pProperties) const = 0;
- virtual VkResult      getPhysicalDeviceDisplayPlaneProperties2KHR             (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPlaneProperties2KHR* pProperties) const = 0;
- virtual VkResult      getDisplayModeProperties2KHR                                    (VkPhysicalDevice physicalDevice, VkDisplayKHR display, deUint32* pPropertyCount, VkDisplayModeProperties2KHR* pProperties) const = 0;
- virtual VkResult      getDisplayPlaneCapabilities2KHR                                 (VkPhysicalDevice physicalDevice, const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo, VkDisplayPlaneCapabilities2KHR* pCapabilities) const = 0;
- virtual VkResult      getPhysicalDeviceFragmentShadingRatesKHR                (VkPhysicalDevice physicalDevice, deUint32* pFragmentShadingRateCount, VkPhysicalDeviceFragmentShadingRateKHR* pFragmentShadingRates) const = 0;
- virtual VkResult      getPhysicalDeviceRefreshableObjectTypesKHR              (VkPhysicalDevice physicalDevice, deUint32* pRefreshableObjectCount, VkObjectType* pRefreshableObjectTypes) const = 0;
- virtual VkResult      releaseDisplayEXT                                                               (VkPhysicalDevice physicalDevice, VkDisplayKHR display) const = 0;
- virtual VkResult      getPhysicalDeviceSurfaceCapabilities2EXT                (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilities2EXT* pSurfaceCapabilities) const = 0;
- virtual void          getPhysicalDeviceMultisamplePropertiesEXT               (VkPhysicalDevice physicalDevice, VkSampleCountFlagBits samples, VkMultisamplePropertiesEXT* pMultisampleProperties) const = 0;
- virtual VkResult      getPhysicalDeviceCalibrateableTimeDomainsEXT    (VkPhysicalDevice physicalDevice, deUint32* pTimeDomainCount, VkTimeDomainEXT* pTimeDomains) const = 0;
- virtual VkResult      createHeadlessSurfaceEXT                                                (VkInstance instance, const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
 +/* WARNING: This is auto-generated file. Do not modify, since changes will
 + * be lost! Modify the generating script instead.
 + */
++virtual void          destroyInstance                                                                                                 (VkInstance instance, const VkAllocationCallbacks* pAllocator) const = 0;
++virtual VkResult      enumeratePhysicalDevices                                                                                (VkInstance instance, deUint32* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices) const = 0;
++virtual void          getPhysicalDeviceFeatures                                                                               (VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures) const = 0;
++virtual void          getPhysicalDeviceFormatProperties                                                               (VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties) const = 0;
++virtual VkResult      getPhysicalDeviceImageFormatProperties                                                  (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties) const = 0;
++virtual void          getPhysicalDeviceProperties                                                                             (VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties) const = 0;
++virtual void          getPhysicalDeviceQueueFamilyProperties                                                  (VkPhysicalDevice physicalDevice, deUint32* pQueueFamilyPropertyCount, VkQueueFamilyProperties* pQueueFamilyProperties) const = 0;
++virtual void          getPhysicalDeviceMemoryProperties                                                               (VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties) const = 0;
++virtual VkResult      createDevice                                                                                                    (VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice) const = 0;
++virtual VkResult      enumerateDeviceExtensionProperties                                                              (VkPhysicalDevice physicalDevice, const char* pLayerName, deUint32* pPropertyCount, VkExtensionProperties* pProperties) const = 0;
++virtual VkResult      enumerateDeviceLayerProperties                                                                  (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkLayerProperties* pProperties) const = 0;
++virtual VkResult      enumeratePhysicalDeviceGroups                                                                   (VkInstance instance, deUint32* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties) const = 0;
++virtual void          getPhysicalDeviceFeatures2                                                                              (VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures) const = 0;
++virtual void          getPhysicalDeviceProperties2                                                                    (VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties) const = 0;
++virtual void          getPhysicalDeviceFormatProperties2                                                              (VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties) const = 0;
++virtual VkResult      getPhysicalDeviceImageFormatProperties2                                                 (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties) const = 0;
++virtual void          getPhysicalDeviceQueueFamilyProperties2                                                 (VkPhysicalDevice physicalDevice, deUint32* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties) const = 0;
++virtual void          getPhysicalDeviceMemoryProperties2                                                              (VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties) const = 0;
++virtual void          getPhysicalDeviceExternalBufferProperties                                               (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties) const = 0;
++virtual void          getPhysicalDeviceExternalFenceProperties                                                (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties) const = 0;
++virtual void          getPhysicalDeviceExternalSemaphoreProperties                                    (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties) const = 0;
++virtual void          destroySurfaceKHR                                                                                               (VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks* pAllocator) const = 0;
++virtual VkResult      getPhysicalDeviceSurfaceSupportKHR                                                              (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported) const = 0;
++virtual VkResult      getPhysicalDeviceSurfaceCapabilitiesKHR                                                 (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities) const = 0;
++virtual VkResult      getPhysicalDeviceSurfaceFormatsKHR                                                              (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats) const = 0;
++virtual VkResult      getPhysicalDeviceSurfacePresentModesKHR                                                 (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pPresentModeCount, VkPresentModeKHR* pPresentModes) const = 0;
++virtual VkResult      getPhysicalDevicePresentRectanglesKHR                                                   (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pRectCount, VkRect2D* pRects) const = 0;
++virtual VkResult      getPhysicalDeviceDisplayPropertiesKHR                                                   (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPropertiesKHR* pProperties) const = 0;
++virtual VkResult      getPhysicalDeviceDisplayPlanePropertiesKHR                                              (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties) const = 0;
++virtual VkResult      getDisplayPlaneSupportedDisplaysKHR                                                             (VkPhysicalDevice physicalDevice, deUint32 planeIndex, deUint32* pDisplayCount, VkDisplayKHR* pDisplays) const = 0;
++virtual VkResult      getDisplayModePropertiesKHR                                                                             (VkPhysicalDevice physicalDevice, VkDisplayKHR display, deUint32* pPropertyCount, VkDisplayModePropertiesKHR* pProperties) const = 0;
++virtual VkResult      createDisplayModeKHR                                                                                    (VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDisplayModeKHR* pMode) const = 0;
++virtual VkResult      getDisplayPlaneCapabilitiesKHR                                                                  (VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, deUint32 planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities) const = 0;
++virtual VkResult      createDisplayPlaneSurfaceKHR                                                                    (VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
++virtual VkResult      enumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR   (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, deUint32* pCounterCount, VkPerformanceCounterKHR* pCounters, VkPerformanceCounterDescriptionKHR* pCounterDescriptions) const = 0;
++virtual void          getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR                   (VkPhysicalDevice physicalDevice, const VkQueryPoolPerformanceCreateInfoKHR* pPerformanceQueryCreateInfo, deUint32* pNumPasses) const = 0;
++virtual VkResult      getPhysicalDeviceSurfaceCapabilities2KHR                                                (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkSurfaceCapabilities2KHR* pSurfaceCapabilities) const = 0;
++virtual VkResult      getPhysicalDeviceSurfaceFormats2KHR                                                             (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, deUint32* pSurfaceFormatCount, VkSurfaceFormat2KHR* pSurfaceFormats) const = 0;
++virtual VkResult      getPhysicalDeviceDisplayProperties2KHR                                                  (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayProperties2KHR* pProperties) const = 0;
++virtual VkResult      getPhysicalDeviceDisplayPlaneProperties2KHR                                             (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPlaneProperties2KHR* pProperties) const = 0;
++virtual VkResult      getDisplayModeProperties2KHR                                                                    (VkPhysicalDevice physicalDevice, VkDisplayKHR display, deUint32* pPropertyCount, VkDisplayModeProperties2KHR* pProperties) const = 0;
++virtual VkResult      getDisplayPlaneCapabilities2KHR                                                                 (VkPhysicalDevice physicalDevice, const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo, VkDisplayPlaneCapabilities2KHR* pCapabilities) const = 0;
++virtual VkResult      getPhysicalDeviceFragmentShadingRatesKHR                                                (VkPhysicalDevice physicalDevice, deUint32* pFragmentShadingRateCount, VkPhysicalDeviceFragmentShadingRateKHR* pFragmentShadingRates) const = 0;
++virtual VkResult      getPhysicalDeviceRefreshableObjectTypesKHR                                              (VkPhysicalDevice physicalDevice, deUint32* pRefreshableObjectCount, VkObjectType* pRefreshableObjectTypes) const = 0;
++virtual VkResult      releaseDisplayEXT                                                                                               (VkPhysicalDevice physicalDevice, VkDisplayKHR display) const = 0;
++virtual VkResult      getPhysicalDeviceSurfaceCapabilities2EXT                                                (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilities2EXT* pSurfaceCapabilities) const = 0;
++virtual VkResult      createDebugUtilsMessengerEXT                                                                    (VkInstance instance, const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugUtilsMessengerEXT* pMessenger) const = 0;
++virtual void          destroyDebugUtilsMessengerEXT                                                                   (VkInstance instance, VkDebugUtilsMessengerEXT messenger, const VkAllocationCallbacks* pAllocator) const = 0;
++virtual void          submitDebugUtilsMessageEXT                                                                              (VkInstance instance, VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageTypes, const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData) const = 0;
++virtual void          getPhysicalDeviceMultisamplePropertiesEXT                                               (VkPhysicalDevice physicalDevice, VkSampleCountFlagBits samples, VkMultisamplePropertiesEXT* pMultisampleProperties) const = 0;
++virtual VkResult      getPhysicalDeviceCalibrateableTimeDomainsEXT                                    (VkPhysicalDevice physicalDevice, deUint32* pTimeDomainCount, VkTimeDomainEXT* pTimeDomains) const = 0;
++virtual VkResult      createHeadlessSurfaceEXT                                                                                (VkInstance instance, const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
index 19409a8,0000000..166cceb
mode 100644,000000..100644
--- /dev/null
@@@ -1,7165 -1,0 +1,7690 @@@
- #if !defined(VK_DEFINE_NON_DISPATCHABLE_HANDLE)
- #if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__) ) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__)
-         #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object;
- #else
-         #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef deUint64 object;
 +/* WARNING: This is auto-generated file. Do not modify, since changes will
 + * be lost! Modify the generating script instead.
 + */
 +#ifndef VULKAN_SC_CORE_H_
 +#define VULKAN_SC_CORE_H_ 1
 +
 +/*
 +** Copyright 2015-2021 The Khronos Group Inc.
 +**
 +** SPDX-License-Identifier: Apache-2.0
 +*/
 +
 +/*
 +** This header is generated from the Khronos Vulkan XML API Registry.
 +**
 +*/
 +
 +
 +#ifdef __cplusplus
 +extern "C" {
 +#endif
 +
 +
 +
 +#define VK_VERSION_1_0 1
 +
 +
 +#define VK_DEFINE_HANDLE(object) typedef struct object##_T* object;
 +
 +
- #define VK_MAKE_VERSION(major, minor, patch) \
-     ((((deUint32)(major)) << 22) | (((deUint32)(minor)) << 12) | ((deUint32)(patch)))
++#ifndef VK_USE_64_BIT_PTR_DEFINES
++    #if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__) ) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__)
++        #define VK_USE_64_BIT_PTR_DEFINES 1
++    #else
++        #define VK_USE_64_BIT_PTR_DEFINES 0
++    #endif
++#endif
++
++
++#ifndef VK_DEFINE_NON_DISPATCHABLE_HANDLE
++    #if (VK_USE_64_BIT_PTR_DEFINES==1)
++        #if (defined(__cplusplus) && (__cplusplus >= 201103L)) || (defined(_MSVC_LANG) && (_MSVC_LANG >= 201103L))
++            #define VK_NULL_HANDLE nullptr
++        #else
++            #define VK_NULL_HANDLE ((void*)0)
++        #endif
++    #else
++        #define VK_NULL_HANDLE 0ULL
++    #endif
 +#endif
++#ifndef VK_NULL_HANDLE
++    #define VK_NULL_HANDLE 0
 +#endif
 +
- // DEPRECATED: This define has been removed. Specific version defines (e.g. VK_API_VERSION_1_0), or the VK_MAKE_VERSION macro, should be used instead.
- //#define VK_API_VERSION VK_MAKE_VERSION(1, 0, 0) // Patch version should always be set to 0
 +
- #define VK_API_VERSION_1_0 VK_MAKE_VERSION(1, 0, 0)// Patch version should always be set to 0
++#ifndef VK_DEFINE_NON_DISPATCHABLE_HANDLE
++    #if (VK_USE_64_BIT_PTR_DEFINES==1)
++        #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object;
++    #else
++        #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef deUint64 object;
++    #endif
++#endif
++
++#define VK_MAKE_API_VERSION(variant, major, minor, patch) \
++    ((((deUint32)(variant)) << 29) | (((deUint32)(major)) << 22) | (((deUint32)(minor)) << 12) | ((deUint32)(patch)))
 +
 +// Vulkan 1.0 version number
- #define VK_HEADER_VERSION 0
- // Complete version of this file
- #define VK_HEADER_VERSION_COMPLETE VK_MAKE_VERSION(1, 2, VK_HEADER_VERSION)
++#define VK_API_VERSION_1_0 VK_MAKE_API_VERSION(0, 1, 0, 0)// Patch version should always be set to 0
 +
 +// Version of this file
- #define VK_VERSION_MAJOR(version) ((deUint32)(version) >> 22)
- #define VK_VERSION_MINOR(version) (((deUint32)(version) >> 12) & 0x3ff)
- #define VK_VERSION_PATCH(version) ((deUint32)(version) & 0xfff)
++#define VK_HEADER_VERSION 1
 +
- #define VK_NULL_HANDLE 0
++// Vulkan SC variant number
++#define VKSC_API_VARIANT 1
 +
- #define VK_FALSE                          0
- #define VK_LOD_CLAMP_NONE                 1000.0f
++// Complete version of this file
++#define VK_HEADER_VERSION_COMPLETE VK_MAKE_API_VERSION(VKSC_API_VARIANT, 1, 0, VK_HEADER_VERSION)
 +
++#define VK_API_VERSION_VARIANT(version) ((deUint32)(version) >> 29)
++#define VK_API_VERSION_MAJOR(version) (((deUint32)(version) >> 22) & 0x7FU)
++#define VK_API_VERSION_MINOR(version) (((deUint32)(version) >> 12) & 0x3FFU)
++#define VK_API_VERSION_PATCH(version) ((deUint32)(version) & 0xFFFU)
 +typedef deUint32 VkBool32;
 +typedef deUint64 VkDeviceAddress;
 +typedef deUint64 VkDeviceSize;
 +typedef deUint32 VkFlags;
 +typedef deUint32 VkSampleMask;
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBuffer)
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImage)
 +VK_DEFINE_HANDLE(VkInstance)
 +VK_DEFINE_HANDLE(VkPhysicalDevice)
 +VK_DEFINE_HANDLE(VkDevice)
 +VK_DEFINE_HANDLE(VkQueue)
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSemaphore)
 +VK_DEFINE_HANDLE(VkCommandBuffer)
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFence)
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDeviceMemory)
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkEvent)
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkQueryPool)
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBufferView)
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImageView)
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkShaderModule)
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineCache)
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineLayout)
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipeline)
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkRenderPass)
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSetLayout)
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSampler)
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSet)
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorPool)
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFramebuffer)
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCommandPool)
 +#define VK_ATTACHMENT_UNUSED              (~0U)
- #define VK_TRUE                           1
++#define VK_FALSE                          0U
++#define VK_LOD_CLAMP_NONE                 1000.0F
 +#define VK_QUEUE_FAMILY_IGNORED           (~0U)
 +#define VK_REMAINING_ARRAY_LAYERS         (~0U)
 +#define VK_REMAINING_MIP_LEVELS           (~0U)
 +#define VK_SUBPASS_EXTERNAL               (~0U)
- #define VK_MAX_MEMORY_TYPES               32
- #define VK_MAX_MEMORY_HEAPS               16
- #define VK_MAX_PHYSICAL_DEVICE_NAME_SIZE  256
- #define VK_UUID_SIZE                      16
- #define VK_MAX_EXTENSION_NAME_SIZE        256
- #define VK_MAX_DESCRIPTION_SIZE           256
++#define VK_TRUE                           1U
 +#define VK_WHOLE_SIZE                     (~0ULL)
-     VK_ERROR_INVALID_PIPELINE_CACHE_DATA = -1000349000,
-     VK_ERROR_NO_PIPELINE_MATCH = -1000349001,
++#define VK_MAX_MEMORY_TYPES               32U
++#define VK_MAX_MEMORY_HEAPS               16U
++#define VK_MAX_PHYSICAL_DEVICE_NAME_SIZE  256U
++#define VK_UUID_SIZE                      16U
++#define VK_MAX_EXTENSION_NAME_SIZE        256U
++#define VK_MAX_DESCRIPTION_SIZE           256U
 +
 +typedef enum VkResult {
 +    VK_SUCCESS = 0,
 +    VK_NOT_READY = 1,
 +    VK_TIMEOUT = 2,
 +    VK_EVENT_SET = 3,
 +    VK_EVENT_RESET = 4,
 +    VK_INCOMPLETE = 5,
 +    VK_ERROR_OUT_OF_HOST_MEMORY = -1,
 +    VK_ERROR_OUT_OF_DEVICE_MEMORY = -2,
 +    VK_ERROR_INITIALIZATION_FAILED = -3,
 +    VK_ERROR_DEVICE_LOST = -4,
 +    VK_ERROR_MEMORY_MAP_FAILED = -5,
 +    VK_ERROR_LAYER_NOT_PRESENT = -6,
 +    VK_ERROR_EXTENSION_NOT_PRESENT = -7,
 +    VK_ERROR_FEATURE_NOT_PRESENT = -8,
 +    VK_ERROR_INCOMPATIBLE_DRIVER = -9,
 +    VK_ERROR_TOO_MANY_OBJECTS = -10,
 +    VK_ERROR_FORMAT_NOT_SUPPORTED = -11,
 +    VK_ERROR_FRAGMENTED_POOL = -12,
 +    VK_ERROR_UNKNOWN = -13,
 +    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_INVALID_PIPELINE_CACHE_DATA_KHR = VK_ERROR_INVALID_PIPELINE_CACHE_DATA,
-     VK_ERROR_NO_PIPELINE_MATCH_KHR = VK_ERROR_NO_PIPELINE_MATCH,
++    VK_ERROR_INVALID_PIPELINE_CACHE_DATA = -1000298000,
++    VK_ERROR_NO_PIPELINE_MATCH = -1000298001,
 +    VK_ERROR_SURFACE_LOST_KHR = -1000000000,
 +    VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001,
 +    VK_SUBOPTIMAL_KHR = 1000001003,
 +    VK_ERROR_OUT_OF_DATE_KHR = -1000001004,
 +    VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001,
 +    VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000,
 +    VK_ERROR_NOT_PERMITTED_EXT = -1000174001,
-     VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = 1000060006,
 +    VK_RESULT_MAX_ENUM = 0x7FFFFFFF
 +} VkResult;
 +
 +typedef enum VkStructureType {
 +    VK_STRUCTURE_TYPE_APPLICATION_INFO = 0,
 +    VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1,
 +    VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2,
 +    VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3,
 +    VK_STRUCTURE_TYPE_SUBMIT_INFO = 4,
 +    VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5,
 +    VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6,
 +    VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7,
 +    VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8,
 +    VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9,
 +    VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10,
 +    VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11,
 +    VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12,
 +    VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13,
 +    VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14,
 +    VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15,
 +    VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16,
 +    VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17,
 +    VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18,
 +    VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19,
 +    VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20,
 +    VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21,
 +    VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22,
 +    VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23,
 +    VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24,
 +    VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25,
 +    VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26,
 +    VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27,
 +    VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28,
 +    VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29,
 +    VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30,
 +    VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31,
 +    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32,
 +    VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33,
 +    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34,
 +    VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35,
 +    VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36,
 +    VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37,
 +    VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38,
 +    VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39,
 +    VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40,
 +    VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41,
 +    VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42,
 +    VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43,
 +    VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44,
 +    VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45,
 +    VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46,
 +    VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47,
 +    VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000,
 +    VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = 1000157000,
 +    VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = 1000157001,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = 1000083000,
 +    VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = 1000127000,
 +    VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = 1000127001,
 +    VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = 1000060000,
 +    VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = 1000060003,
 +    VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = 1000060004,
 +    VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = 1000060005,
-     VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = 1000146002,
 +    VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = 1000060013,
 +    VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = 1000060014,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = 1000070000,
 +    VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = 1000070001,
 +    VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = 1000146000,
 +    VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = 1000146001,
-     VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = 1000146004,
 +    VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = 1000146003,
-     VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = 1000059007,
-     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = 1000059008,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = 1000059000,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = 1000059001,
 +    VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = 1000059002,
 +    VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = 1000059003,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = 1000059004,
 +    VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = 1000059005,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = 1000059006,
-     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_PROPERTIES = 1000357000,
-     VK_STRUCTURE_TYPE_DEVICE_MEMORY_RESERVATION_CREATE_INFO = 1000357001,
-     VK_STRUCTURE_TYPE_COMMAND_POOL_MEMORY_RESERVATION_CREATE_INFO = 1000357002,
-     VK_STRUCTURE_TYPE_COMMAND_POOL_MEMORY_CONSUMPTION = 1000357003,
-     VK_STRUCTURE_TYPE_PIPELINE_POOL_SIZE = 1000357004,
-     VK_STRUCTURE_TYPE_PIPELINE_POOL_ENTRY_SIZE_CREATE_INFO = 1000357005,
-     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_FEATURES = 1000357006,
-     VK_STRUCTURE_TYPE_FAULT_DATA = 1000298000,
-     VK_STRUCTURE_TYPE_FAULT_CALLBACK_INFO = 1000298001,
-     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_HANDLING_PROPERTIES = 1000298002,
-     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_IDENTIFIER_FEATURES = 1000334000,
-     VK_STRUCTURE_TYPE_PIPELINE_IDENTIFIER_INFO = 1000334001,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = 1000117000,
 +    VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = 1000117001,
 +    VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = 1000117002,
 +    VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = 1000117003,
 +    VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = 1000053000,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = 1000053001,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = 1000053002,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES = 1000120000,
 +    VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = 1000145000,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = 1000145001,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = 1000145002,
 +    VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = 1000145003,
 +    VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = 1000156000,
 +    VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = 1000156001,
 +    VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = 1000156002,
 +    VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = 1000156003,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = 1000156004,
 +    VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = 1000156005,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = 1000071000,
 +    VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = 1000071001,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = 1000071002,
 +    VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = 1000071003,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = 1000071004,
 +    VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = 1000072000,
 +    VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = 1000072001,
 +    VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = 1000072002,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = 1000112000,
 +    VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = 1000112001,
 +    VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = 1000113000,
 +    VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = 1000077000,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = 1000076000,
 +    VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = 1000076001,
 +    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_REFRESH_OBJECT_LIST_KHR = 1000299000,
++    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_FEATURES = 1000298000,
++    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_PROPERTIES = 1000298001,
++    VK_STRUCTURE_TYPE_DEVICE_OBJECT_RESERVATION_CREATE_INFO = 1000298002,
++    VK_STRUCTURE_TYPE_COMMAND_POOL_MEMORY_RESERVATION_CREATE_INFO = 1000298003,
++    VK_STRUCTURE_TYPE_COMMAND_POOL_MEMORY_CONSUMPTION = 1000298004,
++    VK_STRUCTURE_TYPE_PIPELINE_POOL_SIZE = 1000298005,
++    VK_STRUCTURE_TYPE_PIPELINE_POOL_ENTRY_SIZE_CREATE_INFO = 1000298006,
++    VK_STRUCTURE_TYPE_FAULT_DATA = 1000298007,
++    VK_STRUCTURE_TYPE_FAULT_CALLBACK_INFO = 1000298008,
++    VK_STRUCTURE_TYPE_PIPELINE_IDENTIFIER_INFO = 1000298009,
 +    VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000,
 +    VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001,
 +    VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007,
 +    VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR = 1000060008,
 +    VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR = 1000060009,
 +    VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR = 1000060010,
 +    VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR = 1000060011,
 +    VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR = 1000060012,
 +    VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 1000002000,
 +    VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = 1000002001,
 +    VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR = 1000003000,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000,
 +    VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001,
 +    VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR = 1000074000,
 +    VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR = 1000074001,
 +    VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR = 1000074002,
 +    VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR = 1000079000,
 +    VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR = 1000079001,
 +    VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000,
 +    VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT = 1000090000,
 +    VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT = 1000091000,
 +    VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT = 1000091001,
 +    VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT = 1000091002,
 +    VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT = 1000091003,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT = 1000099000,
 +    VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = 1000099001,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT = 1000101000,
 +    VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT = 1000101001,
 +    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_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = 1000111000,
 +    VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR = 1000115000,
 +    VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR = 1000115001,
++    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR = 1000116000,
++    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR = 1000116001,
++    VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR = 1000116002,
++    VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR = 1000116003,
++    VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR = 1000116004,
++    VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR = 1000116005,
++    VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR = 1000116006,
++    VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_RESERVATION_INFO_KHR = 1000116007,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = 1000119000,
 +    VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR = 1000119001,
 +    VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR = 1000119002,
 +    VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR = 1000121000,
 +    VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR = 1000121001,
 +    VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR = 1000121002,
 +    VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR = 1000121003,
 +    VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR = 1000121004,
++    VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT = 1000128000,
++    VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT = 1000128001,
++    VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT = 1000128002,
++    VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT = 1000128003,
++    VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT = 1000128004,
 +    VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT = 1000143000,
 +    VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT = 1000143001,
 +    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_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,
 +    VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT = 1000158000,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT = 1000158002,
 +    VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT = 1000158003,
 +    VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT = 1000158004,
 +    VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158005,
 +    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_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_CLOCK_FEATURES_KHR = 1000181000,
 +    VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT = 1000190000,
 +    VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT = 1000190001,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR = 1000215000,
 +    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,
 +    VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000226000,
 +    VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR = 1000226001,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR = 1000226002,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR = 1000226003,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR = 1000226004,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT = 1000234000,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = 1000237000,
++    VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000,
 +    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_HEADLESS_SURFACE_CREATE_INFO_EXT = 1000256000,
 +    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_SHADER_ATOMIC_FLOAT_FEATURES_EXT = 1000260000,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT = 1000267000,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001,
 +    VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT = 1000287000,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT = 1000287001,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT = 1000287002,
-     VK_STRUCTURE_TYPE_FAULT_DATA_KHR = VK_STRUCTURE_TYPE_FAULT_DATA,
-     VK_STRUCTURE_TYPE_FAULT_CALLBACK_INFO_KHR = VK_STRUCTURE_TYPE_FAULT_CALLBACK_INFO,
-     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_HANDLING_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_HANDLING_PROPERTIES,
-     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_IDENTIFIER_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_IDENTIFIER_FEATURES,
-     VK_STRUCTURE_TYPE_PIPELINE_IDENTIFIER_INFO_KHR = VK_STRUCTURE_TYPE_PIPELINE_IDENTIFIER_INFO,
++    VK_STRUCTURE_TYPE_REFRESH_OBJECT_LIST_KHR = 1000308000,
++    VK_STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR = 1000314000,
++    VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2_KHR = 1000314001,
++    VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2_KHR = 1000314002,
++    VK_STRUCTURE_TYPE_DEPENDENCY_INFO_KHR = 1000314003,
++    VK_STRUCTURE_TYPE_SUBMIT_INFO_2_KHR = 1000314004,
++    VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO_KHR = 1000314005,
++    VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO_KHR = 1000314006,
++    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR = 1000314007,
++    VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV = 1000314008,
++    VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV = 1000314009,
++    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT = 1000330000,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT = 1000335000,
 +    VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR = 1000337000,
 +    VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR = 1000337001,
 +    VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR = 1000337002,
 +    VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR = 1000337003,
 +    VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR = 1000337004,
 +    VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR = 1000337005,
 +    VK_STRUCTURE_TYPE_BUFFER_COPY_2_KHR = 1000337006,
 +    VK_STRUCTURE_TYPE_IMAGE_COPY_2_KHR = 1000337007,
 +    VK_STRUCTURE_TYPE_IMAGE_BLIT_2_KHR = 1000337008,
 +    VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR = 1000337009,
 +    VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR = 1000337010,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000,
++    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT = 1000352000,
++    VK_STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT = 1000352001,
++    VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT = 1000352002,
++    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT = 1000377000,
++    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT = 1000381000,
++    VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT = 1000381001,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES,
 +    VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT,
-     VK_MEMORY_HEAP_SEU_SAFE_BIT_KHR = 0x00000004,
 +    VK_STRUCTURE_TYPE_MAX_ENUM = 0x7FFFFFFF
 +} VkStructureType;
 +
 +typedef enum VkImageLayout {
 +    VK_IMAGE_LAYOUT_UNDEFINED = 0,
 +    VK_IMAGE_LAYOUT_GENERAL = 1,
 +    VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2,
 +    VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3,
 +    VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4,
 +    VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5,
 +    VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6,
 +    VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7,
 +    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_READ_ONLY_OPTIMAL_KHR = 1000314000,
++    VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR = 1000314001,
 +    VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV,
 +    VK_IMAGE_LAYOUT_MAX_ENUM = 0x7FFFFFFF
 +} VkImageLayout;
 +
 +typedef enum VkObjectType {
 +    VK_OBJECT_TYPE_UNKNOWN = 0,
 +    VK_OBJECT_TYPE_INSTANCE = 1,
 +    VK_OBJECT_TYPE_PHYSICAL_DEVICE = 2,
 +    VK_OBJECT_TYPE_DEVICE = 3,
 +    VK_OBJECT_TYPE_QUEUE = 4,
 +    VK_OBJECT_TYPE_SEMAPHORE = 5,
 +    VK_OBJECT_TYPE_COMMAND_BUFFER = 6,
 +    VK_OBJECT_TYPE_FENCE = 7,
 +    VK_OBJECT_TYPE_DEVICE_MEMORY = 8,
 +    VK_OBJECT_TYPE_BUFFER = 9,
 +    VK_OBJECT_TYPE_IMAGE = 10,
 +    VK_OBJECT_TYPE_EVENT = 11,
 +    VK_OBJECT_TYPE_QUERY_POOL = 12,
 +    VK_OBJECT_TYPE_BUFFER_VIEW = 13,
 +    VK_OBJECT_TYPE_IMAGE_VIEW = 14,
 +    VK_OBJECT_TYPE_SHADER_MODULE = 15,
 +    VK_OBJECT_TYPE_PIPELINE_CACHE = 16,
 +    VK_OBJECT_TYPE_PIPELINE_LAYOUT = 17,
 +    VK_OBJECT_TYPE_RENDER_PASS = 18,
 +    VK_OBJECT_TYPE_PIPELINE = 19,
 +    VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = 20,
 +    VK_OBJECT_TYPE_SAMPLER = 21,
 +    VK_OBJECT_TYPE_DESCRIPTOR_POOL = 22,
 +    VK_OBJECT_TYPE_DESCRIPTOR_SET = 23,
 +    VK_OBJECT_TYPE_FRAMEBUFFER = 24,
 +    VK_OBJECT_TYPE_COMMAND_POOL = 25,
 +    VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION = 1000156000,
 +    VK_OBJECT_TYPE_SURFACE_KHR = 1000000000,
 +    VK_OBJECT_TYPE_SWAPCHAIN_KHR = 1000001000,
 +    VK_OBJECT_TYPE_DISPLAY_KHR = 1000002000,
 +    VK_OBJECT_TYPE_DISPLAY_MODE_KHR = 1000002001,
++    VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT = 1000128000,
 +    VK_OBJECT_TYPE_MAX_ENUM = 0x7FFFFFFF
 +} VkObjectType;
 +
 +typedef enum VkVendorId {
 +    VK_VENDOR_ID_VIV = 0x10001,
 +    VK_VENDOR_ID_VSI = 0x10002,
 +    VK_VENDOR_ID_KAZAN = 0x10003,
 +    VK_VENDOR_ID_CODEPLAY = 0x10004,
 +    VK_VENDOR_ID_MESA = 0x10005,
 +    VK_VENDOR_ID_POCL = 0x10006,
 +    VK_VENDOR_ID_MAX_ENUM = 0x7FFFFFFF
 +} VkVendorId;
 +
 +typedef enum VkPipelineCacheHeaderVersion {
 +    VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1,
 +    VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 0x7FFFFFFF
 +} VkPipelineCacheHeaderVersion;
 +
 +typedef enum VkSystemAllocationScope {
 +    VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0,
 +    VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1,
 +    VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2,
 +    VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3,
 +    VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4,
 +    VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 0x7FFFFFFF
 +} VkSystemAllocationScope;
 +
 +typedef enum VkInternalAllocationType {
 +    VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0,
 +    VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 0x7FFFFFFF
 +} VkInternalAllocationType;
 +
 +typedef enum VkFormat {
 +    VK_FORMAT_UNDEFINED = 0,
 +    VK_FORMAT_R4G4_UNORM_PACK8 = 1,
 +    VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2,
 +    VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3,
 +    VK_FORMAT_R5G6B5_UNORM_PACK16 = 4,
 +    VK_FORMAT_B5G6R5_UNORM_PACK16 = 5,
 +    VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6,
 +    VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7,
 +    VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8,
 +    VK_FORMAT_R8_UNORM = 9,
 +    VK_FORMAT_R8_SNORM = 10,
 +    VK_FORMAT_R8_USCALED = 11,
 +    VK_FORMAT_R8_SSCALED = 12,
 +    VK_FORMAT_R8_UINT = 13,
 +    VK_FORMAT_R8_SINT = 14,
 +    VK_FORMAT_R8_SRGB = 15,
 +    VK_FORMAT_R8G8_UNORM = 16,
 +    VK_FORMAT_R8G8_SNORM = 17,
 +    VK_FORMAT_R8G8_USCALED = 18,
 +    VK_FORMAT_R8G8_SSCALED = 19,
 +    VK_FORMAT_R8G8_UINT = 20,
 +    VK_FORMAT_R8G8_SINT = 21,
 +    VK_FORMAT_R8G8_SRGB = 22,
 +    VK_FORMAT_R8G8B8_UNORM = 23,
 +    VK_FORMAT_R8G8B8_SNORM = 24,
 +    VK_FORMAT_R8G8B8_USCALED = 25,
 +    VK_FORMAT_R8G8B8_SSCALED = 26,
 +    VK_FORMAT_R8G8B8_UINT = 27,
 +    VK_FORMAT_R8G8B8_SINT = 28,
 +    VK_FORMAT_R8G8B8_SRGB = 29,
 +    VK_FORMAT_B8G8R8_UNORM = 30,
 +    VK_FORMAT_B8G8R8_SNORM = 31,
 +    VK_FORMAT_B8G8R8_USCALED = 32,
 +    VK_FORMAT_B8G8R8_SSCALED = 33,
 +    VK_FORMAT_B8G8R8_UINT = 34,
 +    VK_FORMAT_B8G8R8_SINT = 35,
 +    VK_FORMAT_B8G8R8_SRGB = 36,
 +    VK_FORMAT_R8G8B8A8_UNORM = 37,
 +    VK_FORMAT_R8G8B8A8_SNORM = 38,
 +    VK_FORMAT_R8G8B8A8_USCALED = 39,
 +    VK_FORMAT_R8G8B8A8_SSCALED = 40,
 +    VK_FORMAT_R8G8B8A8_UINT = 41,
 +    VK_FORMAT_R8G8B8A8_SINT = 42,
 +    VK_FORMAT_R8G8B8A8_SRGB = 43,
 +    VK_FORMAT_B8G8R8A8_UNORM = 44,
 +    VK_FORMAT_B8G8R8A8_SNORM = 45,
 +    VK_FORMAT_B8G8R8A8_USCALED = 46,
 +    VK_FORMAT_B8G8R8A8_SSCALED = 47,
 +    VK_FORMAT_B8G8R8A8_UINT = 48,
 +    VK_FORMAT_B8G8R8A8_SINT = 49,
 +    VK_FORMAT_B8G8R8A8_SRGB = 50,
 +    VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51,
 +    VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52,
 +    VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53,
 +    VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54,
 +    VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55,
 +    VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56,
 +    VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57,
 +    VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58,
 +    VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59,
 +    VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60,
 +    VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61,
 +    VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62,
 +    VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63,
 +    VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64,
 +    VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65,
 +    VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66,
 +    VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67,
 +    VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68,
 +    VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69,
 +    VK_FORMAT_R16_UNORM = 70,
 +    VK_FORMAT_R16_SNORM = 71,
 +    VK_FORMAT_R16_USCALED = 72,
 +    VK_FORMAT_R16_SSCALED = 73,
 +    VK_FORMAT_R16_UINT = 74,
 +    VK_FORMAT_R16_SINT = 75,
 +    VK_FORMAT_R16_SFLOAT = 76,
 +    VK_FORMAT_R16G16_UNORM = 77,
 +    VK_FORMAT_R16G16_SNORM = 78,
 +    VK_FORMAT_R16G16_USCALED = 79,
 +    VK_FORMAT_R16G16_SSCALED = 80,
 +    VK_FORMAT_R16G16_UINT = 81,
 +    VK_FORMAT_R16G16_SINT = 82,
 +    VK_FORMAT_R16G16_SFLOAT = 83,
 +    VK_FORMAT_R16G16B16_UNORM = 84,
 +    VK_FORMAT_R16G16B16_SNORM = 85,
 +    VK_FORMAT_R16G16B16_USCALED = 86,
 +    VK_FORMAT_R16G16B16_SSCALED = 87,
 +    VK_FORMAT_R16G16B16_UINT = 88,
 +    VK_FORMAT_R16G16B16_SINT = 89,
 +    VK_FORMAT_R16G16B16_SFLOAT = 90,
 +    VK_FORMAT_R16G16B16A16_UNORM = 91,
 +    VK_FORMAT_R16G16B16A16_SNORM = 92,
 +    VK_FORMAT_R16G16B16A16_USCALED = 93,
 +    VK_FORMAT_R16G16B16A16_SSCALED = 94,
 +    VK_FORMAT_R16G16B16A16_UINT = 95,
 +    VK_FORMAT_R16G16B16A16_SINT = 96,
 +    VK_FORMAT_R16G16B16A16_SFLOAT = 97,
 +    VK_FORMAT_R32_UINT = 98,
 +    VK_FORMAT_R32_SINT = 99,
 +    VK_FORMAT_R32_SFLOAT = 100,
 +    VK_FORMAT_R32G32_UINT = 101,
 +    VK_FORMAT_R32G32_SINT = 102,
 +    VK_FORMAT_R32G32_SFLOAT = 103,
 +    VK_FORMAT_R32G32B32_UINT = 104,
 +    VK_FORMAT_R32G32B32_SINT = 105,
 +    VK_FORMAT_R32G32B32_SFLOAT = 106,
 +    VK_FORMAT_R32G32B32A32_UINT = 107,
 +    VK_FORMAT_R32G32B32A32_SINT = 108,
 +    VK_FORMAT_R32G32B32A32_SFLOAT = 109,
 +    VK_FORMAT_R64_UINT = 110,
 +    VK_FORMAT_R64_SINT = 111,
 +    VK_FORMAT_R64_SFLOAT = 112,
 +    VK_FORMAT_R64G64_UINT = 113,
 +    VK_FORMAT_R64G64_SINT = 114,
 +    VK_FORMAT_R64G64_SFLOAT = 115,
 +    VK_FORMAT_R64G64B64_UINT = 116,
 +    VK_FORMAT_R64G64B64_SINT = 117,
 +    VK_FORMAT_R64G64B64_SFLOAT = 118,
 +    VK_FORMAT_R64G64B64A64_UINT = 119,
 +    VK_FORMAT_R64G64B64A64_SINT = 120,
 +    VK_FORMAT_R64G64B64A64_SFLOAT = 121,
 +    VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122,
 +    VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123,
 +    VK_FORMAT_D16_UNORM = 124,
 +    VK_FORMAT_X8_D24_UNORM_PACK32 = 125,
 +    VK_FORMAT_D32_SFLOAT = 126,
 +    VK_FORMAT_S8_UINT = 127,
 +    VK_FORMAT_D16_UNORM_S8_UINT = 128,
 +    VK_FORMAT_D24_UNORM_S8_UINT = 129,
 +    VK_FORMAT_D32_SFLOAT_S8_UINT = 130,
 +    VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131,
 +    VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132,
 +    VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133,
 +    VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134,
 +    VK_FORMAT_BC2_UNORM_BLOCK = 135,
 +    VK_FORMAT_BC2_SRGB_BLOCK = 136,
 +    VK_FORMAT_BC3_UNORM_BLOCK = 137,
 +    VK_FORMAT_BC3_SRGB_BLOCK = 138,
 +    VK_FORMAT_BC4_UNORM_BLOCK = 139,
 +    VK_FORMAT_BC4_SNORM_BLOCK = 140,
 +    VK_FORMAT_BC5_UNORM_BLOCK = 141,
 +    VK_FORMAT_BC5_SNORM_BLOCK = 142,
 +    VK_FORMAT_BC6H_UFLOAT_BLOCK = 143,
 +    VK_FORMAT_BC6H_SFLOAT_BLOCK = 144,
 +    VK_FORMAT_BC7_UNORM_BLOCK = 145,
 +    VK_FORMAT_BC7_SRGB_BLOCK = 146,
 +    VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147,
 +    VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148,
 +    VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149,
 +    VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150,
 +    VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151,
 +    VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152,
 +    VK_FORMAT_EAC_R11_UNORM_BLOCK = 153,
 +    VK_FORMAT_EAC_R11_SNORM_BLOCK = 154,
 +    VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155,
 +    VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156,
 +    VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157,
 +    VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158,
 +    VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159,
 +    VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160,
 +    VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161,
 +    VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162,
 +    VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163,
 +    VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164,
 +    VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165,
 +    VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166,
 +    VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167,
 +    VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168,
 +    VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169,
 +    VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170,
 +    VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171,
 +    VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172,
 +    VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173,
 +    VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174,
 +    VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175,
 +    VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176,
 +    VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177,
 +    VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178,
 +    VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179,
 +    VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180,
 +    VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181,
 +    VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182,
 +    VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183,
 +    VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184,
 +    VK_FORMAT_G8B8G8R8_422_UNORM = 1000156000,
 +    VK_FORMAT_B8G8R8G8_422_UNORM = 1000156001,
 +    VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM = 1000156002,
 +    VK_FORMAT_G8_B8R8_2PLANE_420_UNORM = 1000156003,
 +    VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM = 1000156004,
 +    VK_FORMAT_G8_B8R8_2PLANE_422_UNORM = 1000156005,
 +    VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM = 1000156006,
 +    VK_FORMAT_R10X6_UNORM_PACK16 = 1000156007,
 +    VK_FORMAT_R10X6G10X6_UNORM_2PACK16 = 1000156008,
 +    VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 = 1000156009,
 +    VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 = 1000156010,
 +    VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 = 1000156011,
 +    VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 = 1000156012,
 +    VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 = 1000156013,
 +    VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 = 1000156014,
 +    VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 = 1000156015,
 +    VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 = 1000156016,
 +    VK_FORMAT_R12X4_UNORM_PACK16 = 1000156017,
 +    VK_FORMAT_R12X4G12X4_UNORM_2PACK16 = 1000156018,
 +    VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 = 1000156019,
 +    VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 = 1000156020,
 +    VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 = 1000156021,
 +    VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 = 1000156022,
 +    VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 = 1000156023,
 +    VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 = 1000156024,
 +    VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 = 1000156025,
 +    VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 = 1000156026,
 +    VK_FORMAT_G16B16G16R16_422_UNORM = 1000156027,
 +    VK_FORMAT_B16G16R16G16_422_UNORM = 1000156028,
 +    VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM = 1000156029,
 +    VK_FORMAT_G16_B16R16_2PLANE_420_UNORM = 1000156030,
 +    VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM = 1000156031,
 +    VK_FORMAT_G16_B16R16_2PLANE_422_UNORM = 1000156032,
 +    VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM = 1000156033,
 +    VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000,
 +    VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001,
 +    VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002,
 +    VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = 1000066003,
 +    VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = 1000066004,
 +    VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = 1000066005,
 +    VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = 1000066006,
 +    VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = 1000066007,
 +    VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = 1000066008,
 +    VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = 1000066009,
 +    VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = 1000066010,
 +    VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = 1000066011,
 +    VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = 1000066012,
 +    VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = 1000066013,
++    VK_FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT = 1000330000,
++    VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT = 1000330001,
++    VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT = 1000330002,
++    VK_FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT = 1000330003,
 +    VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT = 1000340000,
 +    VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT = 1000340001,
 +    VK_FORMAT_MAX_ENUM = 0x7FFFFFFF
 +} VkFormat;
 +
 +typedef enum VkImageTiling {
 +    VK_IMAGE_TILING_OPTIMAL = 0,
 +    VK_IMAGE_TILING_LINEAR = 1,
 +    VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT = 1000158000,
 +    VK_IMAGE_TILING_MAX_ENUM = 0x7FFFFFFF
 +} VkImageTiling;
 +
 +typedef enum VkImageType {
 +    VK_IMAGE_TYPE_1D = 0,
 +    VK_IMAGE_TYPE_2D = 1,
 +    VK_IMAGE_TYPE_3D = 2,
 +    VK_IMAGE_TYPE_MAX_ENUM = 0x7FFFFFFF
 +} VkImageType;
 +
 +typedef enum VkPhysicalDeviceType {
 +    VK_PHYSICAL_DEVICE_TYPE_OTHER = 0,
 +    VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1,
 +    VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2,
 +    VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3,
 +    VK_PHYSICAL_DEVICE_TYPE_CPU = 4,
 +    VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 0x7FFFFFFF
 +} VkPhysicalDeviceType;
 +
 +typedef enum VkQueryType {
 +    VK_QUERY_TYPE_OCCLUSION = 0,
 +    VK_QUERY_TYPE_PIPELINE_STATISTICS = 1,
 +    VK_QUERY_TYPE_TIMESTAMP = 2,
++    VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000,
 +    VK_QUERY_TYPE_MAX_ENUM = 0x7FFFFFFF
 +} VkQueryType;
 +
 +typedef enum VkSharingMode {
 +    VK_SHARING_MODE_EXCLUSIVE = 0,
 +    VK_SHARING_MODE_CONCURRENT = 1,
 +    VK_SHARING_MODE_MAX_ENUM = 0x7FFFFFFF
 +} VkSharingMode;
 +
 +typedef enum VkComponentSwizzle {
 +    VK_COMPONENT_SWIZZLE_IDENTITY = 0,
 +    VK_COMPONENT_SWIZZLE_ZERO = 1,
 +    VK_COMPONENT_SWIZZLE_ONE = 2,
 +    VK_COMPONENT_SWIZZLE_R = 3,
 +    VK_COMPONENT_SWIZZLE_G = 4,
 +    VK_COMPONENT_SWIZZLE_B = 5,
 +    VK_COMPONENT_SWIZZLE_A = 6,
 +    VK_COMPONENT_SWIZZLE_MAX_ENUM = 0x7FFFFFFF
 +} VkComponentSwizzle;
 +
 +typedef enum VkImageViewType {
 +    VK_IMAGE_VIEW_TYPE_1D = 0,
 +    VK_IMAGE_VIEW_TYPE_2D = 1,
 +    VK_IMAGE_VIEW_TYPE_3D = 2,
 +    VK_IMAGE_VIEW_TYPE_CUBE = 3,
 +    VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4,
 +    VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5,
 +    VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6,
 +    VK_IMAGE_VIEW_TYPE_MAX_ENUM = 0x7FFFFFFF
 +} VkImageViewType;
 +
 +typedef enum VkBlendFactor {
 +    VK_BLEND_FACTOR_ZERO = 0,
 +    VK_BLEND_FACTOR_ONE = 1,
 +    VK_BLEND_FACTOR_SRC_COLOR = 2,
 +    VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3,
 +    VK_BLEND_FACTOR_DST_COLOR = 4,
 +    VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5,
 +    VK_BLEND_FACTOR_SRC_ALPHA = 6,
 +    VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7,
 +    VK_BLEND_FACTOR_DST_ALPHA = 8,
 +    VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9,
 +    VK_BLEND_FACTOR_CONSTANT_COLOR = 10,
 +    VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11,
 +    VK_BLEND_FACTOR_CONSTANT_ALPHA = 12,
 +    VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13,
 +    VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14,
 +    VK_BLEND_FACTOR_SRC1_COLOR = 15,
 +    VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16,
 +    VK_BLEND_FACTOR_SRC1_ALPHA = 17,
 +    VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18,
 +    VK_BLEND_FACTOR_MAX_ENUM = 0x7FFFFFFF
 +} VkBlendFactor;
 +
 +typedef enum VkBlendOp {
 +    VK_BLEND_OP_ADD = 0,
 +    VK_BLEND_OP_SUBTRACT = 1,
 +    VK_BLEND_OP_REVERSE_SUBTRACT = 2,
 +    VK_BLEND_OP_MIN = 3,
 +    VK_BLEND_OP_MAX = 4,
 +    VK_BLEND_OP_ZERO_EXT = 1000148000,
 +    VK_BLEND_OP_SRC_EXT = 1000148001,
 +    VK_BLEND_OP_DST_EXT = 1000148002,
 +    VK_BLEND_OP_SRC_OVER_EXT = 1000148003,
 +    VK_BLEND_OP_DST_OVER_EXT = 1000148004,
 +    VK_BLEND_OP_SRC_IN_EXT = 1000148005,
 +    VK_BLEND_OP_DST_IN_EXT = 1000148006,
 +    VK_BLEND_OP_SRC_OUT_EXT = 1000148007,
 +    VK_BLEND_OP_DST_OUT_EXT = 1000148008,
 +    VK_BLEND_OP_SRC_ATOP_EXT = 1000148009,
 +    VK_BLEND_OP_DST_ATOP_EXT = 1000148010,
 +    VK_BLEND_OP_XOR_EXT = 1000148011,
 +    VK_BLEND_OP_MULTIPLY_EXT = 1000148012,
 +    VK_BLEND_OP_SCREEN_EXT = 1000148013,
 +    VK_BLEND_OP_OVERLAY_EXT = 1000148014,
 +    VK_BLEND_OP_DARKEN_EXT = 1000148015,
 +    VK_BLEND_OP_LIGHTEN_EXT = 1000148016,
 +    VK_BLEND_OP_COLORDODGE_EXT = 1000148017,
 +    VK_BLEND_OP_COLORBURN_EXT = 1000148018,
 +    VK_BLEND_OP_HARDLIGHT_EXT = 1000148019,
 +    VK_BLEND_OP_SOFTLIGHT_EXT = 1000148020,
 +    VK_BLEND_OP_DIFFERENCE_EXT = 1000148021,
 +    VK_BLEND_OP_EXCLUSION_EXT = 1000148022,
 +    VK_BLEND_OP_INVERT_EXT = 1000148023,
 +    VK_BLEND_OP_INVERT_RGB_EXT = 1000148024,
 +    VK_BLEND_OP_LINEARDODGE_EXT = 1000148025,
 +    VK_BLEND_OP_LINEARBURN_EXT = 1000148026,
 +    VK_BLEND_OP_VIVIDLIGHT_EXT = 1000148027,
 +    VK_BLEND_OP_LINEARLIGHT_EXT = 1000148028,
 +    VK_BLEND_OP_PINLIGHT_EXT = 1000148029,
 +    VK_BLEND_OP_HARDMIX_EXT = 1000148030,
 +    VK_BLEND_OP_HSL_HUE_EXT = 1000148031,
 +    VK_BLEND_OP_HSL_SATURATION_EXT = 1000148032,
 +    VK_BLEND_OP_HSL_COLOR_EXT = 1000148033,
 +    VK_BLEND_OP_HSL_LUMINOSITY_EXT = 1000148034,
 +    VK_BLEND_OP_PLUS_EXT = 1000148035,
 +    VK_BLEND_OP_PLUS_CLAMPED_EXT = 1000148036,
 +    VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT = 1000148037,
 +    VK_BLEND_OP_PLUS_DARKER_EXT = 1000148038,
 +    VK_BLEND_OP_MINUS_EXT = 1000148039,
 +    VK_BLEND_OP_MINUS_CLAMPED_EXT = 1000148040,
 +    VK_BLEND_OP_CONTRAST_EXT = 1000148041,
 +    VK_BLEND_OP_INVERT_OVG_EXT = 1000148042,
 +    VK_BLEND_OP_RED_EXT = 1000148043,
 +    VK_BLEND_OP_GREEN_EXT = 1000148044,
 +    VK_BLEND_OP_BLUE_EXT = 1000148045,
 +    VK_BLEND_OP_MAX_ENUM = 0x7FFFFFFF
 +} VkBlendOp;
 +
 +typedef enum VkCompareOp {
 +    VK_COMPARE_OP_NEVER = 0,
 +    VK_COMPARE_OP_LESS = 1,
 +    VK_COMPARE_OP_EQUAL = 2,
 +    VK_COMPARE_OP_LESS_OR_EQUAL = 3,
 +    VK_COMPARE_OP_GREATER = 4,
 +    VK_COMPARE_OP_NOT_EQUAL = 5,
 +    VK_COMPARE_OP_GREATER_OR_EQUAL = 6,
 +    VK_COMPARE_OP_ALWAYS = 7,
 +    VK_COMPARE_OP_MAX_ENUM = 0x7FFFFFFF
 +} VkCompareOp;
 +
 +typedef enum VkDynamicState {
 +    VK_DYNAMIC_STATE_VIEWPORT = 0,
 +    VK_DYNAMIC_STATE_SCISSOR = 1,
 +    VK_DYNAMIC_STATE_LINE_WIDTH = 2,
 +    VK_DYNAMIC_STATE_DEPTH_BIAS = 3,
 +    VK_DYNAMIC_STATE_BLEND_CONSTANTS = 4,
 +    VK_DYNAMIC_STATE_DEPTH_BOUNDS = 5,
 +    VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 6,
 +    VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 7,
 +    VK_DYNAMIC_STATE_STENCIL_REFERENCE = 8,
 +    VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000,
 +    VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT = 1000143000,
 +    VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR = 1000226000,
 +    VK_DYNAMIC_STATE_LINE_STIPPLE_EXT = 1000259000,
 +    VK_DYNAMIC_STATE_CULL_MODE_EXT = 1000267000,
 +    VK_DYNAMIC_STATE_FRONT_FACE_EXT = 1000267001,
 +    VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT = 1000267002,
 +    VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT = 1000267003,
 +    VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT = 1000267004,
 +    VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT = 1000267005,
 +    VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT = 1000267006,
 +    VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT = 1000267007,
 +    VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT = 1000267008,
 +    VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT = 1000267009,
 +    VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT = 1000267010,
 +    VK_DYNAMIC_STATE_STENCIL_OP_EXT = 1000267011,
++    VK_DYNAMIC_STATE_VERTEX_INPUT_EXT = 1000352000,
++    VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT = 1000377000,
++    VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT = 1000377001,
++    VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT = 1000377002,
++    VK_DYNAMIC_STATE_LOGIC_OP_EXT = 1000377003,
++    VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT = 1000377004,
++    VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT = 1000381000,
 +    VK_DYNAMIC_STATE_MAX_ENUM = 0x7FFFFFFF
 +} VkDynamicState;
 +
 +typedef enum VkFrontFace {
 +    VK_FRONT_FACE_COUNTER_CLOCKWISE = 0,
 +    VK_FRONT_FACE_CLOCKWISE = 1,
 +    VK_FRONT_FACE_MAX_ENUM = 0x7FFFFFFF
 +} VkFrontFace;
 +
 +typedef enum VkVertexInputRate {
 +    VK_VERTEX_INPUT_RATE_VERTEX = 0,
 +    VK_VERTEX_INPUT_RATE_INSTANCE = 1,
 +    VK_VERTEX_INPUT_RATE_MAX_ENUM = 0x7FFFFFFF
 +} VkVertexInputRate;
 +
 +typedef enum VkPrimitiveTopology {
 +    VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0,
 +    VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1,
 +    VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2,
 +    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3,
 +    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4,
 +    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5,
 +    VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6,
 +    VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7,
 +    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8,
 +    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9,
 +    VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10,
 +    VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 0x7FFFFFFF
 +} VkPrimitiveTopology;
 +
 +typedef enum VkPolygonMode {
 +    VK_POLYGON_MODE_FILL = 0,
 +    VK_POLYGON_MODE_LINE = 1,
 +    VK_POLYGON_MODE_POINT = 2,
 +    VK_POLYGON_MODE_MAX_ENUM = 0x7FFFFFFF
 +} VkPolygonMode;
 +
 +typedef enum VkStencilOp {
 +    VK_STENCIL_OP_KEEP = 0,
 +    VK_STENCIL_OP_ZERO = 1,
 +    VK_STENCIL_OP_REPLACE = 2,
 +    VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3,
 +    VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4,
 +    VK_STENCIL_OP_INVERT = 5,
 +    VK_STENCIL_OP_INCREMENT_AND_WRAP = 6,
 +    VK_STENCIL_OP_DECREMENT_AND_WRAP = 7,
 +    VK_STENCIL_OP_MAX_ENUM = 0x7FFFFFFF
 +} VkStencilOp;
 +
 +typedef enum VkLogicOp {
 +    VK_LOGIC_OP_CLEAR = 0,
 +    VK_LOGIC_OP_AND = 1,
 +    VK_LOGIC_OP_AND_REVERSE = 2,
 +    VK_LOGIC_OP_COPY = 3,
 +    VK_LOGIC_OP_AND_INVERTED = 4,
 +    VK_LOGIC_OP_NO_OP = 5,
 +    VK_LOGIC_OP_XOR = 6,
 +    VK_LOGIC_OP_OR = 7,
 +    VK_LOGIC_OP_NOR = 8,
 +    VK_LOGIC_OP_EQUIVALENT = 9,
 +    VK_LOGIC_OP_INVERT = 10,
 +    VK_LOGIC_OP_OR_REVERSE = 11,
 +    VK_LOGIC_OP_COPY_INVERTED = 12,
 +    VK_LOGIC_OP_OR_INVERTED = 13,
 +    VK_LOGIC_OP_NAND = 14,
 +    VK_LOGIC_OP_SET = 15,
 +    VK_LOGIC_OP_MAX_ENUM = 0x7FFFFFFF
 +} VkLogicOp;
 +
 +typedef enum VkBorderColor {
 +    VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0,
 +    VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 1,
 +    VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 2,
 +    VK_BORDER_COLOR_INT_OPAQUE_BLACK = 3,
 +    VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 4,
 +    VK_BORDER_COLOR_INT_OPAQUE_WHITE = 5,
 +    VK_BORDER_COLOR_FLOAT_CUSTOM_EXT = 1000287003,
 +    VK_BORDER_COLOR_INT_CUSTOM_EXT = 1000287004,
 +    VK_BORDER_COLOR_MAX_ENUM = 0x7FFFFFFF
 +} VkBorderColor;
 +
 +typedef enum VkFilter {
 +    VK_FILTER_NEAREST = 0,
 +    VK_FILTER_LINEAR = 1,
 +    VK_FILTER_CUBIC_IMG = 1000015000,
 +    VK_FILTER_CUBIC_EXT = VK_FILTER_CUBIC_IMG,
 +    VK_FILTER_MAX_ENUM = 0x7FFFFFFF
 +} VkFilter;
 +
 +typedef enum VkSamplerAddressMode {
 +    VK_SAMPLER_ADDRESS_MODE_REPEAT = 0,
 +    VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 1,
 +    VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 2,
 +    VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 3,
 +    VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 4,
 +    VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 0x7FFFFFFF
 +} VkSamplerAddressMode;
 +
 +typedef enum VkSamplerMipmapMode {
 +    VK_SAMPLER_MIPMAP_MODE_NEAREST = 0,
 +    VK_SAMPLER_MIPMAP_MODE_LINEAR = 1,
 +    VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 0x7FFFFFFF
 +} VkSamplerMipmapMode;
 +
 +typedef enum VkDescriptorType {
 +    VK_DESCRIPTOR_TYPE_SAMPLER = 0,
 +    VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1,
 +    VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2,
 +    VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3,
 +    VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4,
 +    VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5,
 +    VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6,
 +    VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7,
 +    VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8,
 +    VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9,
 +    VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10,
 +    VK_DESCRIPTOR_TYPE_MAX_ENUM = 0x7FFFFFFF
 +} VkDescriptorType;
 +
 +typedef enum VkAttachmentLoadOp {
 +    VK_ATTACHMENT_LOAD_OP_LOAD = 0,
 +    VK_ATTACHMENT_LOAD_OP_CLEAR = 1,
 +    VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2,
 +    VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 0x7FFFFFFF
 +} VkAttachmentLoadOp;
 +
 +typedef enum VkAttachmentStoreOp {
 +    VK_ATTACHMENT_STORE_OP_STORE = 0,
 +    VK_ATTACHMENT_STORE_OP_DONT_CARE = 1,
 +    VK_ATTACHMENT_STORE_OP_MAX_ENUM = 0x7FFFFFFF
 +} VkAttachmentStoreOp;
 +
 +typedef enum VkPipelineBindPoint {
 +    VK_PIPELINE_BIND_POINT_GRAPHICS = 0,
 +    VK_PIPELINE_BIND_POINT_COMPUTE = 1,
 +    VK_PIPELINE_BIND_POINT_MAX_ENUM = 0x7FFFFFFF
 +} VkPipelineBindPoint;
 +
 +typedef enum VkCommandBufferLevel {
 +    VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0,
 +    VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1,
 +    VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 0x7FFFFFFF
 +} VkCommandBufferLevel;
 +
 +typedef enum VkIndexType {
 +    VK_INDEX_TYPE_UINT16 = 0,
 +    VK_INDEX_TYPE_UINT32 = 1,
 +    VK_INDEX_TYPE_UINT8_EXT = 1000265000,
 +    VK_INDEX_TYPE_MAX_ENUM = 0x7FFFFFFF
 +} VkIndexType;
 +
 +typedef enum VkSubpassContents {
 +    VK_SUBPASS_CONTENTS_INLINE = 0,
 +    VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1,
 +    VK_SUBPASS_CONTENTS_MAX_ENUM = 0x7FFFFFFF
 +} VkSubpassContents;
 +
 +typedef enum VkAccessFlagBits {
 +    VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 0x00000001,
 +    VK_ACCESS_INDEX_READ_BIT = 0x00000002,
 +    VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 0x00000004,
 +    VK_ACCESS_UNIFORM_READ_BIT = 0x00000008,
 +    VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 0x00000010,
 +    VK_ACCESS_SHADER_READ_BIT = 0x00000020,
 +    VK_ACCESS_SHADER_WRITE_BIT = 0x00000040,
 +    VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 0x00000080,
 +    VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 0x00000100,
 +    VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 0x00000200,
 +    VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 0x00000400,
 +    VK_ACCESS_TRANSFER_READ_BIT = 0x00000800,
 +    VK_ACCESS_TRANSFER_WRITE_BIT = 0x00001000,
 +    VK_ACCESS_HOST_READ_BIT = 0x00002000,
 +    VK_ACCESS_HOST_WRITE_BIT = 0x00004000,
 +    VK_ACCESS_MEMORY_READ_BIT = 0x00008000,
 +    VK_ACCESS_MEMORY_WRITE_BIT = 0x00010000,
 +    VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 0x00080000,
 +    VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = 0x00800000,
++    VK_ACCESS_NONE_KHR = 0,
 +    VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV,
 +    VK_ACCESS_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkAccessFlagBits;
 +typedef VkFlags VkAccessFlags;
 +
 +typedef enum VkImageAspectFlagBits {
 +    VK_IMAGE_ASPECT_COLOR_BIT = 0x00000001,
 +    VK_IMAGE_ASPECT_DEPTH_BIT = 0x00000002,
 +    VK_IMAGE_ASPECT_STENCIL_BIT = 0x00000004,
 +    VK_IMAGE_ASPECT_METADATA_BIT = 0x00000008,
 +    VK_IMAGE_ASPECT_PLANE_0_BIT = 0x00000010,
 +    VK_IMAGE_ASPECT_PLANE_1_BIT = 0x00000020,
 +    VK_IMAGE_ASPECT_PLANE_2_BIT = 0x00000040,
 +    VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT = 0x00000080,
 +    VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT = 0x00000100,
 +    VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT = 0x00000200,
 +    VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT = 0x00000400,
 +    VK_IMAGE_ASPECT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkImageAspectFlagBits;
 +typedef VkFlags VkImageAspectFlags;
 +
 +typedef enum VkFormatFeatureFlagBits {
 +    VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 0x00000001,
 +    VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 0x00000002,
 +    VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 0x00000004,
 +    VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000008,
 +    VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 0x00000010,
 +    VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 0x00000020,
 +    VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 0x00000040,
 +    VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 0x00000080,
 +    VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 0x00000100,
 +    VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000200,
 +    VK_FORMAT_FEATURE_BLIT_SRC_BIT = 0x00000400,
 +    VK_FORMAT_FEATURE_BLIT_DST_BIT = 0x00000800,
 +    VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 0x00001000,
 +    VK_FORMAT_FEATURE_TRANSFER_SRC_BIT = 0x00004000,
 +    VK_FORMAT_FEATURE_TRANSFER_DST_BIT = 0x00008000,
 +    VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = 0x00020000,
 +    VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 0x00040000,
 +    VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 0x00080000,
 +    VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 0x00100000,
 +    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_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x40000000,
 +    VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG,
 +    VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkFormatFeatureFlagBits;
 +typedef VkFlags VkFormatFeatureFlags;
 +
 +typedef enum VkImageCreateFlagBits {
 +    VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 0x00000001,
 +    VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002,
 +    VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = 0x00000004,
 +    VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 0x00000008,
 +    VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 0x00000010,
 +    VK_IMAGE_CREATE_ALIAS_BIT = 0x00000400,
 +    VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT = 0x00000040,
 +    VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT = 0x00000020,
 +    VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT = 0x00000080,
 +    VK_IMAGE_CREATE_EXTENDED_USAGE_BIT = 0x00000100,
 +    VK_IMAGE_CREATE_PROTECTED_BIT = 0x00000800,
 +    VK_IMAGE_CREATE_DISJOINT_BIT = 0x00000200,
 +    VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 0x00001000,
 +    VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkImageCreateFlagBits;
 +typedef VkFlags VkImageCreateFlags;
 +
 +typedef enum VkSampleCountFlagBits {
 +    VK_SAMPLE_COUNT_1_BIT = 0x00000001,
 +    VK_SAMPLE_COUNT_2_BIT = 0x00000002,
 +    VK_SAMPLE_COUNT_4_BIT = 0x00000004,
 +    VK_SAMPLE_COUNT_8_BIT = 0x00000008,
 +    VK_SAMPLE_COUNT_16_BIT = 0x00000010,
 +    VK_SAMPLE_COUNT_32_BIT = 0x00000020,
 +    VK_SAMPLE_COUNT_64_BIT = 0x00000040,
 +    VK_SAMPLE_COUNT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkSampleCountFlagBits;
 +typedef VkFlags VkSampleCountFlags;
 +
 +typedef enum VkImageUsageFlagBits {
 +    VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 0x00000001,
 +    VK_IMAGE_USAGE_TRANSFER_DST_BIT = 0x00000002,
 +    VK_IMAGE_USAGE_SAMPLED_BIT = 0x00000004,
 +    VK_IMAGE_USAGE_STORAGE_BIT = 0x00000008,
 +    VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 0x00000010,
 +    VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000020,
 +    VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 0x00000040,
 +    VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 0x00000080,
 +    VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV = 0x00000100,
 +    VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV,
 +    VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkImageUsageFlagBits;
 +typedef VkFlags VkImageUsageFlags;
 +typedef VkFlags VkInstanceCreateFlags;
 +
 +typedef enum VkMemoryHeapFlagBits {
 +    VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 0x00000001,
 +    VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 0x00000002,
- typedef enum VkSparseMemoryBindFlagBits {
-     VK_SPARSE_MEMORY_BIND_METADATA_BIT = 0x00000001,
-     VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
- } VkSparseMemoryBindFlagBits;
- typedef VkFlags VkSparseMemoryBindFlags;
- typedef enum VkSparseImageFormatFlagBits {
-     VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 0x00000001,
-     VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = 0x00000002,
-     VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 0x00000004,
-     VK_SPARSE_IMAGE_FORMAT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
- } VkSparseImageFormatFlagBits;
- typedef VkFlags VkSparseImageFormatFlags;
++    VK_MEMORY_HEAP_SEU_SAFE_BIT = 0x00000004,
 +    VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkMemoryHeapFlagBits;
 +typedef VkFlags VkMemoryHeapFlags;
 +
 +typedef enum VkMemoryPropertyFlagBits {
 +    VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 0x00000001,
 +    VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 0x00000002,
 +    VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 0x00000004,
 +    VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 0x00000008,
 +    VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 0x00000010,
 +    VK_MEMORY_PROPERTY_PROTECTED_BIT = 0x00000020,
 +    VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkMemoryPropertyFlagBits;
 +typedef VkFlags VkMemoryPropertyFlags;
 +
 +typedef enum VkQueueFlagBits {
 +    VK_QUEUE_GRAPHICS_BIT = 0x00000001,
 +    VK_QUEUE_COMPUTE_BIT = 0x00000002,
 +    VK_QUEUE_TRANSFER_BIT = 0x00000004,
 +    VK_QUEUE_SPARSE_BINDING_BIT = 0x00000008,
 +    VK_QUEUE_PROTECTED_BIT = 0x00000010,
 +    VK_QUEUE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkQueueFlagBits;
 +typedef VkFlags VkQueueFlags;
 +typedef VkFlags VkDeviceCreateFlags;
 +
 +typedef enum VkDeviceQueueCreateFlagBits {
 +    VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = 0x00000001,
 +    VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkDeviceQueueCreateFlagBits;
 +typedef VkFlags VkDeviceQueueCreateFlags;
 +
 +typedef enum VkPipelineStageFlagBits {
 +    VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 0x00000001,
 +    VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 0x00000002,
 +    VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 0x00000004,
 +    VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 0x00000008,
 +    VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 0x00000010,
 +    VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 0x00000020,
 +    VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 0x00000040,
 +    VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 0x00000080,
 +    VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 0x00000100,
 +    VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 0x00000200,
 +    VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 0x00000400,
 +    VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 0x00000800,
 +    VK_PIPELINE_STAGE_TRANSFER_BIT = 0x00001000,
 +    VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 0x00002000,
 +    VK_PIPELINE_STAGE_HOST_BIT = 0x00004000,
 +    VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 0x00008000,
 +    VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 0x00010000,
 +    VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = 0x00400000,
++    VK_PIPELINE_STAGE_NONE_KHR = 0,
 +    VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV,
 +    VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkPipelineStageFlagBits;
 +typedef VkFlags VkPipelineStageFlags;
 +typedef VkFlags VkMemoryMapFlags;
 +
-     VK_PIPELINE_CACHE_CREATE_READ_ONLY_BIT_KHR = VK_PIPELINE_CACHE_CREATE_READ_ONLY_BIT,
-     VK_PIPELINE_CACHE_CREATE_USE_APPLICATION_STORAGE_BIT_KHR = VK_PIPELINE_CACHE_CREATE_USE_APPLICATION_STORAGE_BIT,
 +typedef enum VkFenceCreateFlagBits {
 +    VK_FENCE_CREATE_SIGNALED_BIT = 0x00000001,
 +    VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkFenceCreateFlagBits;
 +typedef VkFlags VkFenceCreateFlags;
 +typedef VkFlags VkSemaphoreCreateFlags;
++
++typedef enum VkEventCreateFlagBits {
++    VK_EVENT_CREATE_DEVICE_ONLY_BIT_KHR = 0x00000001,
++    VK_EVENT_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
++} VkEventCreateFlagBits;
 +typedef VkFlags VkEventCreateFlags;
 +
 +typedef enum VkQueryPipelineStatisticFlagBits {
 +    VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 0x00000001,
 +    VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 0x00000002,
 +    VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 0x00000004,
 +    VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 0x00000008,
 +    VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 0x00000010,
 +    VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 0x00000020,
 +    VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 0x00000040,
 +    VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 0x00000080,
 +    VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 0x00000100,
 +    VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 0x00000200,
 +    VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 0x00000400,
 +    VK_QUERY_PIPELINE_STATISTIC_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkQueryPipelineStatisticFlagBits;
 +typedef VkFlags VkQueryPipelineStatisticFlags;
 +typedef VkFlags VkQueryPoolCreateFlags;
 +
 +typedef enum VkQueryResultFlagBits {
 +    VK_QUERY_RESULT_64_BIT = 0x00000001,
 +    VK_QUERY_RESULT_WAIT_BIT = 0x00000002,
 +    VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 0x00000004,
 +    VK_QUERY_RESULT_PARTIAL_BIT = 0x00000008,
 +    VK_QUERY_RESULT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkQueryResultFlagBits;
 +typedef VkFlags VkQueryResultFlags;
 +
 +typedef enum VkBufferCreateFlagBits {
 +    VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 0x00000001,
 +    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 = 0x00000010,
 +    VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkBufferCreateFlagBits;
 +typedef VkFlags VkBufferCreateFlags;
 +
 +typedef enum VkBufferUsageFlagBits {
 +    VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 0x00000001,
 +    VK_BUFFER_USAGE_TRANSFER_DST_BIT = 0x00000002,
 +    VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000004,
 +    VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 0x00000008,
 +    VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 0x00000010,
 +    VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 0x00000020,
 +    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_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkBufferUsageFlagBits;
 +typedef VkFlags VkBufferUsageFlags;
 +typedef VkFlags VkBufferViewCreateFlags;
 +
 +typedef enum VkImageViewCreateFlagBits {
 +    VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkImageViewCreateFlagBits;
 +typedef VkFlags VkImageViewCreateFlags;
 +
 +typedef enum VkPipelineCacheCreateFlagBits {
 +    VK_PIPELINE_CACHE_CREATE_USE_APPLICATION_STORAGE_BIT = 0x00000004,
 +    VK_PIPELINE_CACHE_CREATE_RESERVED_1_BIT_EXT = 0x00000002,
 +    VK_PIPELINE_CACHE_CREATE_READ_ONLY_BIT = VK_PIPELINE_CACHE_CREATE_RESERVED_1_BIT_EXT,
- typedef struct VkSparseMemoryBind {
-     VkDeviceSize               resourceOffset;
-     VkDeviceSize               size;
-     VkDeviceMemory             memory;
-     VkDeviceSize               memoryOffset;
-     VkSparseMemoryBindFlags    flags;
- } VkSparseMemoryBind;
- typedef struct VkSparseBufferMemoryBindInfo {
-     VkBuffer                     buffer;
-     deUint32                     bindCount;
-     const VkSparseMemoryBind*    pBinds;
- } VkSparseBufferMemoryBindInfo;
- typedef struct VkSparseImageOpaqueMemoryBindInfo {
-     VkImage                      image;
-     deUint32                     bindCount;
-     const VkSparseMemoryBind*    pBinds;
- } VkSparseImageOpaqueMemoryBindInfo;
 +    VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkPipelineCacheCreateFlagBits;
 +typedef VkFlags VkPipelineCacheCreateFlags;
 +
 +typedef enum VkColorComponentFlagBits {
 +    VK_COLOR_COMPONENT_R_BIT = 0x00000001,
 +    VK_COLOR_COMPONENT_G_BIT = 0x00000002,
 +    VK_COLOR_COMPONENT_B_BIT = 0x00000004,
 +    VK_COLOR_COMPONENT_A_BIT = 0x00000008,
 +    VK_COLOR_COMPONENT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkColorComponentFlagBits;
 +typedef VkFlags VkColorComponentFlags;
 +
 +typedef enum VkPipelineCreateFlagBits {
 +    VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 0x00000001,
 +    VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 0x00000002,
 +    VK_PIPELINE_CREATE_DERIVATIVE_BIT = 0x00000004,
 +    VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 0x00000008,
 +    VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 0x00000010,
 +    VK_PIPELINE_CREATE_DISPATCH_BASE = VK_PIPELINE_CREATE_DISPATCH_BASE_BIT,
 +    VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkPipelineCreateFlagBits;
 +typedef VkFlags VkPipelineCreateFlags;
 +
 +typedef enum VkPipelineShaderStageCreateFlagBits {
 +    VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 0x00000001,
 +    VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 0x00000002,
 +    VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkPipelineShaderStageCreateFlagBits;
 +typedef VkFlags VkPipelineShaderStageCreateFlags;
 +
 +typedef enum VkShaderStageFlagBits {
 +    VK_SHADER_STAGE_VERTEX_BIT = 0x00000001,
 +    VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 0x00000002,
 +    VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 0x00000004,
 +    VK_SHADER_STAGE_GEOMETRY_BIT = 0x00000008,
 +    VK_SHADER_STAGE_FRAGMENT_BIT = 0x00000010,
 +    VK_SHADER_STAGE_COMPUTE_BIT = 0x00000020,
 +    VK_SHADER_STAGE_ALL_GRAPHICS = 0x0000001F,
 +    VK_SHADER_STAGE_ALL = 0x7FFFFFFF,
 +    VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkShaderStageFlagBits;
 +
 +typedef enum VkCullModeFlagBits {
 +    VK_CULL_MODE_NONE = 0,
 +    VK_CULL_MODE_FRONT_BIT = 0x00000001,
 +    VK_CULL_MODE_BACK_BIT = 0x00000002,
 +    VK_CULL_MODE_FRONT_AND_BACK = 0x00000003,
 +    VK_CULL_MODE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkCullModeFlagBits;
 +typedef VkFlags VkCullModeFlags;
 +typedef VkFlags VkPipelineVertexInputStateCreateFlags;
 +typedef VkFlags VkPipelineInputAssemblyStateCreateFlags;
 +typedef VkFlags VkPipelineTessellationStateCreateFlags;
 +typedef VkFlags VkPipelineViewportStateCreateFlags;
 +typedef VkFlags VkPipelineRasterizationStateCreateFlags;
 +typedef VkFlags VkPipelineMultisampleStateCreateFlags;
 +typedef VkFlags VkPipelineDepthStencilStateCreateFlags;
 +typedef VkFlags VkPipelineColorBlendStateCreateFlags;
 +typedef VkFlags VkPipelineDynamicStateCreateFlags;
 +typedef VkFlags VkPipelineLayoutCreateFlags;
 +typedef VkFlags VkShaderStageFlags;
 +
 +typedef enum VkSamplerCreateFlagBits {
 +    VK_SAMPLER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkSamplerCreateFlagBits;
 +typedef VkFlags VkSamplerCreateFlags;
 +
 +typedef enum VkDescriptorPoolCreateFlagBits {
 +    VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 0x00000001,
 +    VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = 0x00000002,
 +    VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkDescriptorPoolCreateFlagBits;
 +typedef VkFlags VkDescriptorPoolCreateFlags;
 +typedef VkFlags VkDescriptorPoolResetFlags;
 +
 +typedef enum VkDescriptorSetLayoutCreateFlagBits {
 +    VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = 0x00000002,
 +    VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkDescriptorSetLayoutCreateFlagBits;
 +typedef VkFlags VkDescriptorSetLayoutCreateFlags;
 +
 +typedef enum VkAttachmentDescriptionFlagBits {
 +    VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 0x00000001,
 +    VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkAttachmentDescriptionFlagBits;
 +typedef VkFlags VkAttachmentDescriptionFlags;
 +
 +typedef enum VkDependencyFlagBits {
 +    VK_DEPENDENCY_BY_REGION_BIT = 0x00000001,
 +    VK_DEPENDENCY_DEVICE_GROUP_BIT = 0x00000004,
 +    VK_DEPENDENCY_VIEW_LOCAL_BIT = 0x00000002,
 +    VK_DEPENDENCY_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkDependencyFlagBits;
 +typedef VkFlags VkDependencyFlags;
 +
 +typedef enum VkFramebufferCreateFlagBits {
 +    VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT = 0x00000001,
 +    VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkFramebufferCreateFlagBits;
 +typedef VkFlags VkFramebufferCreateFlags;
 +
 +typedef enum VkRenderPassCreateFlagBits {
 +    VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkRenderPassCreateFlagBits;
 +typedef VkFlags VkRenderPassCreateFlags;
 +
 +typedef enum VkSubpassDescriptionFlagBits {
 +    VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkSubpassDescriptionFlagBits;
 +typedef VkFlags VkSubpassDescriptionFlags;
 +
 +typedef enum VkCommandPoolCreateFlagBits {
 +    VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 0x00000001,
 +    VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 0x00000002,
 +    VK_COMMAND_POOL_CREATE_PROTECTED_BIT = 0x00000004,
 +    VK_COMMAND_POOL_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkCommandPoolCreateFlagBits;
 +typedef VkFlags VkCommandPoolCreateFlags;
 +
 +typedef enum VkCommandPoolResetFlagBits {
 +    VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 0x00000001,
 +    VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkCommandPoolResetFlagBits;
 +typedef VkFlags VkCommandPoolResetFlags;
 +
 +typedef enum VkCommandBufferUsageFlagBits {
 +    VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 0x00000001,
 +    VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 0x00000002,
 +    VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 0x00000004,
 +    VK_COMMAND_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkCommandBufferUsageFlagBits;
 +typedef VkFlags VkCommandBufferUsageFlags;
 +
 +typedef enum VkQueryControlFlagBits {
 +    VK_QUERY_CONTROL_PRECISE_BIT = 0x00000001,
 +    VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkQueryControlFlagBits;
 +typedef VkFlags VkQueryControlFlags;
 +
 +typedef enum VkCommandBufferResetFlagBits {
 +    VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 0x00000001,
 +    VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkCommandBufferResetFlagBits;
 +typedef VkFlags VkCommandBufferResetFlags;
 +
 +typedef enum VkStencilFaceFlagBits {
 +    VK_STENCIL_FACE_FRONT_BIT = 0x00000001,
 +    VK_STENCIL_FACE_BACK_BIT = 0x00000002,
 +    VK_STENCIL_FACE_FRONT_AND_BACK = 0x00000003,
 +    VK_STENCIL_FRONT_AND_BACK = VK_STENCIL_FACE_FRONT_AND_BACK,
 +    VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkStencilFaceFlagBits;
 +typedef VkFlags VkStencilFaceFlags;
 +typedef struct VkExtent2D {
 +    deUint32    width;
 +    deUint32    height;
 +} VkExtent2D;
 +
 +typedef struct VkExtent3D {
 +    deUint32    width;
 +    deUint32    height;
 +    deUint32    depth;
 +} VkExtent3D;
 +
 +typedef struct VkOffset2D {
 +    deInt32    x;
 +    deInt32    y;
 +} VkOffset2D;
 +
 +typedef struct VkOffset3D {
 +    deInt32    x;
 +    deInt32    y;
 +    deInt32    z;
 +} VkOffset3D;
 +
 +typedef struct VkRect2D {
 +    VkOffset2D    offset;
 +    VkExtent2D    extent;
 +} VkRect2D;
 +
 +typedef struct VkBaseInStructure {
 +    VkStructureType                    sType;
 +    const struct VkBaseInStructure*    pNext;
 +} VkBaseInStructure;
 +
 +typedef struct VkBaseOutStructure {
 +    VkStructureType               sType;
 +    struct VkBaseOutStructure*    pNext;
 +} VkBaseOutStructure;
 +
 +typedef struct VkBufferMemoryBarrier {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    VkAccessFlags      srcAccessMask;
 +    VkAccessFlags      dstAccessMask;
 +    deUint32           srcQueueFamilyIndex;
 +    deUint32           dstQueueFamilyIndex;
 +    VkBuffer           buffer;
 +    VkDeviceSize       offset;
 +    VkDeviceSize       size;
 +} VkBufferMemoryBarrier;
 +
 +typedef struct VkDispatchIndirectCommand {
 +    deUint32    x;
 +    deUint32    y;
 +    deUint32    z;
 +} VkDispatchIndirectCommand;
 +
 +typedef struct VkDrawIndexedIndirectCommand {
 +    deUint32    indexCount;
 +    deUint32    instanceCount;
 +    deUint32    firstIndex;
 +    deInt32     vertexOffset;
 +    deUint32    firstInstance;
 +} VkDrawIndexedIndirectCommand;
 +
 +typedef struct VkDrawIndirectCommand {
 +    deUint32    vertexCount;
 +    deUint32    instanceCount;
 +    deUint32    firstVertex;
 +    deUint32    firstInstance;
 +} VkDrawIndirectCommand;
 +
 +typedef struct VkImageSubresourceRange {
 +    VkImageAspectFlags    aspectMask;
 +    deUint32              baseMipLevel;
 +    deUint32              levelCount;
 +    deUint32              baseArrayLayer;
 +    deUint32              layerCount;
 +} VkImageSubresourceRange;
 +
 +typedef struct VkImageMemoryBarrier {
 +    VkStructureType            sType;
 +    const void*                pNext;
 +    VkAccessFlags              srcAccessMask;
 +    VkAccessFlags              dstAccessMask;
 +    VkImageLayout              oldLayout;
 +    VkImageLayout              newLayout;
 +    deUint32                   srcQueueFamilyIndex;
 +    deUint32                   dstQueueFamilyIndex;
 +    VkImage                    image;
 +    VkImageSubresourceRange    subresourceRange;
 +} VkImageMemoryBarrier;
 +
 +typedef struct VkMemoryBarrier {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    VkAccessFlags      srcAccessMask;
 +    VkAccessFlags      dstAccessMask;
 +} VkMemoryBarrier;
 +
 +typedef void* (VKAPI_PTR *PFN_vkAllocationFunction)(
 +    void*                                       pUserData,
 +    deUintptr                                      size,
 +    deUintptr                                      alignment,
 +    VkSystemAllocationScope                     allocationScope);
 +
 +typedef void (VKAPI_PTR *PFN_vkFreeFunction)(
 +    void*                                       pUserData,
 +    void*                                       pMemory);
 +
 +typedef void (VKAPI_PTR *PFN_vkInternalAllocationNotification)(
 +    void*                                       pUserData,
 +    deUintptr                                      size,
 +    VkInternalAllocationType                    allocationType,
 +    VkSystemAllocationScope                     allocationScope);
 +
 +typedef void (VKAPI_PTR *PFN_vkInternalFreeNotification)(
 +    void*                                       pUserData,
 +    deUintptr                                      size,
 +    VkInternalAllocationType                    allocationType,
 +    VkSystemAllocationScope                     allocationScope);
 +
 +typedef void* (VKAPI_PTR *PFN_vkReallocationFunction)(
 +    void*                                       pUserData,
 +    void*                                       pOriginal,
 +    deUintptr                                      size,
 +    deUintptr                                      alignment,
 +    VkSystemAllocationScope                     allocationScope);
 +
 +typedef void (VKAPI_PTR *PFN_vkVoidFunction)(void);
 +typedef struct VkAllocationCallbacks {
 +    void*                                   pUserData;
 +    PFN_vkAllocationFunction                pfnAllocation;
 +    PFN_vkReallocationFunction              pfnReallocation;
 +    PFN_vkFreeFunction                      pfnFree;
 +    PFN_vkInternalAllocationNotification    pfnInternalAllocation;
 +    PFN_vkInternalFreeNotification          pfnInternalFree;
 +} VkAllocationCallbacks;
 +
 +typedef struct VkApplicationInfo {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    const char*        pApplicationName;
 +    deUint32           applicationVersion;
 +    const char*        pEngineName;
 +    deUint32           engineVersion;
 +    deUint32           apiVersion;
 +} VkApplicationInfo;
 +
 +typedef struct VkFormatProperties {
 +    VkFormatFeatureFlags    linearTilingFeatures;
 +    VkFormatFeatureFlags    optimalTilingFeatures;
 +    VkFormatFeatureFlags    bufferFeatures;
 +} VkFormatProperties;
 +
 +typedef struct VkImageFormatProperties {
 +    VkExtent3D            maxExtent;
 +    deUint32              maxMipLevels;
 +    deUint32              maxArrayLayers;
 +    VkSampleCountFlags    sampleCounts;
 +    VkDeviceSize          maxResourceSize;
 +} VkImageFormatProperties;
 +
 +typedef struct VkInstanceCreateInfo {
 +    VkStructureType             sType;
 +    const void*                 pNext;
 +    VkInstanceCreateFlags       flags;
 +    const VkApplicationInfo*    pApplicationInfo;
 +    deUint32                    enabledLayerCount;
 +    const char* const*          ppEnabledLayerNames;
 +    deUint32                    enabledExtensionCount;
 +    const char* const*          ppEnabledExtensionNames;
 +} VkInstanceCreateInfo;
 +
 +typedef struct VkMemoryHeap {
 +    VkDeviceSize         size;
 +    VkMemoryHeapFlags    flags;
 +} VkMemoryHeap;
 +
 +typedef struct VkMemoryType {
 +    VkMemoryPropertyFlags    propertyFlags;
 +    deUint32                 heapIndex;
 +} VkMemoryType;
 +
 +typedef struct VkPhysicalDeviceFeatures {
 +    VkBool32    robustBufferAccess;
 +    VkBool32    fullDrawIndexUint32;
 +    VkBool32    imageCubeArray;
 +    VkBool32    independentBlend;
 +    VkBool32    geometryShader;
 +    VkBool32    tessellationShader;
 +    VkBool32    sampleRateShading;
 +    VkBool32    dualSrcBlend;
 +    VkBool32    logicOp;
 +    VkBool32    multiDrawIndirect;
 +    VkBool32    drawIndirectFirstInstance;
 +    VkBool32    depthClamp;
 +    VkBool32    depthBiasClamp;
 +    VkBool32    fillModeNonSolid;
 +    VkBool32    depthBounds;
 +    VkBool32    wideLines;
 +    VkBool32    largePoints;
 +    VkBool32    alphaToOne;
 +    VkBool32    multiViewport;
 +    VkBool32    samplerAnisotropy;
 +    VkBool32    textureCompressionETC2;
 +    VkBool32    textureCompressionASTC_LDR;
 +    VkBool32    textureCompressionBC;
 +    VkBool32    occlusionQueryPrecise;
 +    VkBool32    pipelineStatisticsQuery;
 +    VkBool32    vertexPipelineStoresAndAtomics;
 +    VkBool32    fragmentStoresAndAtomics;
 +    VkBool32    shaderTessellationAndGeometryPointSize;
 +    VkBool32    shaderImageGatherExtended;
 +    VkBool32    shaderStorageImageExtendedFormats;
 +    VkBool32    shaderStorageImageMultisample;
 +    VkBool32    shaderStorageImageReadWithoutFormat;
 +    VkBool32    shaderStorageImageWriteWithoutFormat;
 +    VkBool32    shaderUniformBufferArrayDynamicIndexing;
 +    VkBool32    shaderSampledImageArrayDynamicIndexing;
 +    VkBool32    shaderStorageBufferArrayDynamicIndexing;
 +    VkBool32    shaderStorageImageArrayDynamicIndexing;
 +    VkBool32    shaderClipDistance;
 +    VkBool32    shaderCullDistance;
 +    VkBool32    shaderFloat64;
 +    VkBool32    shaderInt64;
 +    VkBool32    shaderInt16;
 +    VkBool32    shaderResourceResidency;
 +    VkBool32    shaderResourceMinLod;
 +    VkBool32    sparseBinding;
 +    VkBool32    sparseResidencyBuffer;
 +    VkBool32    sparseResidencyImage2D;
 +    VkBool32    sparseResidencyImage3D;
 +    VkBool32    sparseResidency2Samples;
 +    VkBool32    sparseResidency4Samples;
 +    VkBool32    sparseResidency8Samples;
 +    VkBool32    sparseResidency16Samples;
 +    VkBool32    sparseResidencyAliased;
 +    VkBool32    variableMultisampleRate;
 +    VkBool32    inheritedQueries;
 +} VkPhysicalDeviceFeatures;
 +
 +typedef struct VkPhysicalDeviceLimits {
 +    deUint32              maxImageDimension1D;
 +    deUint32              maxImageDimension2D;
 +    deUint32              maxImageDimension3D;
 +    deUint32              maxImageDimensionCube;
 +    deUint32              maxImageArrayLayers;
 +    deUint32              maxTexelBufferElements;
 +    deUint32              maxUniformBufferRange;
 +    deUint32              maxStorageBufferRange;
 +    deUint32              maxPushConstantsSize;
 +    deUint32              maxMemoryAllocationCount;
 +    deUint32              maxSamplerAllocationCount;
 +    VkDeviceSize          bufferImageGranularity;
 +    VkDeviceSize          sparseAddressSpaceSize;
 +    deUint32              maxBoundDescriptorSets;
 +    deUint32              maxPerStageDescriptorSamplers;
 +    deUint32              maxPerStageDescriptorUniformBuffers;
 +    deUint32              maxPerStageDescriptorStorageBuffers;
 +    deUint32              maxPerStageDescriptorSampledImages;
 +    deUint32              maxPerStageDescriptorStorageImages;
 +    deUint32              maxPerStageDescriptorInputAttachments;
 +    deUint32              maxPerStageResources;
 +    deUint32              maxDescriptorSetSamplers;
 +    deUint32              maxDescriptorSetUniformBuffers;
 +    deUint32              maxDescriptorSetUniformBuffersDynamic;
 +    deUint32              maxDescriptorSetStorageBuffers;
 +    deUint32              maxDescriptorSetStorageBuffersDynamic;
 +    deUint32              maxDescriptorSetSampledImages;
 +    deUint32              maxDescriptorSetStorageImages;
 +    deUint32              maxDescriptorSetInputAttachments;
 +    deUint32              maxVertexInputAttributes;
 +    deUint32              maxVertexInputBindings;
 +    deUint32              maxVertexInputAttributeOffset;
 +    deUint32              maxVertexInputBindingStride;
 +    deUint32              maxVertexOutputComponents;
 +    deUint32              maxTessellationGenerationLevel;
 +    deUint32              maxTessellationPatchSize;
 +    deUint32              maxTessellationControlPerVertexInputComponents;
 +    deUint32              maxTessellationControlPerVertexOutputComponents;
 +    deUint32              maxTessellationControlPerPatchOutputComponents;
 +    deUint32              maxTessellationControlTotalOutputComponents;
 +    deUint32              maxTessellationEvaluationInputComponents;
 +    deUint32              maxTessellationEvaluationOutputComponents;
 +    deUint32              maxGeometryShaderInvocations;
 +    deUint32              maxGeometryInputComponents;
 +    deUint32              maxGeometryOutputComponents;
 +    deUint32              maxGeometryOutputVertices;
 +    deUint32              maxGeometryTotalOutputComponents;
 +    deUint32              maxFragmentInputComponents;
 +    deUint32              maxFragmentOutputAttachments;
 +    deUint32              maxFragmentDualSrcAttachments;
 +    deUint32              maxFragmentCombinedOutputResources;
 +    deUint32              maxComputeSharedMemorySize;
 +    deUint32              maxComputeWorkGroupCount[3];
 +    deUint32              maxComputeWorkGroupInvocations;
 +    deUint32              maxComputeWorkGroupSize[3];
 +    deUint32              subPixelPrecisionBits;
 +    deUint32              subTexelPrecisionBits;
 +    deUint32              mipmapPrecisionBits;
 +    deUint32              maxDrawIndexedIndexValue;
 +    deUint32              maxDrawIndirectCount;
 +    float                 maxSamplerLodBias;
 +    float                 maxSamplerAnisotropy;
 +    deUint32              maxViewports;
 +    deUint32              maxViewportDimensions[2];
 +    float                 viewportBoundsRange[2];
 +    deUint32              viewportSubPixelBits;
 +    deUintptr                minMemoryMapAlignment;
 +    VkDeviceSize          minTexelBufferOffsetAlignment;
 +    VkDeviceSize          minUniformBufferOffsetAlignment;
 +    VkDeviceSize          minStorageBufferOffsetAlignment;
 +    deInt32               minTexelOffset;
 +    deUint32              maxTexelOffset;
 +    deInt32               minTexelGatherOffset;
 +    deUint32              maxTexelGatherOffset;
 +    float                 minInterpolationOffset;
 +    float                 maxInterpolationOffset;
 +    deUint32              subPixelInterpolationOffsetBits;
 +    deUint32              maxFramebufferWidth;
 +    deUint32              maxFramebufferHeight;
 +    deUint32              maxFramebufferLayers;
 +    VkSampleCountFlags    framebufferColorSampleCounts;
 +    VkSampleCountFlags    framebufferDepthSampleCounts;
 +    VkSampleCountFlags    framebufferStencilSampleCounts;
 +    VkSampleCountFlags    framebufferNoAttachmentsSampleCounts;
 +    deUint32              maxColorAttachments;
 +    VkSampleCountFlags    sampledImageColorSampleCounts;
 +    VkSampleCountFlags    sampledImageIntegerSampleCounts;
 +    VkSampleCountFlags    sampledImageDepthSampleCounts;
 +    VkSampleCountFlags    sampledImageStencilSampleCounts;
 +    VkSampleCountFlags    storageImageSampleCounts;
 +    deUint32              maxSampleMaskWords;
 +    VkBool32              timestampComputeAndGraphics;
 +    float                 timestampPeriod;
 +    deUint32              maxClipDistances;
 +    deUint32              maxCullDistances;
 +    deUint32              maxCombinedClipAndCullDistances;
 +    deUint32              discreteQueuePriorities;
 +    float                 pointSizeRange[2];
 +    float                 lineWidthRange[2];
 +    float                 pointSizeGranularity;
 +    float                 lineWidthGranularity;
 +    VkBool32              strictLines;
 +    VkBool32              standardSampleLocations;
 +    VkDeviceSize          optimalBufferCopyOffsetAlignment;
 +    VkDeviceSize          optimalBufferCopyRowPitchAlignment;
 +    VkDeviceSize          nonCoherentAtomSize;
 +} VkPhysicalDeviceLimits;
 +
 +typedef struct VkPhysicalDeviceMemoryProperties {
 +    deUint32        memoryTypeCount;
 +    VkMemoryType    memoryTypes[VK_MAX_MEMORY_TYPES];
 +    deUint32        memoryHeapCount;
 +    VkMemoryHeap    memoryHeaps[VK_MAX_MEMORY_HEAPS];
 +} VkPhysicalDeviceMemoryProperties;
 +
 +typedef struct VkPhysicalDeviceSparseProperties {
 +    VkBool32    residencyStandard2DBlockShape;
 +    VkBool32    residencyStandard2DMultisampleBlockShape;
 +    VkBool32    residencyStandard3DBlockShape;
 +    VkBool32    residencyAlignedMipSize;
 +    VkBool32    residencyNonResidentStrict;
 +} VkPhysicalDeviceSparseProperties;
 +
 +typedef struct VkPhysicalDeviceProperties {
 +    deUint32                            apiVersion;
 +    deUint32                            driverVersion;
 +    deUint32                            vendorID;
 +    deUint32                            deviceID;
 +    VkPhysicalDeviceType                deviceType;
 +    char                                deviceName[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE];
 +    deUint8                             pipelineCacheUUID[VK_UUID_SIZE];
 +    VkPhysicalDeviceLimits              limits;
 +    VkPhysicalDeviceSparseProperties    sparseProperties;
 +} VkPhysicalDeviceProperties;
 +
 +typedef struct VkQueueFamilyProperties {
 +    VkQueueFlags    queueFlags;
 +    deUint32        queueCount;
 +    deUint32        timestampValidBits;
 +    VkExtent3D      minImageTransferGranularity;
 +} VkQueueFamilyProperties;
 +
 +typedef struct VkDeviceQueueCreateInfo {
 +    VkStructureType             sType;
 +    const void*                 pNext;
 +    VkDeviceQueueCreateFlags    flags;
 +    deUint32                    queueFamilyIndex;
 +    deUint32                    queueCount;
 +    const float*                pQueuePriorities;
 +} VkDeviceQueueCreateInfo;
 +
 +typedef struct VkDeviceCreateInfo {
 +    VkStructureType                    sType;
 +    const void*                        pNext;
 +    VkDeviceCreateFlags                flags;
 +    deUint32                           queueCreateInfoCount;
 +    const VkDeviceQueueCreateInfo*     pQueueCreateInfos;
 +    deUint32                           enabledLayerCount;
 +    const char* const*                 ppEnabledLayerNames;
 +    deUint32                           enabledExtensionCount;
 +    const char* const*                 ppEnabledExtensionNames;
 +    const VkPhysicalDeviceFeatures*    pEnabledFeatures;
 +} VkDeviceCreateInfo;
 +
 +typedef struct VkExtensionProperties {
 +    char        extensionName[VK_MAX_EXTENSION_NAME_SIZE];
 +    deUint32    specVersion;
 +} VkExtensionProperties;
 +
 +typedef struct VkLayerProperties {
 +    char        layerName[VK_MAX_EXTENSION_NAME_SIZE];
 +    deUint32    specVersion;
 +    deUint32    implementationVersion;
 +    char        description[VK_MAX_DESCRIPTION_SIZE];
 +} VkLayerProperties;
 +
 +typedef struct VkSubmitInfo {
 +    VkStructureType                sType;
 +    const void*                    pNext;
 +    deUint32                       waitSemaphoreCount;
 +    const VkSemaphore*             pWaitSemaphores;
 +    const VkPipelineStageFlags*    pWaitDstStageMask;
 +    deUint32                       commandBufferCount;
 +    const VkCommandBuffer*         pCommandBuffers;
 +    deUint32                       signalSemaphoreCount;
 +    const VkSemaphore*             pSignalSemaphores;
 +} VkSubmitInfo;
 +
 +typedef struct VkMappedMemoryRange {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    VkDeviceMemory     memory;
 +    VkDeviceSize       offset;
 +    VkDeviceSize       size;
 +} VkMappedMemoryRange;
 +
 +typedef struct VkMemoryAllocateInfo {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    VkDeviceSize       allocationSize;
 +    deUint32           memoryTypeIndex;
 +} VkMemoryAllocateInfo;
 +
 +typedef struct VkMemoryRequirements {
 +    VkDeviceSize    size;
 +    VkDeviceSize    alignment;
 +    deUint32        memoryTypeBits;
 +} VkMemoryRequirements;
 +
- typedef struct VkSparseImageMemoryBind {
-     VkImageSubresource         subresource;
-     VkOffset3D                 offset;
-     VkExtent3D                 extent;
-     VkDeviceMemory             memory;
-     VkDeviceSize               memoryOffset;
-     VkSparseMemoryBindFlags    flags;
- } VkSparseImageMemoryBind;
- typedef struct VkSparseImageMemoryBindInfo {
-     VkImage                           image;
-     deUint32                          bindCount;
-     const VkSparseImageMemoryBind*    pBinds;
- } VkSparseImageMemoryBindInfo;
- typedef struct VkBindSparseInfo {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     deUint32                                    waitSemaphoreCount;
-     const VkSemaphore*                          pWaitSemaphores;
-     deUint32                                    bufferBindCount;
-     const VkSparseBufferMemoryBindInfo*         pBufferBinds;
-     deUint32                                    imageOpaqueBindCount;
-     const VkSparseImageOpaqueMemoryBindInfo*    pImageOpaqueBinds;
-     deUint32                                    imageBindCount;
-     const VkSparseImageMemoryBindInfo*          pImageBinds;
-     deUint32                                    signalSemaphoreCount;
-     const VkSemaphore*                          pSignalSemaphores;
- } VkBindSparseInfo;
- typedef struct VkSparseImageFormatProperties {
-     VkImageAspectFlags          aspectMask;
-     VkExtent3D                  imageGranularity;
-     VkSparseImageFormatFlags    flags;
- } VkSparseImageFormatProperties;
- typedef struct VkSparseImageMemoryRequirements {
-     VkSparseImageFormatProperties    formatProperties;
-     deUint32                         imageMipTailFirstLod;
-     VkDeviceSize                     imageMipTailSize;
-     VkDeviceSize                     imageMipTailOffset;
-     VkDeviceSize                     imageMipTailStride;
- } VkSparseImageMemoryRequirements;
 +typedef struct VkImageSubresource {
 +    VkImageAspectFlags    aspectMask;
 +    deUint32              mipLevel;
 +    deUint32              arrayLayer;
 +} VkImageSubresource;
 +
- typedef void (VKAPI_PTR *PFN_vkGetImageSparseMemoryRequirements)(VkDevice device, VkImage image, deUint32* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements* pSparseMemoryRequirements);
- typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceSparseImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, deUint32* pPropertyCount, VkSparseImageFormatProperties* pProperties);
- typedef VkResult (VKAPI_PTR *PFN_vkQueueBindSparse)(VkQueue queue, deUint32 bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence);
 +typedef struct VkFenceCreateInfo {
 +    VkStructureType       sType;
 +    const void*           pNext;
 +    VkFenceCreateFlags    flags;
 +} VkFenceCreateInfo;
 +
 +typedef struct VkSemaphoreCreateInfo {
 +    VkStructureType           sType;
 +    const void*               pNext;
 +    VkSemaphoreCreateFlags    flags;
 +} VkSemaphoreCreateInfo;
 +
 +typedef struct VkEventCreateInfo {
 +    VkStructureType       sType;
 +    const void*           pNext;
 +    VkEventCreateFlags    flags;
 +} VkEventCreateInfo;
 +
 +typedef struct VkQueryPoolCreateInfo {
 +    VkStructureType                  sType;
 +    const void*                      pNext;
 +    VkQueryPoolCreateFlags           flags;
 +    VkQueryType                      queryType;
 +    deUint32                         queryCount;
 +    VkQueryPipelineStatisticFlags    pipelineStatistics;
 +} VkQueryPoolCreateInfo;
 +
 +typedef struct VkBufferCreateInfo {
 +    VkStructureType        sType;
 +    const void*            pNext;
 +    VkBufferCreateFlags    flags;
 +    VkDeviceSize           size;
 +    VkBufferUsageFlags     usage;
 +    VkSharingMode          sharingMode;
 +    deUint32               queueFamilyIndexCount;
 +    const deUint32*        pQueueFamilyIndices;
 +} VkBufferCreateInfo;
 +
 +typedef struct VkBufferViewCreateInfo {
 +    VkStructureType            sType;
 +    const void*                pNext;
 +    VkBufferViewCreateFlags    flags;
 +    VkBuffer                   buffer;
 +    VkFormat                   format;
 +    VkDeviceSize               offset;
 +    VkDeviceSize               range;
 +} VkBufferViewCreateInfo;
 +
 +typedef struct VkImageCreateInfo {
 +    VkStructureType          sType;
 +    const void*              pNext;
 +    VkImageCreateFlags       flags;
 +    VkImageType              imageType;
 +    VkFormat                 format;
 +    VkExtent3D               extent;
 +    deUint32                 mipLevels;
 +    deUint32                 arrayLayers;
 +    VkSampleCountFlagBits    samples;
 +    VkImageTiling            tiling;
 +    VkImageUsageFlags        usage;
 +    VkSharingMode            sharingMode;
 +    deUint32                 queueFamilyIndexCount;
 +    const deUint32*          pQueueFamilyIndices;
 +    VkImageLayout            initialLayout;
 +} VkImageCreateInfo;
 +
 +typedef struct VkSubresourceLayout {
 +    VkDeviceSize    offset;
 +    VkDeviceSize    size;
 +    VkDeviceSize    rowPitch;
 +    VkDeviceSize    arrayPitch;
 +    VkDeviceSize    depthPitch;
 +} VkSubresourceLayout;
 +
 +typedef struct VkComponentMapping {
 +    VkComponentSwizzle    r;
 +    VkComponentSwizzle    g;
 +    VkComponentSwizzle    b;
 +    VkComponentSwizzle    a;
 +} VkComponentMapping;
 +
 +typedef struct VkImageViewCreateInfo {
 +    VkStructureType            sType;
 +    const void*                pNext;
 +    VkImageViewCreateFlags     flags;
 +    VkImage                    image;
 +    VkImageViewType            viewType;
 +    VkFormat                   format;
 +    VkComponentMapping         components;
 +    VkImageSubresourceRange    subresourceRange;
 +} VkImageViewCreateInfo;
 +
 +typedef struct VkPipelineCacheCreateInfo {
 +    VkStructureType               sType;
 +    const void*                   pNext;
 +    VkPipelineCacheCreateFlags    flags;
 +    deUintptr                        initialDataSize;
 +    const void*                   pInitialData;
 +} VkPipelineCacheCreateInfo;
 +
 +typedef struct VkSpecializationMapEntry {
 +    deUint32    constantID;
 +    deUint32    offset;
 +    deUintptr      size;
 +} VkSpecializationMapEntry;
 +
 +typedef struct VkSpecializationInfo {
 +    deUint32                           mapEntryCount;
 +    const VkSpecializationMapEntry*    pMapEntries;
 +    deUintptr                             dataSize;
 +    const void*                        pData;
 +} VkSpecializationInfo;
 +
 +typedef struct VkPipelineShaderStageCreateInfo {
 +    VkStructureType                     sType;
 +    const void*                         pNext;
 +    VkPipelineShaderStageCreateFlags    flags;
 +    VkShaderStageFlagBits               stage;
 +    VkShaderModule                      module;
 +    const char*                         pName;
 +    const VkSpecializationInfo*         pSpecializationInfo;
 +} VkPipelineShaderStageCreateInfo;
 +
 +typedef struct VkComputePipelineCreateInfo {
 +    VkStructureType                    sType;
 +    const void*                        pNext;
 +    VkPipelineCreateFlags              flags;
 +    VkPipelineShaderStageCreateInfo    stage;
 +    VkPipelineLayout                   layout;
 +    VkPipeline                         basePipelineHandle;
 +    deInt32                            basePipelineIndex;
 +} VkComputePipelineCreateInfo;
 +
 +typedef struct VkVertexInputBindingDescription {
 +    deUint32             binding;
 +    deUint32             stride;
 +    VkVertexInputRate    inputRate;
 +} VkVertexInputBindingDescription;
 +
 +typedef struct VkVertexInputAttributeDescription {
 +    deUint32    location;
 +    deUint32    binding;
 +    VkFormat    format;
 +    deUint32    offset;
 +} VkVertexInputAttributeDescription;
 +
 +typedef struct VkPipelineVertexInputStateCreateInfo {
 +    VkStructureType                             sType;
 +    const void*                                 pNext;
 +    VkPipelineVertexInputStateCreateFlags       flags;
 +    deUint32                                    vertexBindingDescriptionCount;
 +    const VkVertexInputBindingDescription*      pVertexBindingDescriptions;
 +    deUint32                                    vertexAttributeDescriptionCount;
 +    const VkVertexInputAttributeDescription*    pVertexAttributeDescriptions;
 +} VkPipelineVertexInputStateCreateInfo;
 +
 +typedef struct VkPipelineInputAssemblyStateCreateInfo {
 +    VkStructureType                            sType;
 +    const void*                                pNext;
 +    VkPipelineInputAssemblyStateCreateFlags    flags;
 +    VkPrimitiveTopology                        topology;
 +    VkBool32                                   primitiveRestartEnable;
 +} VkPipelineInputAssemblyStateCreateInfo;
 +
 +typedef struct VkPipelineTessellationStateCreateInfo {
 +    VkStructureType                           sType;
 +    const void*                               pNext;
 +    VkPipelineTessellationStateCreateFlags    flags;
 +    deUint32                                  patchControlPoints;
 +} VkPipelineTessellationStateCreateInfo;
 +
 +typedef struct VkViewport {
 +    float    x;
 +    float    y;
 +    float    width;
 +    float    height;
 +    float    minDepth;
 +    float    maxDepth;
 +} VkViewport;
 +
 +typedef struct VkPipelineViewportStateCreateInfo {
 +    VkStructureType                       sType;
 +    const void*                           pNext;
 +    VkPipelineViewportStateCreateFlags    flags;
 +    deUint32                              viewportCount;
 +    const VkViewport*                     pViewports;
 +    deUint32                              scissorCount;
 +    const VkRect2D*                       pScissors;
 +} VkPipelineViewportStateCreateInfo;
 +
 +typedef struct VkPipelineRasterizationStateCreateInfo {
 +    VkStructureType                            sType;
 +    const void*                                pNext;
 +    VkPipelineRasterizationStateCreateFlags    flags;
 +    VkBool32                                   depthClampEnable;
 +    VkBool32                                   rasterizerDiscardEnable;
 +    VkPolygonMode                              polygonMode;
 +    VkCullModeFlags                            cullMode;
 +    VkFrontFace                                frontFace;
 +    VkBool32                                   depthBiasEnable;
 +    float                                      depthBiasConstantFactor;
 +    float                                      depthBiasClamp;
 +    float                                      depthBiasSlopeFactor;
 +    float                                      lineWidth;
 +} VkPipelineRasterizationStateCreateInfo;
 +
 +typedef struct VkPipelineMultisampleStateCreateInfo {
 +    VkStructureType                          sType;
 +    const void*                              pNext;
 +    VkPipelineMultisampleStateCreateFlags    flags;
 +    VkSampleCountFlagBits                    rasterizationSamples;
 +    VkBool32                                 sampleShadingEnable;
 +    float                                    minSampleShading;
 +    const VkSampleMask*                      pSampleMask;
 +    VkBool32                                 alphaToCoverageEnable;
 +    VkBool32                                 alphaToOneEnable;
 +} VkPipelineMultisampleStateCreateInfo;
 +
 +typedef struct VkStencilOpState {
 +    VkStencilOp    failOp;
 +    VkStencilOp    passOp;
 +    VkStencilOp    depthFailOp;
 +    VkCompareOp    compareOp;
 +    deUint32       compareMask;
 +    deUint32       writeMask;
 +    deUint32       reference;
 +} VkStencilOpState;
 +
 +typedef struct VkPipelineDepthStencilStateCreateInfo {
 +    VkStructureType                           sType;
 +    const void*                               pNext;
 +    VkPipelineDepthStencilStateCreateFlags    flags;
 +    VkBool32                                  depthTestEnable;
 +    VkBool32                                  depthWriteEnable;
 +    VkCompareOp                               depthCompareOp;
 +    VkBool32                                  depthBoundsTestEnable;
 +    VkBool32                                  stencilTestEnable;
 +    VkStencilOpState                          front;
 +    VkStencilOpState                          back;
 +    float                                     minDepthBounds;
 +    float                                     maxDepthBounds;
 +} VkPipelineDepthStencilStateCreateInfo;
 +
 +typedef struct VkPipelineColorBlendAttachmentState {
 +    VkBool32                 blendEnable;
 +    VkBlendFactor            srcColorBlendFactor;
 +    VkBlendFactor            dstColorBlendFactor;
 +    VkBlendOp                colorBlendOp;
 +    VkBlendFactor            srcAlphaBlendFactor;
 +    VkBlendFactor            dstAlphaBlendFactor;
 +    VkBlendOp                alphaBlendOp;
 +    VkColorComponentFlags    colorWriteMask;
 +} VkPipelineColorBlendAttachmentState;
 +
 +typedef struct VkPipelineColorBlendStateCreateInfo {
 +    VkStructureType                               sType;
 +    const void*                                   pNext;
 +    VkPipelineColorBlendStateCreateFlags          flags;
 +    VkBool32                                      logicOpEnable;
 +    VkLogicOp                                     logicOp;
 +    deUint32                                      attachmentCount;
 +    const VkPipelineColorBlendAttachmentState*    pAttachments;
 +    float                                         blendConstants[4];
 +} VkPipelineColorBlendStateCreateInfo;
 +
 +typedef struct VkPipelineDynamicStateCreateInfo {
 +    VkStructureType                      sType;
 +    const void*                          pNext;
 +    VkPipelineDynamicStateCreateFlags    flags;
 +    deUint32                             dynamicStateCount;
 +    const VkDynamicState*                pDynamicStates;
 +} VkPipelineDynamicStateCreateInfo;
 +
 +typedef struct VkGraphicsPipelineCreateInfo {
 +    VkStructureType                                  sType;
 +    const void*                                      pNext;
 +    VkPipelineCreateFlags                            flags;
 +    deUint32                                         stageCount;
 +    const VkPipelineShaderStageCreateInfo*           pStages;
 +    const VkPipelineVertexInputStateCreateInfo*      pVertexInputState;
 +    const VkPipelineInputAssemblyStateCreateInfo*    pInputAssemblyState;
 +    const VkPipelineTessellationStateCreateInfo*     pTessellationState;
 +    const VkPipelineViewportStateCreateInfo*         pViewportState;
 +    const VkPipelineRasterizationStateCreateInfo*    pRasterizationState;
 +    const VkPipelineMultisampleStateCreateInfo*      pMultisampleState;
 +    const VkPipelineDepthStencilStateCreateInfo*     pDepthStencilState;
 +    const VkPipelineColorBlendStateCreateInfo*       pColorBlendState;
 +    const VkPipelineDynamicStateCreateInfo*          pDynamicState;
 +    VkPipelineLayout                                 layout;
 +    VkRenderPass                                     renderPass;
 +    deUint32                                         subpass;
 +    VkPipeline                                       basePipelineHandle;
 +    deInt32                                          basePipelineIndex;
 +} VkGraphicsPipelineCreateInfo;
 +
 +typedef struct VkPushConstantRange {
 +    VkShaderStageFlags    stageFlags;
 +    deUint32              offset;
 +    deUint32              size;
 +} VkPushConstantRange;
 +
 +typedef struct VkPipelineLayoutCreateInfo {
 +    VkStructureType                 sType;
 +    const void*                     pNext;
 +    VkPipelineLayoutCreateFlags     flags;
 +    deUint32                        setLayoutCount;
 +    const VkDescriptorSetLayout*    pSetLayouts;
 +    deUint32                        pushConstantRangeCount;
 +    const VkPushConstantRange*      pPushConstantRanges;
 +} VkPipelineLayoutCreateInfo;
 +
 +typedef struct VkSamplerCreateInfo {
 +    VkStructureType         sType;
 +    const void*             pNext;
 +    VkSamplerCreateFlags    flags;
 +    VkFilter                magFilter;
 +    VkFilter                minFilter;
 +    VkSamplerMipmapMode     mipmapMode;
 +    VkSamplerAddressMode    addressModeU;
 +    VkSamplerAddressMode    addressModeV;
 +    VkSamplerAddressMode    addressModeW;
 +    float                   mipLodBias;
 +    VkBool32                anisotropyEnable;
 +    float                   maxAnisotropy;
 +    VkBool32                compareEnable;
 +    VkCompareOp             compareOp;
 +    float                   minLod;
 +    float                   maxLod;
 +    VkBorderColor           borderColor;
 +    VkBool32                unnormalizedCoordinates;
 +} VkSamplerCreateInfo;
 +
 +typedef struct VkCopyDescriptorSet {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    VkDescriptorSet    srcSet;
 +    deUint32           srcBinding;
 +    deUint32           srcArrayElement;
 +    VkDescriptorSet    dstSet;
 +    deUint32           dstBinding;
 +    deUint32           dstArrayElement;
 +    deUint32           descriptorCount;
 +} VkCopyDescriptorSet;
 +
 +typedef struct VkDescriptorBufferInfo {
 +    VkBuffer        buffer;
 +    VkDeviceSize    offset;
 +    VkDeviceSize    range;
 +} VkDescriptorBufferInfo;
 +
 +typedef struct VkDescriptorImageInfo {
 +    VkSampler        sampler;
 +    VkImageView      imageView;
 +    VkImageLayout    imageLayout;
 +} VkDescriptorImageInfo;
 +
 +typedef struct VkDescriptorPoolSize {
 +    VkDescriptorType    type;
 +    deUint32            descriptorCount;
 +} VkDescriptorPoolSize;
 +
 +typedef struct VkDescriptorPoolCreateInfo {
 +    VkStructureType                sType;
 +    const void*                    pNext;
 +    VkDescriptorPoolCreateFlags    flags;
 +    deUint32                       maxSets;
 +    deUint32                       poolSizeCount;
 +    const VkDescriptorPoolSize*    pPoolSizes;
 +} VkDescriptorPoolCreateInfo;
 +
 +typedef struct VkDescriptorSetAllocateInfo {
 +    VkStructureType                 sType;
 +    const void*                     pNext;
 +    VkDescriptorPool                descriptorPool;
 +    deUint32                        descriptorSetCount;
 +    const VkDescriptorSetLayout*    pSetLayouts;
 +} VkDescriptorSetAllocateInfo;
 +
 +typedef struct VkDescriptorSetLayoutBinding {
 +    deUint32              binding;
 +    VkDescriptorType      descriptorType;
 +    deUint32              descriptorCount;
 +    VkShaderStageFlags    stageFlags;
 +    const VkSampler*      pImmutableSamplers;
 +} VkDescriptorSetLayoutBinding;
 +
 +typedef struct VkDescriptorSetLayoutCreateInfo {
 +    VkStructureType                        sType;
 +    const void*                            pNext;
 +    VkDescriptorSetLayoutCreateFlags       flags;
 +    deUint32                               bindingCount;
 +    const VkDescriptorSetLayoutBinding*    pBindings;
 +} VkDescriptorSetLayoutCreateInfo;
 +
 +typedef struct VkWriteDescriptorSet {
 +    VkStructureType                  sType;
 +    const void*                      pNext;
 +    VkDescriptorSet                  dstSet;
 +    deUint32                         dstBinding;
 +    deUint32                         dstArrayElement;
 +    deUint32                         descriptorCount;
 +    VkDescriptorType                 descriptorType;
 +    const VkDescriptorImageInfo*     pImageInfo;
 +    const VkDescriptorBufferInfo*    pBufferInfo;
 +    const VkBufferView*              pTexelBufferView;
 +} VkWriteDescriptorSet;
 +
 +typedef struct VkAttachmentDescription {
 +    VkAttachmentDescriptionFlags    flags;
 +    VkFormat                        format;
 +    VkSampleCountFlagBits           samples;
 +    VkAttachmentLoadOp              loadOp;
 +    VkAttachmentStoreOp             storeOp;
 +    VkAttachmentLoadOp              stencilLoadOp;
 +    VkAttachmentStoreOp             stencilStoreOp;
 +    VkImageLayout                   initialLayout;
 +    VkImageLayout                   finalLayout;
 +} VkAttachmentDescription;
 +
 +typedef struct VkAttachmentReference {
 +    deUint32         attachment;
 +    VkImageLayout    layout;
 +} VkAttachmentReference;
 +
 +typedef struct VkFramebufferCreateInfo {
 +    VkStructureType             sType;
 +    const void*                 pNext;
 +    VkFramebufferCreateFlags    flags;
 +    VkRenderPass                renderPass;
 +    deUint32                    attachmentCount;
 +    const VkImageView*          pAttachments;
 +    deUint32                    width;
 +    deUint32                    height;
 +    deUint32                    layers;
 +} VkFramebufferCreateInfo;
 +
 +typedef struct VkSubpassDescription {
 +    VkSubpassDescriptionFlags       flags;
 +    VkPipelineBindPoint             pipelineBindPoint;
 +    deUint32                        inputAttachmentCount;
 +    const VkAttachmentReference*    pInputAttachments;
 +    deUint32                        colorAttachmentCount;
 +    const VkAttachmentReference*    pColorAttachments;
 +    const VkAttachmentReference*    pResolveAttachments;
 +    const VkAttachmentReference*    pDepthStencilAttachment;
 +    deUint32                        preserveAttachmentCount;
 +    const deUint32*                 pPreserveAttachments;
 +} VkSubpassDescription;
 +
 +typedef struct VkSubpassDependency {
 +    deUint32                srcSubpass;
 +    deUint32                dstSubpass;
 +    VkPipelineStageFlags    srcStageMask;
 +    VkPipelineStageFlags    dstStageMask;
 +    VkAccessFlags           srcAccessMask;
 +    VkAccessFlags           dstAccessMask;
 +    VkDependencyFlags       dependencyFlags;
 +} VkSubpassDependency;
 +
 +typedef struct VkRenderPassCreateInfo {
 +    VkStructureType                   sType;
 +    const void*                       pNext;
 +    VkRenderPassCreateFlags           flags;
 +    deUint32                          attachmentCount;
 +    const VkAttachmentDescription*    pAttachments;
 +    deUint32                          subpassCount;
 +    const VkSubpassDescription*       pSubpasses;
 +    deUint32                          dependencyCount;
 +    const VkSubpassDependency*        pDependencies;
 +} VkRenderPassCreateInfo;
 +
 +typedef struct VkCommandPoolCreateInfo {
 +    VkStructureType             sType;
 +    const void*                 pNext;
 +    VkCommandPoolCreateFlags    flags;
 +    deUint32                    queueFamilyIndex;
 +} VkCommandPoolCreateInfo;
 +
 +typedef struct VkCommandBufferAllocateInfo {
 +    VkStructureType         sType;
 +    const void*             pNext;
 +    VkCommandPool           commandPool;
 +    VkCommandBufferLevel    level;
 +    deUint32                commandBufferCount;
 +} VkCommandBufferAllocateInfo;
 +
 +typedef struct VkCommandBufferInheritanceInfo {
 +    VkStructureType                  sType;
 +    const void*                      pNext;
 +    VkRenderPass                     renderPass;
 +    deUint32                         subpass;
 +    VkFramebuffer                    framebuffer;
 +    VkBool32                         occlusionQueryEnable;
 +    VkQueryControlFlags              queryFlags;
 +    VkQueryPipelineStatisticFlags    pipelineStatistics;
 +} VkCommandBufferInheritanceInfo;
 +
 +typedef struct VkCommandBufferBeginInfo {
 +    VkStructureType                          sType;
 +    const void*                              pNext;
 +    VkCommandBufferUsageFlags                flags;
 +    const VkCommandBufferInheritanceInfo*    pInheritanceInfo;
 +} VkCommandBufferBeginInfo;
 +
 +typedef struct VkBufferCopy {
 +    VkDeviceSize    srcOffset;
 +    VkDeviceSize    dstOffset;
 +    VkDeviceSize    size;
 +} VkBufferCopy;
 +
 +typedef struct VkImageSubresourceLayers {
 +    VkImageAspectFlags    aspectMask;
 +    deUint32              mipLevel;
 +    deUint32              baseArrayLayer;
 +    deUint32              layerCount;
 +} VkImageSubresourceLayers;
 +
 +typedef struct VkBufferImageCopy {
 +    VkDeviceSize                bufferOffset;
 +    deUint32                    bufferRowLength;
 +    deUint32                    bufferImageHeight;
 +    VkImageSubresourceLayers    imageSubresource;
 +    VkOffset3D                  imageOffset;
 +    VkExtent3D                  imageExtent;
 +} VkBufferImageCopy;
 +
 +typedef union VkClearColorValue {
 +    float       float32[4];
 +    deInt32     int32[4];
 +    deUint32    uint32[4];
 +} VkClearColorValue;
 +
 +typedef struct VkClearDepthStencilValue {
 +    float       depth;
 +    deUint32    stencil;
 +} VkClearDepthStencilValue;
 +
 +typedef union VkClearValue {
 +    VkClearColorValue           color;
 +    VkClearDepthStencilValue    depthStencil;
 +} VkClearValue;
 +
 +typedef struct VkClearAttachment {
 +    VkImageAspectFlags    aspectMask;
 +    deUint32              colorAttachment;
 +    VkClearValue          clearValue;
 +} VkClearAttachment;
 +
 +typedef struct VkClearRect {
 +    VkRect2D    rect;
 +    deUint32    baseArrayLayer;
 +    deUint32    layerCount;
 +} VkClearRect;
 +
 +typedef struct VkImageBlit {
 +    VkImageSubresourceLayers    srcSubresource;
 +    VkOffset3D                  srcOffsets[2];
 +    VkImageSubresourceLayers    dstSubresource;
 +    VkOffset3D                  dstOffsets[2];
 +} VkImageBlit;
 +
 +typedef struct VkImageCopy {
 +    VkImageSubresourceLayers    srcSubresource;
 +    VkOffset3D                  srcOffset;
 +    VkImageSubresourceLayers    dstSubresource;
 +    VkOffset3D                  dstOffset;
 +    VkExtent3D                  extent;
 +} VkImageCopy;
 +
 +typedef struct VkImageResolve {
 +    VkImageSubresourceLayers    srcSubresource;
 +    VkOffset3D                  srcOffset;
 +    VkImageSubresourceLayers    dstSubresource;
 +    VkOffset3D                  dstOffset;
 +    VkExtent3D                  extent;
 +} VkImageResolve;
 +
 +typedef struct VkRenderPassBeginInfo {
 +    VkStructureType        sType;
 +    const void*            pNext;
 +    VkRenderPass           renderPass;
 +    VkFramebuffer          framebuffer;
 +    VkRect2D               renderArea;
 +    deUint32               clearValueCount;
 +    const VkClearValue*    pClearValues;
 +} VkRenderPassBeginInfo;
 +
 +typedef VkResult (VKAPI_PTR *PFN_vkCreateInstance)(const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkInstance* pInstance);
 +typedef void (VKAPI_PTR *PFN_vkDestroyInstance)(VkInstance instance, const VkAllocationCallbacks* pAllocator);
 +typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDevices)(VkInstance instance, deUint32* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices);
 +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFeatures)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures);
 +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties);
 +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties);
 +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties);
 +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyProperties)(VkPhysicalDevice physicalDevice, deUint32* pQueueFamilyPropertyCount, VkQueueFamilyProperties* pQueueFamilyProperties);
 +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMemoryProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties);
 +typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_vkGetInstanceProcAddr)(VkInstance instance, const char* pName);
 +typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_vkGetDeviceProcAddr)(VkDevice device, const char* pName);
 +typedef VkResult (VKAPI_PTR *PFN_vkCreateDevice)(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice);
 +typedef void (VKAPI_PTR *PFN_vkDestroyDevice)(VkDevice device, const VkAllocationCallbacks* pAllocator);
 +typedef VkResult (VKAPI_PTR *PFN_vkEnumerateInstanceExtensionProperties)(const char* pLayerName, deUint32* pPropertyCount, VkExtensionProperties* pProperties);
 +typedef VkResult (VKAPI_PTR *PFN_vkEnumerateDeviceExtensionProperties)(VkPhysicalDevice physicalDevice, const char* pLayerName, deUint32* pPropertyCount, VkExtensionProperties* pProperties);
 +typedef VkResult (VKAPI_PTR *PFN_vkEnumerateInstanceLayerProperties)(deUint32* pPropertyCount, VkLayerProperties* pProperties);
 +typedef VkResult (VKAPI_PTR *PFN_vkEnumerateDeviceLayerProperties)(VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkLayerProperties* pProperties);
 +typedef void (VKAPI_PTR *PFN_vkGetDeviceQueue)(VkDevice device, deUint32 queueFamilyIndex, deUint32 queueIndex, VkQueue* pQueue);
 +typedef VkResult (VKAPI_PTR *PFN_vkQueueSubmit)(VkQueue queue, deUint32 submitCount, const VkSubmitInfo* pSubmits, VkFence fence);
 +typedef VkResult (VKAPI_PTR *PFN_vkQueueWaitIdle)(VkQueue queue);
 +typedef VkResult (VKAPI_PTR *PFN_vkDeviceWaitIdle)(VkDevice device);
 +typedef VkResult (VKAPI_PTR *PFN_vkAllocateMemory)(VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory);
 +typedef VkResult (VKAPI_PTR *PFN_vkMapMemory)(VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData);
 +typedef void (VKAPI_PTR *PFN_vkUnmapMemory)(VkDevice device, VkDeviceMemory memory);
 +typedef VkResult (VKAPI_PTR *PFN_vkFlushMappedMemoryRanges)(VkDevice device, deUint32 memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges);
 +typedef VkResult (VKAPI_PTR *PFN_vkInvalidateMappedMemoryRanges)(VkDevice device, deUint32 memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges);
 +typedef void (VKAPI_PTR *PFN_vkGetDeviceMemoryCommitment)(VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes);
 +typedef VkResult (VKAPI_PTR *PFN_vkBindBufferMemory)(VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset);
 +typedef VkResult (VKAPI_PTR *PFN_vkBindImageMemory)(VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset);
 +typedef void (VKAPI_PTR *PFN_vkGetBufferMemoryRequirements)(VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements);
 +typedef void (VKAPI_PTR *PFN_vkGetImageMemoryRequirements)(VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements);
- VKAPI_ATTR void VKAPI_CALL vkGetImageSparseMemoryRequirements(
-     VkDevice                                    device,
-     VkImage                                     image,
-     deUint32*                                   pSparseMemoryRequirementCount,
-     VkSparseImageMemoryRequirements*            pSparseMemoryRequirements);
- VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties(
-     VkPhysicalDevice                            physicalDevice,
-     VkFormat                                    format,
-     VkImageType                                 type,
-     VkSampleCountFlagBits                       samples,
-     VkImageUsageFlags                           usage,
-     VkImageTiling                               tiling,
-     deUint32*                                   pPropertyCount,
-     VkSparseImageFormatProperties*              pProperties);
- VKAPI_ATTR VkResult VKAPI_CALL vkQueueBindSparse(
-     VkQueue                                     queue,
-     deUint32                                    bindInfoCount,
-     const VkBindSparseInfo*                     pBindInfo,
-     VkFence                                     fence);
 +typedef VkResult (VKAPI_PTR *PFN_vkCreateFence)(VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);
 +typedef void (VKAPI_PTR *PFN_vkDestroyFence)(VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator);
 +typedef VkResult (VKAPI_PTR *PFN_vkResetFences)(VkDevice device, deUint32 fenceCount, const VkFence* pFences);
 +typedef VkResult (VKAPI_PTR *PFN_vkGetFenceStatus)(VkDevice device, VkFence fence);
 +typedef VkResult (VKAPI_PTR *PFN_vkWaitForFences)(VkDevice device, deUint32 fenceCount, const VkFence* pFences, VkBool32 waitAll, deUint64 timeout);
 +typedef VkResult (VKAPI_PTR *PFN_vkCreateSemaphore)(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore);
 +typedef void (VKAPI_PTR *PFN_vkDestroySemaphore)(VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator);
 +typedef VkResult (VKAPI_PTR *PFN_vkCreateEvent)(VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkEvent* pEvent);
 +typedef void (VKAPI_PTR *PFN_vkDestroyEvent)(VkDevice device, VkEvent event, const VkAllocationCallbacks* pAllocator);
 +typedef VkResult (VKAPI_PTR *PFN_vkGetEventStatus)(VkDevice device, VkEvent event);
 +typedef VkResult (VKAPI_PTR *PFN_vkSetEvent)(VkDevice device, VkEvent event);
 +typedef VkResult (VKAPI_PTR *PFN_vkResetEvent)(VkDevice device, VkEvent event);
 +typedef VkResult (VKAPI_PTR *PFN_vkCreateQueryPool)(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkQueryPool* pQueryPool);
 +typedef VkResult (VKAPI_PTR *PFN_vkGetQueryPoolResults)(VkDevice device, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount, deUintptr dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags);
 +typedef VkResult (VKAPI_PTR *PFN_vkCreateBuffer)(VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer);
 +typedef void (VKAPI_PTR *PFN_vkDestroyBuffer)(VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator);
 +typedef VkResult (VKAPI_PTR *PFN_vkCreateBufferView)(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView);
 +typedef void (VKAPI_PTR *PFN_vkDestroyBufferView)(VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* pAllocator);
 +typedef VkResult (VKAPI_PTR *PFN_vkCreateImage)(VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImage* pImage);
 +typedef void (VKAPI_PTR *PFN_vkDestroyImage)(VkDevice device, VkImage image, const VkAllocationCallbacks* pAllocator);
 +typedef void (VKAPI_PTR *PFN_vkGetImageSubresourceLayout)(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout);
 +typedef VkResult (VKAPI_PTR *PFN_vkCreateImageView)(VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImageView* pView);
 +typedef void (VKAPI_PTR *PFN_vkDestroyImageView)(VkDevice device, VkImageView imageView, const VkAllocationCallbacks* pAllocator);
 +typedef VkResult (VKAPI_PTR *PFN_vkCreatePipelineCache)(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache);
 +typedef void (VKAPI_PTR *PFN_vkDestroyPipelineCache)(VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator);
 +typedef VkResult (VKAPI_PTR *PFN_vkCreateGraphicsPipelines)(VkDevice device, VkPipelineCache pipelineCache, deUint32 createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
 +typedef VkResult (VKAPI_PTR *PFN_vkCreateComputePipelines)(VkDevice device, VkPipelineCache pipelineCache, deUint32 createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
 +typedef void (VKAPI_PTR *PFN_vkDestroyPipeline)(VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator);
 +typedef VkResult (VKAPI_PTR *PFN_vkCreatePipelineLayout)(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout);
 +typedef void (VKAPI_PTR *PFN_vkDestroyPipelineLayout)(VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* pAllocator);
 +typedef VkResult (VKAPI_PTR *PFN_vkCreateSampler)(VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler);
 +typedef void (VKAPI_PTR *PFN_vkDestroySampler)(VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator);
 +typedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorSetLayout)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout);
 +typedef void (VKAPI_PTR *PFN_vkDestroyDescriptorSetLayout)(VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* pAllocator);
 +typedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorPool)(VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool);
 +typedef VkResult (VKAPI_PTR *PFN_vkResetDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags);
 +typedef VkResult (VKAPI_PTR *PFN_vkAllocateDescriptorSets)(VkDevice device, const VkDescriptorSetAllocateInfo* pAllocateInfo, VkDescriptorSet* pDescriptorSets);
 +typedef VkResult (VKAPI_PTR *PFN_vkFreeDescriptorSets)(VkDevice device, VkDescriptorPool descriptorPool, deUint32 descriptorSetCount, const VkDescriptorSet* pDescriptorSets);
 +typedef void (VKAPI_PTR *PFN_vkUpdateDescriptorSets)(VkDevice device, deUint32 descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites, deUint32 descriptorCopyCount, const VkCopyDescriptorSet* pDescriptorCopies);
 +typedef VkResult (VKAPI_PTR *PFN_vkCreateFramebuffer)(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFramebuffer* pFramebuffer);
 +typedef void (VKAPI_PTR *PFN_vkDestroyFramebuffer)(VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator);
 +typedef VkResult (VKAPI_PTR *PFN_vkCreateRenderPass)(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
 +typedef void (VKAPI_PTR *PFN_vkDestroyRenderPass)(VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator);
 +typedef void (VKAPI_PTR *PFN_vkGetRenderAreaGranularity)(VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity);
 +typedef VkResult (VKAPI_PTR *PFN_vkCreateCommandPool)(VkDevice device, const VkCommandPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCommandPool* pCommandPool);
 +typedef VkResult (VKAPI_PTR *PFN_vkResetCommandPool)(VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags);
 +typedef VkResult (VKAPI_PTR *PFN_vkAllocateCommandBuffers)(VkDevice device, const VkCommandBufferAllocateInfo* pAllocateInfo, VkCommandBuffer* pCommandBuffers);
 +typedef void (VKAPI_PTR *PFN_vkFreeCommandBuffers)(VkDevice device, VkCommandPool commandPool, deUint32 commandBufferCount, const VkCommandBuffer* pCommandBuffers);
 +typedef VkResult (VKAPI_PTR *PFN_vkBeginCommandBuffer)(VkCommandBuffer commandBuffer, const VkCommandBufferBeginInfo* pBeginInfo);
 +typedef VkResult (VKAPI_PTR *PFN_vkEndCommandBuffer)(VkCommandBuffer commandBuffer);
 +typedef VkResult (VKAPI_PTR *PFN_vkResetCommandBuffer)(VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags);
 +typedef void (VKAPI_PTR *PFN_vkCmdBindPipeline)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline);
 +typedef void (VKAPI_PTR *PFN_vkCmdSetViewport)(VkCommandBuffer commandBuffer, deUint32 firstViewport, deUint32 viewportCount, const VkViewport* pViewports);
 +typedef void (VKAPI_PTR *PFN_vkCmdSetScissor)(VkCommandBuffer commandBuffer, deUint32 firstScissor, deUint32 scissorCount, const VkRect2D* pScissors);
 +typedef void (VKAPI_PTR *PFN_vkCmdSetLineWidth)(VkCommandBuffer commandBuffer, float lineWidth);
 +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBias)(VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor);
 +typedef void (VKAPI_PTR *PFN_vkCmdSetBlendConstants)(VkCommandBuffer commandBuffer, const float blendConstants[4]);
 +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBounds)(VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds);
 +typedef void (VKAPI_PTR *PFN_vkCmdSetStencilCompareMask)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, deUint32 compareMask);
 +typedef void (VKAPI_PTR *PFN_vkCmdSetStencilWriteMask)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, deUint32 writeMask);
 +typedef void (VKAPI_PTR *PFN_vkCmdSetStencilReference)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, deUint32 reference);
 +typedef void (VKAPI_PTR *PFN_vkCmdBindDescriptorSets)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, deUint32 firstSet, deUint32 descriptorSetCount, const VkDescriptorSet* pDescriptorSets, deUint32 dynamicOffsetCount, const deUint32* pDynamicOffsets);
 +typedef void (VKAPI_PTR *PFN_vkCmdBindIndexBuffer)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType);
 +typedef void (VKAPI_PTR *PFN_vkCmdBindVertexBuffers)(VkCommandBuffer commandBuffer, deUint32 firstBinding, deUint32 bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets);
 +typedef void (VKAPI_PTR *PFN_vkCmdDraw)(VkCommandBuffer commandBuffer, deUint32 vertexCount, deUint32 instanceCount, deUint32 firstVertex, deUint32 firstInstance);
 +typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexed)(VkCommandBuffer commandBuffer, deUint32 indexCount, deUint32 instanceCount, deUint32 firstIndex, deInt32 vertexOffset, deUint32 firstInstance);
 +typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, deUint32 drawCount, deUint32 stride);
 +typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, deUint32 drawCount, deUint32 stride);
 +typedef void (VKAPI_PTR *PFN_vkCmdDispatch)(VkCommandBuffer commandBuffer, deUint32 groupCountX, deUint32 groupCountY, deUint32 groupCountZ);
 +typedef void (VKAPI_PTR *PFN_vkCmdDispatchIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset);
 +typedef void (VKAPI_PTR *PFN_vkCmdCopyBuffer)(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, deUint32 regionCount, const VkBufferCopy* pRegions);
 +typedef void (VKAPI_PTR *PFN_vkCmdCopyImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkImageCopy* pRegions);
 +typedef void (VKAPI_PTR *PFN_vkCmdBlitImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkImageBlit* pRegions, VkFilter filter);
 +typedef void (VKAPI_PTR *PFN_vkCmdCopyBufferToImage)(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkBufferImageCopy* pRegions);
 +typedef void (VKAPI_PTR *PFN_vkCmdCopyImageToBuffer)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, deUint32 regionCount, const VkBufferImageCopy* pRegions);
 +typedef void (VKAPI_PTR *PFN_vkCmdUpdateBuffer)(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const void* pData);
 +typedef void (VKAPI_PTR *PFN_vkCmdFillBuffer)(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, deUint32 data);
 +typedef void (VKAPI_PTR *PFN_vkCmdClearColorImage)(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, deUint32 rangeCount, const VkImageSubresourceRange* pRanges);
 +typedef void (VKAPI_PTR *PFN_vkCmdClearDepthStencilImage)(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, deUint32 rangeCount, const VkImageSubresourceRange* pRanges);
 +typedef void (VKAPI_PTR *PFN_vkCmdClearAttachments)(VkCommandBuffer commandBuffer, deUint32 attachmentCount, const VkClearAttachment* pAttachments, deUint32 rectCount, const VkClearRect* pRects);
 +typedef void (VKAPI_PTR *PFN_vkCmdResolveImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkImageResolve* pRegions);
 +typedef void (VKAPI_PTR *PFN_vkCmdSetEvent)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask);
 +typedef void (VKAPI_PTR *PFN_vkCmdResetEvent)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask);
 +typedef void (VKAPI_PTR *PFN_vkCmdWaitEvents)(VkCommandBuffer commandBuffer, deUint32 eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, deUint32 memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, deUint32 bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, deUint32 imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers);
 +typedef void (VKAPI_PTR *PFN_vkCmdPipelineBarrier)(VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, deUint32 memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, deUint32 bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, deUint32 imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers);
 +typedef void (VKAPI_PTR *PFN_vkCmdBeginQuery)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query, VkQueryControlFlags flags);
 +typedef void (VKAPI_PTR *PFN_vkCmdEndQuery)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query);
 +typedef void (VKAPI_PTR *PFN_vkCmdResetQueryPool)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount);
 +typedef void (VKAPI_PTR *PFN_vkCmdWriteTimestamp)(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, deUint32 query);
 +typedef void (VKAPI_PTR *PFN_vkCmdCopyQueryPoolResults)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags);
 +typedef void (VKAPI_PTR *PFN_vkCmdPushConstants)(VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, deUint32 offset, deUint32 size, const void* pValues);
 +typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents);
 +typedef void (VKAPI_PTR *PFN_vkCmdNextSubpass)(VkCommandBuffer commandBuffer, VkSubpassContents contents);
 +typedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass)(VkCommandBuffer commandBuffer);
 +typedef void (VKAPI_PTR *PFN_vkCmdExecuteCommands)(VkCommandBuffer commandBuffer, deUint32 commandBufferCount, const VkCommandBuffer* pCommandBuffers);
 +
 +#ifndef VK_NO_PROTOTYPES
 +VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance(
 +    const VkInstanceCreateInfo*                 pCreateInfo,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkInstance*                                 pInstance);
 +
 +VKAPI_ATTR void VKAPI_CALL vkDestroyInstance(
 +    VkInstance                                  instance,
 +    const VkAllocationCallbacks*                pAllocator);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDevices(
 +    VkInstance                                  instance,
 +    deUint32*                                   pPhysicalDeviceCount,
 +    VkPhysicalDevice*                           pPhysicalDevices);
 +
 +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFeatures(
 +    VkPhysicalDevice                            physicalDevice,
 +    VkPhysicalDeviceFeatures*                   pFeatures);
 +
 +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFormatProperties(
 +    VkPhysicalDevice                            physicalDevice,
 +    VkFormat                                    format,
 +    VkFormatProperties*                         pFormatProperties);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceImageFormatProperties(
 +    VkPhysicalDevice                            physicalDevice,
 +    VkFormat                                    format,
 +    VkImageType                                 type,
 +    VkImageTiling                               tiling,
 +    VkImageUsageFlags                           usage,
 +    VkImageCreateFlags                          flags,
 +    VkImageFormatProperties*                    pImageFormatProperties);
 +
 +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceProperties(
 +    VkPhysicalDevice                            physicalDevice,
 +    VkPhysicalDeviceProperties*                 pProperties);
 +
 +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyProperties(
 +    VkPhysicalDevice                            physicalDevice,
 +    deUint32*                                   pQueueFamilyPropertyCount,
 +    VkQueueFamilyProperties*                    pQueueFamilyProperties);
 +
 +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties(
 +    VkPhysicalDevice                            physicalDevice,
 +    VkPhysicalDeviceMemoryProperties*           pMemoryProperties);
 +
 +VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetInstanceProcAddr(
 +    VkInstance                                  instance,
 +    const char*                                 pName);
 +
 +VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetDeviceProcAddr(
 +    VkDevice                                    device,
 +    const char*                                 pName);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkCreateDevice(
 +    VkPhysicalDevice                            physicalDevice,
 +    const VkDeviceCreateInfo*                   pCreateInfo,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkDevice*                                   pDevice);
 +
 +VKAPI_ATTR void VKAPI_CALL vkDestroyDevice(
 +    VkDevice                                    device,
 +    const VkAllocationCallbacks*                pAllocator);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceExtensionProperties(
 +    const char*                                 pLayerName,
 +    deUint32*                                   pPropertyCount,
 +    VkExtensionProperties*                      pProperties);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateDeviceExtensionProperties(
 +    VkPhysicalDevice                            physicalDevice,
 +    const char*                                 pLayerName,
 +    deUint32*                                   pPropertyCount,
 +    VkExtensionProperties*                      pProperties);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceLayerProperties(
 +    deUint32*                                   pPropertyCount,
 +    VkLayerProperties*                          pProperties);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateDeviceLayerProperties(
 +    VkPhysicalDevice                            physicalDevice,
 +    deUint32*                                   pPropertyCount,
 +    VkLayerProperties*                          pProperties);
 +
 +VKAPI_ATTR void VKAPI_CALL vkGetDeviceQueue(
 +    VkDevice                                    device,
 +    deUint32                                    queueFamilyIndex,
 +    deUint32                                    queueIndex,
 +    VkQueue*                                    pQueue);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkQueueSubmit(
 +    VkQueue                                     queue,
 +    deUint32                                    submitCount,
 +    const VkSubmitInfo*                         pSubmits,
 +    VkFence                                     fence);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkQueueWaitIdle(
 +    VkQueue                                     queue);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkDeviceWaitIdle(
 +    VkDevice                                    device);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkAllocateMemory(
 +    VkDevice                                    device,
 +    const VkMemoryAllocateInfo*                 pAllocateInfo,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkDeviceMemory*                             pMemory);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkMapMemory(
 +    VkDevice                                    device,
 +    VkDeviceMemory                              memory,
 +    VkDeviceSize                                offset,
 +    VkDeviceSize                                size,
 +    VkMemoryMapFlags                            flags,
 +    void**                                      ppData);
 +
 +VKAPI_ATTR void VKAPI_CALL vkUnmapMemory(
 +    VkDevice                                    device,
 +    VkDeviceMemory                              memory);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkFlushMappedMemoryRanges(
 +    VkDevice                                    device,
 +    deUint32                                    memoryRangeCount,
 +    const VkMappedMemoryRange*                  pMemoryRanges);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkInvalidateMappedMemoryRanges(
 +    VkDevice                                    device,
 +    deUint32                                    memoryRangeCount,
 +    const VkMappedMemoryRange*                  pMemoryRanges);
 +
 +VKAPI_ATTR void VKAPI_CALL vkGetDeviceMemoryCommitment(
 +    VkDevice                                    device,
 +    VkDeviceMemory                              memory,
 +    VkDeviceSize*                               pCommittedMemoryInBytes);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkBindBufferMemory(
 +    VkDevice                                    device,
 +    VkBuffer                                    buffer,
 +    VkDeviceMemory                              memory,
 +    VkDeviceSize                                memoryOffset);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory(
 +    VkDevice                                    device,
 +    VkImage                                     image,
 +    VkDeviceMemory                              memory,
 +    VkDeviceSize                                memoryOffset);
 +
 +VKAPI_ATTR void VKAPI_CALL vkGetBufferMemoryRequirements(
 +    VkDevice                                    device,
 +    VkBuffer                                    buffer,
 +    VkMemoryRequirements*                       pMemoryRequirements);
 +
 +VKAPI_ATTR void VKAPI_CALL vkGetImageMemoryRequirements(
 +    VkDevice                                    device,
 +    VkImage                                     image,
 +    VkMemoryRequirements*                       pMemoryRequirements);
 +
- #define VKSC_VERSION_1_0 1
- // Vulkan SC 1.0 version number
- #define VKSC_API_VERSION_1_0 VK_MAKE_VERSION(1, 0, 0)// Patch version should always be set to 0
- typedef enum VkFaultLevel {
-     VK_FAULT_LEVEL_UNASSIGNED = 0,
-     VK_FAULT_LEVEL_CRITICAL = 1,
-     VK_FAULT_LEVEL_RECOVERABLE = 2,
-     VK_FAULT_LEVEL_WARNING = 3,
-     VK_FAULT_LEVEL_UNASSIGNED_KHR = VK_FAULT_LEVEL_UNASSIGNED,
-     VK_FAULT_LEVEL_CRITICAL_KHR = VK_FAULT_LEVEL_CRITICAL,
-     VK_FAULT_LEVEL_RECOVERABLE_KHR = VK_FAULT_LEVEL_RECOVERABLE,
-     VK_FAULT_LEVEL_WARNING_KHR = VK_FAULT_LEVEL_WARNING,
-     VK_FAULT_LEVEL_MAX_ENUM = 0x7FFFFFFF
- } VkFaultLevel;
- typedef enum VkFaultType {
-     VK_FAULT_TYPE_INVALID = 0,
-     VK_FAULT_TYPE_UNASSIGNED = 1,
-     VK_FAULT_TYPE_IMPLEMENTATION = 2,
-     VK_FAULT_TYPE_SYSTEM = 3,
-     VK_FAULT_TYPE_PHYSICAL_DEVICE = 4,
-     VK_FAULT_TYPE_COMMAND_BUFFER_FULL = 5,
-     VK_FAULT_TYPE_INVALID_API_USAGE = 6,
-     VK_FAULT_TYPE_INVALID_KHR = VK_FAULT_TYPE_INVALID,
-     VK_FAULT_TYPE_UNASSIGNED_KHR = VK_FAULT_TYPE_UNASSIGNED,
-     VK_FAULT_TYPE_IMPLEMENTATION_KHR = VK_FAULT_TYPE_IMPLEMENTATION,
-     VK_FAULT_TYPE_SYSTEM_KHR = VK_FAULT_TYPE_SYSTEM,
-     VK_FAULT_TYPE_PHYSICAL_DEVICE_KHR = VK_FAULT_TYPE_PHYSICAL_DEVICE,
-     VK_FAULT_TYPE_COMMAND_BUFFER_FULL_KHR = VK_FAULT_TYPE_COMMAND_BUFFER_FULL,
-     VK_FAULT_TYPE_INVALID_API_USAGE_KHR = VK_FAULT_TYPE_INVALID_API_USAGE,
-     VK_FAULT_TYPE_MAX_ENUM = 0x7FFFFFFF
- } VkFaultType;
- typedef enum VkFaultQueryBehavior {
-     VK_FAULT_QUERY_BEHAVIOR_GET_AND_CLEAR_ALL_FAULTS = 0,
-     VK_FAULT_QUERY_BEHAVIOR_GET_AND_CLEAR_ALL_FAULTS_KHR = VK_FAULT_QUERY_BEHAVIOR_GET_AND_CLEAR_ALL_FAULTS,
-     VK_FAULT_QUERY_BEHAVIOR_MAX_ENUM = 0x7FFFFFFF
- } VkFaultQueryBehavior;
- typedef enum VkPipelineMatchControl {
-     VK_PIPELINE_MATCH_CONTROL_APPLICATION_UUID_EXACT_MATCH = 0,
-     VK_PIPELINE_MATCH_CONTROL_APPLICATION_UUID_EXACT_MATCH_KHR = VK_PIPELINE_MATCH_CONTROL_APPLICATION_UUID_EXACT_MATCH,
-     VK_PIPELINE_MATCH_CONTROL_MAX_ENUM = 0x7FFFFFFF
- } VkPipelineMatchControl;
- typedef struct VkPhysicalDeviceVulkanSC10Features {
-     VkStructureType    sType;
-     void*              pNext;
-     VkBool32           pipelineIdentifier;
-     VkBool32           shaderAtomicInstructions;
- } VkPhysicalDeviceVulkanSC10Features;
- typedef struct VkPhysicalDeviceVulkanSC10Properties {
-     VkStructureType    sType;
-     void*              pNext;
-     VkBool32           deviceDestroyFreesMemory;
-     VkBool32           commandPoolMultipleCommandBuffersRecording;
-     VkBool32           commandPoolResetCommandBuffer;
-     VkBool32           descriptorPoolFreeDescriptorSets;
-     VkBool32           externalSubpassDependencies;
-     VkBool32           recyclePipelineMemory;
-     deUint32           maxSubpasses;
-     deUint32           maxInputAttachments;
-     deUint32           maxPreserveAttachments;
-     deUint32           maxFramebufferAttachments;
-     deUint32           maxQueryFaultCount;
-     deUint32           maxCallbackFaultCount;
-     VkBool32           commandBufferSimultaneousUse;
-     VkBool32           secondaryCommandBufferNullFramebuffer;
- } VkPhysicalDeviceVulkanSC10Properties;
- typedef struct VkPipelinePoolSize {
-     VkStructureType    sType;
-     const void*        pNext;
-     VkDeviceSize       poolEntrySize;
-     deUint32           poolEntryCount;
- } VkPipelinePoolSize;
- typedef struct VkDeviceMemoryReservationCreateInfo {
-     VkStructureType                     sType;
-     const void*                         pNext;
-     deUint32                            pipelineCacheCreateInfoCount;
-     const VkPipelineCacheCreateInfo*    pPipelineCacheCreateInfos;
-     deUint32                            pipelinePoolSizeCount;
-     const VkPipelinePoolSize*           pPipelinePoolSizes;
-     deUint32                            descriptorSetLayoutBindingCount;
-     deUint32                            imageViewMaxMipLevels;
-     deUint32                            imageViewMaxArrayLayers;
-     deUint32                            layeredImageViewMaxMipLevels;
-     deUint32                            semaphoreRequestCount;
-     deUint32                            commandBufferRequestCount;
-     deUint32                            fenceRequestCount;
-     deUint32                            deviceMemoryRequestCount;
-     deUint32                            bufferRequestCount;
-     deUint32                            imageRequestCount;
-     deUint32                            eventRequestCount;
-     deUint32                            queryPoolRequestCount;
-     deUint32                            bufferViewRequestCount;
-     deUint32                            imageViewRequestCount;
-     deUint32                            layeredImageViewRequestCount;
-     deUint32                            pipelineLayoutRequestCount;
-     deUint32                            renderPassRequestCount;
-     deUint32                            graphicsPipelineRequestCount;
-     deUint32                            computePipelineRequestCount;
-     deUint32                            descriptorSetLayoutRequestCount;
-     deUint32                            samplerRequestCount;
-     deUint32                            descriptorPoolRequestCount;
-     deUint32                            descriptorSetRequestCount;
-     deUint32                            framebufferRequestCount;
-     deUint32                            commandPoolRequestCount;
-     deUint32                            samplerYcbcrConversionRequestCount;
-     deUint32                            surfaceRequestCount;
-     deUint32                            swapchainRequestCount;
-     deUint32                            displayModeRequestCount;
- } VkDeviceMemoryReservationCreateInfo;
- typedef struct VkCommandPoolMemoryReservationCreateInfo {
-     VkStructureType    sType;
-     const void*        pNext;
-     VkDeviceSize       commandPoolReservedSize;
-     deUint32           commandPoolMaxCommandBuffers;
- } VkCommandPoolMemoryReservationCreateInfo;
- typedef struct VkCommandPoolMemoryConsumption {
-     VkStructureType    sType;
-     void*              pNext;
-     VkDeviceSize       commandPoolAllocated;
-     VkDeviceSize       commandPoolReservedSize;
-     VkDeviceSize       commandBufferAllocated;
- } VkCommandPoolMemoryConsumption;
- typedef struct VkPipelinePoolEntrySizeCreateInfo {
-     VkStructureType    sType;
-     const void*        pNext;
-     VkDeviceSize       poolEntrySize;
- } VkPipelinePoolEntrySizeCreateInfo;
- typedef struct VkFaultData {
-     VkStructureType    sType;
-     void*              pNext;
-     VkFaultLevel       faultLevel;
-     VkFaultType        faultType;
- } VkFaultData;
- typedef void (VKAPI_PTR *PFN_vkFaultCallbackFunction)(
-     VkBool32                                    unrecordedFaults,
-     deUint32                                    faultCount,
-     const VkFaultData*                          pFaults);
- typedef struct VkFaultCallbackInfo {
-     VkStructureType                sType;
-     void*                          pNext;
-     VkFaultData*                   pFaults;
-     PFN_vkFaultCallbackFunction    pfnFaultCallback;
- } VkFaultCallbackInfo;
- typedef struct VkPhysicalDeviceFaultHandlingProperties {
-     VkStructureType    sType;
-     void*              pNext;
-     deUint32           maxQueryFaultCount;
-     deUint32           maxCallbackFaultCount;
- } VkPhysicalDeviceFaultHandlingProperties;
- typedef struct VkPhysicalDevicePipelineIdentifierFeatures {
-     VkStructureType    sType;
-     void*              pNext;
-     VkBool32           pipelineIdentifier;
- } VkPhysicalDevicePipelineIdentifierFeatures;
- typedef struct VkPipelineIdentifierInfo {
-     VkStructureType           sType;
-     const void*               pNext;
-     deUint8                   pipelineIdentifier[VK_UUID_SIZE];
-     VkPipelineMatchControl    matchControl;
- } VkPipelineIdentifierInfo;
- typedef void (VKAPI_PTR *PFN_vkGetCommandPoolMemoryConsumption)(VkDevice device, VkCommandPool commandPool, VkCommandBuffer commandBuffer, VkCommandPoolMemoryConsumption* pConsumption);
- typedef VkResult (VKAPI_PTR *PFN_vkGetFaultData)(VkDevice device, VkFaultQueryBehavior faultQueryBehavior, VkBool32* pUnrecordedFaults, deUint32* pFaultCount, VkFaultData* pFaults);
- #ifndef VK_NO_PROTOTYPES
- VKAPI_ATTR void VKAPI_CALL vkGetCommandPoolMemoryConsumption(
-     VkDevice                                    device,
-     VkCommandPool                               commandPool,
-     VkCommandBuffer                             commandBuffer,
-     VkCommandPoolMemoryConsumption*             pConsumption);
- VKAPI_ATTR VkResult VKAPI_CALL vkGetFaultData(
-     VkDevice                                    device,
-     VkFaultQueryBehavior                        faultQueryBehavior,
-     VkBool32*                                   pUnrecordedFaults,
-     deUint32*                                   pFaultCount,
-     VkFaultData*                                pFaults);
- #endif
 +VKAPI_ATTR VkResult VKAPI_CALL vkCreateFence(
 +    VkDevice                                    device,
 +    const VkFenceCreateInfo*                    pCreateInfo,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkFence*                                    pFence);
 +
 +VKAPI_ATTR void VKAPI_CALL vkDestroyFence(
 +    VkDevice                                    device,
 +    VkFence                                     fence,
 +    const VkAllocationCallbacks*                pAllocator);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkResetFences(
 +    VkDevice                                    device,
 +    deUint32                                    fenceCount,
 +    const VkFence*                              pFences);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceStatus(
 +    VkDevice                                    device,
 +    VkFence                                     fence);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkWaitForFences(
 +    VkDevice                                    device,
 +    deUint32                                    fenceCount,
 +    const VkFence*                              pFences,
 +    VkBool32                                    waitAll,
 +    deUint64                                    timeout);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkCreateSemaphore(
 +    VkDevice                                    device,
 +    const VkSemaphoreCreateInfo*                pCreateInfo,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkSemaphore*                                pSemaphore);
 +
 +VKAPI_ATTR void VKAPI_CALL vkDestroySemaphore(
 +    VkDevice                                    device,
 +    VkSemaphore                                 semaphore,
 +    const VkAllocationCallbacks*                pAllocator);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkCreateEvent(
 +    VkDevice                                    device,
 +    const VkEventCreateInfo*                    pCreateInfo,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkEvent*                                    pEvent);
 +
 +VKAPI_ATTR void VKAPI_CALL vkDestroyEvent(
 +    VkDevice                                    device,
 +    VkEvent                                     event,
 +    const VkAllocationCallbacks*                pAllocator);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetEventStatus(
 +    VkDevice                                    device,
 +    VkEvent                                     event);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkSetEvent(
 +    VkDevice                                    device,
 +    VkEvent                                     event);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkResetEvent(
 +    VkDevice                                    device,
 +    VkEvent                                     event);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkCreateQueryPool(
 +    VkDevice                                    device,
 +    const VkQueryPoolCreateInfo*                pCreateInfo,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkQueryPool*                                pQueryPool);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetQueryPoolResults(
 +    VkDevice                                    device,
 +    VkQueryPool                                 queryPool,
 +    deUint32                                    firstQuery,
 +    deUint32                                    queryCount,
 +    deUintptr                                      dataSize,
 +    void*                                       pData,
 +    VkDeviceSize                                stride,
 +    VkQueryResultFlags                          flags);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkCreateBuffer(
 +    VkDevice                                    device,
 +    const VkBufferCreateInfo*                   pCreateInfo,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkBuffer*                                   pBuffer);
 +
 +VKAPI_ATTR void VKAPI_CALL vkDestroyBuffer(
 +    VkDevice                                    device,
 +    VkBuffer                                    buffer,
 +    const VkAllocationCallbacks*                pAllocator);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkCreateBufferView(
 +    VkDevice                                    device,
 +    const VkBufferViewCreateInfo*               pCreateInfo,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkBufferView*                               pView);
 +
 +VKAPI_ATTR void VKAPI_CALL vkDestroyBufferView(
 +    VkDevice                                    device,
 +    VkBufferView                                bufferView,
 +    const VkAllocationCallbacks*                pAllocator);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkCreateImage(
 +    VkDevice                                    device,
 +    const VkImageCreateInfo*                    pCreateInfo,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkImage*                                    pImage);
 +
 +VKAPI_ATTR void VKAPI_CALL vkDestroyImage(
 +    VkDevice                                    device,
 +    VkImage                                     image,
 +    const VkAllocationCallbacks*                pAllocator);
 +
 +VKAPI_ATTR void VKAPI_CALL vkGetImageSubresourceLayout(
 +    VkDevice                                    device,
 +    VkImage                                     image,
 +    const VkImageSubresource*                   pSubresource,
 +    VkSubresourceLayout*                        pLayout);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkCreateImageView(
 +    VkDevice                                    device,
 +    const VkImageViewCreateInfo*                pCreateInfo,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkImageView*                                pView);
 +
 +VKAPI_ATTR void VKAPI_CALL vkDestroyImageView(
 +    VkDevice                                    device,
 +    VkImageView                                 imageView,
 +    const VkAllocationCallbacks*                pAllocator);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkCreatePipelineCache(
 +    VkDevice                                    device,
 +    const VkPipelineCacheCreateInfo*            pCreateInfo,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkPipelineCache*                            pPipelineCache);
 +
 +VKAPI_ATTR void VKAPI_CALL vkDestroyPipelineCache(
 +    VkDevice                                    device,
 +    VkPipelineCache                             pipelineCache,
 +    const VkAllocationCallbacks*                pAllocator);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkCreateGraphicsPipelines(
 +    VkDevice                                    device,
 +    VkPipelineCache                             pipelineCache,
 +    deUint32                                    createInfoCount,
 +    const VkGraphicsPipelineCreateInfo*         pCreateInfos,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkPipeline*                                 pPipelines);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkCreateComputePipelines(
 +    VkDevice                                    device,
 +    VkPipelineCache                             pipelineCache,
 +    deUint32                                    createInfoCount,
 +    const VkComputePipelineCreateInfo*          pCreateInfos,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkPipeline*                                 pPipelines);
 +
 +VKAPI_ATTR void VKAPI_CALL vkDestroyPipeline(
 +    VkDevice                                    device,
 +    VkPipeline                                  pipeline,
 +    const VkAllocationCallbacks*                pAllocator);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkCreatePipelineLayout(
 +    VkDevice                                    device,
 +    const VkPipelineLayoutCreateInfo*           pCreateInfo,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkPipelineLayout*                           pPipelineLayout);
 +
 +VKAPI_ATTR void VKAPI_CALL vkDestroyPipelineLayout(
 +    VkDevice                                    device,
 +    VkPipelineLayout                            pipelineLayout,
 +    const VkAllocationCallbacks*                pAllocator);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkCreateSampler(
 +    VkDevice                                    device,
 +    const VkSamplerCreateInfo*                  pCreateInfo,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkSampler*                                  pSampler);
 +
 +VKAPI_ATTR void VKAPI_CALL vkDestroySampler(
 +    VkDevice                                    device,
 +    VkSampler                                   sampler,
 +    const VkAllocationCallbacks*                pAllocator);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorSetLayout(
 +    VkDevice                                    device,
 +    const VkDescriptorSetLayoutCreateInfo*      pCreateInfo,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkDescriptorSetLayout*                      pSetLayout);
 +
 +VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorSetLayout(
 +    VkDevice                                    device,
 +    VkDescriptorSetLayout                       descriptorSetLayout,
 +    const VkAllocationCallbacks*                pAllocator);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorPool(
 +    VkDevice                                    device,
 +    const VkDescriptorPoolCreateInfo*           pCreateInfo,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkDescriptorPool*                           pDescriptorPool);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkResetDescriptorPool(
 +    VkDevice                                    device,
 +    VkDescriptorPool                            descriptorPool,
 +    VkDescriptorPoolResetFlags                  flags);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkAllocateDescriptorSets(
 +    VkDevice                                    device,
 +    const VkDescriptorSetAllocateInfo*          pAllocateInfo,
 +    VkDescriptorSet*                            pDescriptorSets);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkFreeDescriptorSets(
 +    VkDevice                                    device,
 +    VkDescriptorPool                            descriptorPool,
 +    deUint32                                    descriptorSetCount,
 +    const VkDescriptorSet*                      pDescriptorSets);
 +
 +VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSets(
 +    VkDevice                                    device,
 +    deUint32                                    descriptorWriteCount,
 +    const VkWriteDescriptorSet*                 pDescriptorWrites,
 +    deUint32                                    descriptorCopyCount,
 +    const VkCopyDescriptorSet*                  pDescriptorCopies);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkCreateFramebuffer(
 +    VkDevice                                    device,
 +    const VkFramebufferCreateInfo*              pCreateInfo,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkFramebuffer*                              pFramebuffer);
 +
 +VKAPI_ATTR void VKAPI_CALL vkDestroyFramebuffer(
 +    VkDevice                                    device,
 +    VkFramebuffer                               framebuffer,
 +    const VkAllocationCallbacks*                pAllocator);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass(
 +    VkDevice                                    device,
 +    const VkRenderPassCreateInfo*               pCreateInfo,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkRenderPass*                               pRenderPass);
 +
 +VKAPI_ATTR void VKAPI_CALL vkDestroyRenderPass(
 +    VkDevice                                    device,
 +    VkRenderPass                                renderPass,
 +    const VkAllocationCallbacks*                pAllocator);
 +
 +VKAPI_ATTR void VKAPI_CALL vkGetRenderAreaGranularity(
 +    VkDevice                                    device,
 +    VkRenderPass                                renderPass,
 +    VkExtent2D*                                 pGranularity);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkCreateCommandPool(
 +    VkDevice                                    device,
 +    const VkCommandPoolCreateInfo*              pCreateInfo,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkCommandPool*                              pCommandPool);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkResetCommandPool(
 +    VkDevice                                    device,
 +    VkCommandPool                               commandPool,
 +    VkCommandPoolResetFlags                     flags);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkAllocateCommandBuffers(
 +    VkDevice                                    device,
 +    const VkCommandBufferAllocateInfo*          pAllocateInfo,
 +    VkCommandBuffer*                            pCommandBuffers);
 +
 +VKAPI_ATTR void VKAPI_CALL vkFreeCommandBuffers(
 +    VkDevice                                    device,
 +    VkCommandPool                               commandPool,
 +    deUint32                                    commandBufferCount,
 +    const VkCommandBuffer*                      pCommandBuffers);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkBeginCommandBuffer(
 +    VkCommandBuffer                             commandBuffer,
 +    const VkCommandBufferBeginInfo*             pBeginInfo);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkEndCommandBuffer(
 +    VkCommandBuffer                             commandBuffer);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkResetCommandBuffer(
 +    VkCommandBuffer                             commandBuffer,
 +    VkCommandBufferResetFlags                   flags);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdBindPipeline(
 +    VkCommandBuffer                             commandBuffer,
 +    VkPipelineBindPoint                         pipelineBindPoint,
 +    VkPipeline                                  pipeline);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdSetViewport(
 +    VkCommandBuffer                             commandBuffer,
 +    deUint32                                    firstViewport,
 +    deUint32                                    viewportCount,
 +    const VkViewport*                           pViewports);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdSetScissor(
 +    VkCommandBuffer                             commandBuffer,
 +    deUint32                                    firstScissor,
 +    deUint32                                    scissorCount,
 +    const VkRect2D*                             pScissors);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdSetLineWidth(
 +    VkCommandBuffer                             commandBuffer,
 +    float                                       lineWidth);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBias(
 +    VkCommandBuffer                             commandBuffer,
 +    float                                       depthBiasConstantFactor,
 +    float                                       depthBiasClamp,
 +    float                                       depthBiasSlopeFactor);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdSetBlendConstants(
 +    VkCommandBuffer                             commandBuffer,
 +    const float                                 blendConstants[4]);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBounds(
 +    VkCommandBuffer                             commandBuffer,
 +    float                                       minDepthBounds,
 +    float                                       maxDepthBounds);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilCompareMask(
 +    VkCommandBuffer                             commandBuffer,
 +    VkStencilFaceFlags                          faceMask,
 +    deUint32                                    compareMask);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilWriteMask(
 +    VkCommandBuffer                             commandBuffer,
 +    VkStencilFaceFlags                          faceMask,
 +    deUint32                                    writeMask);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilReference(
 +    VkCommandBuffer                             commandBuffer,
 +    VkStencilFaceFlags                          faceMask,
 +    deUint32                                    reference);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdBindDescriptorSets(
 +    VkCommandBuffer                             commandBuffer,
 +    VkPipelineBindPoint                         pipelineBindPoint,
 +    VkPipelineLayout                            layout,
 +    deUint32                                    firstSet,
 +    deUint32                                    descriptorSetCount,
 +    const VkDescriptorSet*                      pDescriptorSets,
 +    deUint32                                    dynamicOffsetCount,
 +    const deUint32*                             pDynamicOffsets);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdBindIndexBuffer(
 +    VkCommandBuffer                             commandBuffer,
 +    VkBuffer                                    buffer,
 +    VkDeviceSize                                offset,
 +    VkIndexType                                 indexType);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdBindVertexBuffers(
 +    VkCommandBuffer                             commandBuffer,
 +    deUint32                                    firstBinding,
 +    deUint32                                    bindingCount,
 +    const VkBuffer*                             pBuffers,
 +    const VkDeviceSize*                         pOffsets);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdDraw(
 +    VkCommandBuffer                             commandBuffer,
 +    deUint32                                    vertexCount,
 +    deUint32                                    instanceCount,
 +    deUint32                                    firstVertex,
 +    deUint32                                    firstInstance);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexed(
 +    VkCommandBuffer                             commandBuffer,
 +    deUint32                                    indexCount,
 +    deUint32                                    instanceCount,
 +    deUint32                                    firstIndex,
 +    deInt32                                     vertexOffset,
 +    deUint32                                    firstInstance);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirect(
 +    VkCommandBuffer                             commandBuffer,
 +    VkBuffer                                    buffer,
 +    VkDeviceSize                                offset,
 +    deUint32                                    drawCount,
 +    deUint32                                    stride);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirect(
 +    VkCommandBuffer                             commandBuffer,
 +    VkBuffer                                    buffer,
 +    VkDeviceSize                                offset,
 +    deUint32                                    drawCount,
 +    deUint32                                    stride);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdDispatch(
 +    VkCommandBuffer                             commandBuffer,
 +    deUint32                                    groupCountX,
 +    deUint32                                    groupCountY,
 +    deUint32                                    groupCountZ);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdDispatchIndirect(
 +    VkCommandBuffer                             commandBuffer,
 +    VkBuffer                                    buffer,
 +    VkDeviceSize                                offset);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdCopyBuffer(
 +    VkCommandBuffer                             commandBuffer,
 +    VkBuffer                                    srcBuffer,
 +    VkBuffer                                    dstBuffer,
 +    deUint32                                    regionCount,
 +    const VkBufferCopy*                         pRegions);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdCopyImage(
 +    VkCommandBuffer                             commandBuffer,
 +    VkImage                                     srcImage,
 +    VkImageLayout                               srcImageLayout,
 +    VkImage                                     dstImage,
 +    VkImageLayout                               dstImageLayout,
 +    deUint32                                    regionCount,
 +    const VkImageCopy*                          pRegions);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdBlitImage(
 +    VkCommandBuffer                             commandBuffer,
 +    VkImage                                     srcImage,
 +    VkImageLayout                               srcImageLayout,
 +    VkImage                                     dstImage,
 +    VkImageLayout                               dstImageLayout,
 +    deUint32                                    regionCount,
 +    const VkImageBlit*                          pRegions,
 +    VkFilter                                    filter);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdCopyBufferToImage(
 +    VkCommandBuffer                             commandBuffer,
 +    VkBuffer                                    srcBuffer,
 +    VkImage                                     dstImage,
 +    VkImageLayout                               dstImageLayout,
 +    deUint32                                    regionCount,
 +    const VkBufferImageCopy*                    pRegions);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdCopyImageToBuffer(
 +    VkCommandBuffer                             commandBuffer,
 +    VkImage                                     srcImage,
 +    VkImageLayout                               srcImageLayout,
 +    VkBuffer                                    dstBuffer,
 +    deUint32                                    regionCount,
 +    const VkBufferImageCopy*                    pRegions);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdUpdateBuffer(
 +    VkCommandBuffer                             commandBuffer,
 +    VkBuffer                                    dstBuffer,
 +    VkDeviceSize                                dstOffset,
 +    VkDeviceSize                                dataSize,
 +    const void*                                 pData);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdFillBuffer(
 +    VkCommandBuffer                             commandBuffer,
 +    VkBuffer                                    dstBuffer,
 +    VkDeviceSize                                dstOffset,
 +    VkDeviceSize                                size,
 +    deUint32                                    data);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdClearColorImage(
 +    VkCommandBuffer                             commandBuffer,
 +    VkImage                                     image,
 +    VkImageLayout                               imageLayout,
 +    const VkClearColorValue*                    pColor,
 +    deUint32                                    rangeCount,
 +    const VkImageSubresourceRange*              pRanges);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdClearDepthStencilImage(
 +    VkCommandBuffer                             commandBuffer,
 +    VkImage                                     image,
 +    VkImageLayout                               imageLayout,
 +    const VkClearDepthStencilValue*             pDepthStencil,
 +    deUint32                                    rangeCount,
 +    const VkImageSubresourceRange*              pRanges);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdClearAttachments(
 +    VkCommandBuffer                             commandBuffer,
 +    deUint32                                    attachmentCount,
 +    const VkClearAttachment*                    pAttachments,
 +    deUint32                                    rectCount,
 +    const VkClearRect*                          pRects);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdResolveImage(
 +    VkCommandBuffer                             commandBuffer,
 +    VkImage                                     srcImage,
 +    VkImageLayout                               srcImageLayout,
 +    VkImage                                     dstImage,
 +    VkImageLayout                               dstImageLayout,
 +    deUint32                                    regionCount,
 +    const VkImageResolve*                       pRegions);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdSetEvent(
 +    VkCommandBuffer                             commandBuffer,
 +    VkEvent                                     event,
 +    VkPipelineStageFlags                        stageMask);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdResetEvent(
 +    VkCommandBuffer                             commandBuffer,
 +    VkEvent                                     event,
 +    VkPipelineStageFlags                        stageMask);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdWaitEvents(
 +    VkCommandBuffer                             commandBuffer,
 +    deUint32                                    eventCount,
 +    const VkEvent*                              pEvents,
 +    VkPipelineStageFlags                        srcStageMask,
 +    VkPipelineStageFlags                        dstStageMask,
 +    deUint32                                    memoryBarrierCount,
 +    const VkMemoryBarrier*                      pMemoryBarriers,
 +    deUint32                                    bufferMemoryBarrierCount,
 +    const VkBufferMemoryBarrier*                pBufferMemoryBarriers,
 +    deUint32                                    imageMemoryBarrierCount,
 +    const VkImageMemoryBarrier*                 pImageMemoryBarriers);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdPipelineBarrier(
 +    VkCommandBuffer                             commandBuffer,
 +    VkPipelineStageFlags                        srcStageMask,
 +    VkPipelineStageFlags                        dstStageMask,
 +    VkDependencyFlags                           dependencyFlags,
 +    deUint32                                    memoryBarrierCount,
 +    const VkMemoryBarrier*                      pMemoryBarriers,
 +    deUint32                                    bufferMemoryBarrierCount,
 +    const VkBufferMemoryBarrier*                pBufferMemoryBarriers,
 +    deUint32                                    imageMemoryBarrierCount,
 +    const VkImageMemoryBarrier*                 pImageMemoryBarriers);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdBeginQuery(
 +    VkCommandBuffer                             commandBuffer,
 +    VkQueryPool                                 queryPool,
 +    deUint32                                    query,
 +    VkQueryControlFlags                         flags);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdEndQuery(
 +    VkCommandBuffer                             commandBuffer,
 +    VkQueryPool                                 queryPool,
 +    deUint32                                    query);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdResetQueryPool(
 +    VkCommandBuffer                             commandBuffer,
 +    VkQueryPool                                 queryPool,
 +    deUint32                                    firstQuery,
 +    deUint32                                    queryCount);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdWriteTimestamp(
 +    VkCommandBuffer                             commandBuffer,
 +    VkPipelineStageFlagBits                     pipelineStage,
 +    VkQueryPool                                 queryPool,
 +    deUint32                                    query);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdCopyQueryPoolResults(
 +    VkCommandBuffer                             commandBuffer,
 +    VkQueryPool                                 queryPool,
 +    deUint32                                    firstQuery,
 +    deUint32                                    queryCount,
 +    VkBuffer                                    dstBuffer,
 +    VkDeviceSize                                dstOffset,
 +    VkDeviceSize                                stride,
 +    VkQueryResultFlags                          flags);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdPushConstants(
 +    VkCommandBuffer                             commandBuffer,
 +    VkPipelineLayout                            layout,
 +    VkShaderStageFlags                          stageFlags,
 +    deUint32                                    offset,
 +    deUint32                                    size,
 +    const void*                                 pValues);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass(
 +    VkCommandBuffer                             commandBuffer,
 +    const VkRenderPassBeginInfo*                pRenderPassBegin,
 +    VkSubpassContents                           contents);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdNextSubpass(
 +    VkCommandBuffer                             commandBuffer,
 +    VkSubpassContents                           contents);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass(
 +    VkCommandBuffer                             commandBuffer);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdExecuteCommands(
 +    VkCommandBuffer                             commandBuffer,
 +    deUint32                                    commandBufferCount,
 +    const VkCommandBuffer*                      pCommandBuffers);
 +#endif
 +
 +
- #define VK_API_VERSION_1_1 VK_MAKE_VERSION(1, 1, 0)// Patch version should always be set to 0
 +#define VK_VERSION_1_1 1
 +// Vulkan 1.1 version number
- #define VK_MAX_DEVICE_GROUP_SIZE          32
- #define VK_LUID_SIZE                      8
- #define VK_QUEUE_FAMILY_EXTERNAL          (~0U-1)
++#define VK_API_VERSION_1_1 VK_MAKE_API_VERSION(0, 1, 1, 0)// Patch version should always be set to 0
 +
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSamplerYcbcrConversion)
- typedef struct VkDeviceGroupBindSparseInfo {
-     VkStructureType    sType;
-     const void*        pNext;
-     deUint32           resourceDeviceIndex;
-     deUint32           memoryDeviceIndex;
- } VkDeviceGroupBindSparseInfo;
++#define VK_MAX_DEVICE_GROUP_SIZE          32U
++#define VK_LUID_SIZE                      8U
++#define VK_QUEUE_FAMILY_EXTERNAL          (~1U)
 +
 +typedef enum VkPointClippingBehavior {
 +    VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES = 0,
 +    VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY = 1,
 +    VK_POINT_CLIPPING_BEHAVIOR_MAX_ENUM = 0x7FFFFFFF
 +} VkPointClippingBehavior;
 +
 +typedef enum VkTessellationDomainOrigin {
 +    VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT = 0,
 +    VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT = 1,
 +    VK_TESSELLATION_DOMAIN_ORIGIN_MAX_ENUM = 0x7FFFFFFF
 +} VkTessellationDomainOrigin;
 +
 +typedef enum VkSamplerYcbcrModelConversion {
 +    VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY = 0,
 +    VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY = 1,
 +    VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709 = 2,
 +    VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601 = 3,
 +    VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 = 4,
 +    VK_SAMPLER_YCBCR_MODEL_CONVERSION_MAX_ENUM = 0x7FFFFFFF
 +} VkSamplerYcbcrModelConversion;
 +
 +typedef enum VkSamplerYcbcrRange {
 +    VK_SAMPLER_YCBCR_RANGE_ITU_FULL = 0,
 +    VK_SAMPLER_YCBCR_RANGE_ITU_NARROW = 1,
 +    VK_SAMPLER_YCBCR_RANGE_MAX_ENUM = 0x7FFFFFFF
 +} VkSamplerYcbcrRange;
 +
 +typedef enum VkChromaLocation {
 +    VK_CHROMA_LOCATION_COSITED_EVEN = 0,
 +    VK_CHROMA_LOCATION_MIDPOINT = 1,
 +    VK_CHROMA_LOCATION_MAX_ENUM = 0x7FFFFFFF
 +} VkChromaLocation;
 +
 +typedef enum VkSubgroupFeatureFlagBits {
 +    VK_SUBGROUP_FEATURE_BASIC_BIT = 0x00000001,
 +    VK_SUBGROUP_FEATURE_VOTE_BIT = 0x00000002,
 +    VK_SUBGROUP_FEATURE_ARITHMETIC_BIT = 0x00000004,
 +    VK_SUBGROUP_FEATURE_BALLOT_BIT = 0x00000008,
 +    VK_SUBGROUP_FEATURE_SHUFFLE_BIT = 0x00000010,
 +    VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 0x00000020,
 +    VK_SUBGROUP_FEATURE_CLUSTERED_BIT = 0x00000040,
 +    VK_SUBGROUP_FEATURE_QUAD_BIT = 0x00000080,
 +    VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkSubgroupFeatureFlagBits;
 +typedef VkFlags VkSubgroupFeatureFlags;
 +
 +typedef enum VkPeerMemoryFeatureFlagBits {
 +    VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT = 0x00000001,
 +    VK_PEER_MEMORY_FEATURE_COPY_DST_BIT = 0x00000002,
 +    VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT = 0x00000004,
 +    VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT = 0x00000008,
 +    VK_PEER_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkPeerMemoryFeatureFlagBits;
 +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_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkMemoryAllocateFlagBits;
 +typedef VkFlags VkMemoryAllocateFlags;
 +
 +typedef enum VkExternalMemoryHandleTypeFlagBits {
 +    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT = 0x00000001,
 +    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT = 0x00000002,
 +    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 0x00000004,
 +    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT = 0x00000008,
 +    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT = 0x00000010,
 +    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT = 0x00000020,
 +    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT = 0x00000040,
 +    VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT = 0x00000200,
 +    VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT = 0x00000080,
 +    VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT = 0x00000100,
 +    VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkExternalMemoryHandleTypeFlagBits;
 +typedef VkFlags VkExternalMemoryHandleTypeFlags;
 +
 +typedef enum VkExternalMemoryFeatureFlagBits {
 +    VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT = 0x00000001,
 +    VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT = 0x00000002,
 +    VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT = 0x00000004,
 +    VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkExternalMemoryFeatureFlagBits;
 +typedef VkFlags VkExternalMemoryFeatureFlags;
 +
 +typedef enum VkExternalFenceHandleTypeFlagBits {
 +    VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT = 0x00000001,
 +    VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 0x00000002,
 +    VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 0x00000004,
 +    VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT = 0x00000008,
 +    VK_EXTERNAL_FENCE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkExternalFenceHandleTypeFlagBits;
 +typedef VkFlags VkExternalFenceHandleTypeFlags;
 +
 +typedef enum VkExternalFenceFeatureFlagBits {
 +    VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT = 0x00000001,
 +    VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT = 0x00000002,
 +    VK_EXTERNAL_FENCE_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkExternalFenceFeatureFlagBits;
 +typedef VkFlags VkExternalFenceFeatureFlags;
 +
 +typedef enum VkFenceImportFlagBits {
 +    VK_FENCE_IMPORT_TEMPORARY_BIT = 0x00000001,
 +    VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkFenceImportFlagBits;
 +typedef VkFlags VkFenceImportFlags;
 +
 +typedef enum VkSemaphoreImportFlagBits {
 +    VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = 0x00000001,
 +    VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkSemaphoreImportFlagBits;
 +typedef VkFlags VkSemaphoreImportFlags;
 +
 +typedef enum VkExternalSemaphoreHandleTypeFlagBits {
 +    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT = 0x00000001,
 +    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 0x00000002,
 +    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 0x00000004,
 +    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT = 0x00000008,
 +    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT = 0x00000010,
 +    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE_BIT = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT,
 +    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkExternalSemaphoreHandleTypeFlagBits;
 +typedef VkFlags VkExternalSemaphoreHandleTypeFlags;
 +
 +typedef enum VkExternalSemaphoreFeatureFlagBits {
 +    VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT = 0x00000001,
 +    VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT = 0x00000002,
 +    VK_EXTERNAL_SEMAPHORE_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkExternalSemaphoreFeatureFlagBits;
 +typedef VkFlags VkExternalSemaphoreFeatureFlags;
 +typedef struct VkPhysicalDeviceSubgroupProperties {
 +    VkStructureType           sType;
 +    void*                     pNext;
 +    deUint32                  subgroupSize;
 +    VkShaderStageFlags        supportedStages;
 +    VkSubgroupFeatureFlags    supportedOperations;
 +    VkBool32                  quadOperationsInAllStages;
 +} VkPhysicalDeviceSubgroupProperties;
 +
 +typedef struct VkBindBufferMemoryInfo {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    VkBuffer           buffer;
 +    VkDeviceMemory     memory;
 +    VkDeviceSize       memoryOffset;
 +} VkBindBufferMemoryInfo;
 +
 +typedef struct VkBindImageMemoryInfo {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    VkImage            image;
 +    VkDeviceMemory     memory;
 +    VkDeviceSize       memoryOffset;
 +} VkBindImageMemoryInfo;
 +
 +typedef struct VkPhysicalDevice16BitStorageFeatures {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           storageBuffer16BitAccess;
 +    VkBool32           uniformAndStorageBuffer16BitAccess;
 +    VkBool32           storagePushConstant16;
 +    VkBool32           storageInputOutput16;
 +} VkPhysicalDevice16BitStorageFeatures;
 +
 +typedef struct VkMemoryDedicatedRequirements {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           prefersDedicatedAllocation;
 +    VkBool32           requiresDedicatedAllocation;
 +} VkMemoryDedicatedRequirements;
 +
 +typedef struct VkMemoryDedicatedAllocateInfo {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    VkImage            image;
 +    VkBuffer           buffer;
 +} VkMemoryDedicatedAllocateInfo;
 +
 +typedef struct VkMemoryAllocateFlagsInfo {
 +    VkStructureType          sType;
 +    const void*              pNext;
 +    VkMemoryAllocateFlags    flags;
 +    deUint32                 deviceMask;
 +} VkMemoryAllocateFlagsInfo;
 +
 +typedef struct VkDeviceGroupRenderPassBeginInfo {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    deUint32           deviceMask;
 +    deUint32           deviceRenderAreaCount;
 +    const VkRect2D*    pDeviceRenderAreas;
 +} VkDeviceGroupRenderPassBeginInfo;
 +
 +typedef struct VkDeviceGroupCommandBufferBeginInfo {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    deUint32           deviceMask;
 +} VkDeviceGroupCommandBufferBeginInfo;
 +
 +typedef struct VkDeviceGroupSubmitInfo {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    deUint32           waitSemaphoreCount;
 +    const deUint32*    pWaitSemaphoreDeviceIndices;
 +    deUint32           commandBufferCount;
 +    const deUint32*    pCommandBufferDeviceMasks;
 +    deUint32           signalSemaphoreCount;
 +    const deUint32*    pSignalSemaphoreDeviceIndices;
 +} VkDeviceGroupSubmitInfo;
 +
- typedef struct VkImageSparseMemoryRequirementsInfo2 {
-     VkStructureType    sType;
-     const void*        pNext;
-     VkImage            image;
- } VkImageSparseMemoryRequirementsInfo2;
 +typedef struct VkBindBufferMemoryDeviceGroupInfo {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    deUint32           deviceIndexCount;
 +    const deUint32*    pDeviceIndices;
 +} VkBindBufferMemoryDeviceGroupInfo;
 +
 +typedef struct VkBindImageMemoryDeviceGroupInfo {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    deUint32           deviceIndexCount;
 +    const deUint32*    pDeviceIndices;
 +    deUint32           splitInstanceBindRegionCount;
 +    const VkRect2D*    pSplitInstanceBindRegions;
 +} VkBindImageMemoryDeviceGroupInfo;
 +
 +typedef struct VkPhysicalDeviceGroupProperties {
 +    VkStructureType     sType;
 +    void*               pNext;
 +    deUint32            physicalDeviceCount;
 +    VkPhysicalDevice    physicalDevices[VK_MAX_DEVICE_GROUP_SIZE];
 +    VkBool32            subsetAllocation;
 +} VkPhysicalDeviceGroupProperties;
 +
 +typedef struct VkDeviceGroupDeviceCreateInfo {
 +    VkStructureType            sType;
 +    const void*                pNext;
 +    deUint32                   physicalDeviceCount;
 +    const VkPhysicalDevice*    pPhysicalDevices;
 +} VkDeviceGroupDeviceCreateInfo;
 +
 +typedef struct VkBufferMemoryRequirementsInfo2 {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    VkBuffer           buffer;
 +} VkBufferMemoryRequirementsInfo2;
 +
 +typedef struct VkImageMemoryRequirementsInfo2 {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    VkImage            image;
 +} VkImageMemoryRequirementsInfo2;
 +
- typedef struct VkSparseImageMemoryRequirements2 {
-     VkStructureType                    sType;
-     void*                              pNext;
-     VkSparseImageMemoryRequirements    memoryRequirements;
- } VkSparseImageMemoryRequirements2;
 +typedef struct VkMemoryRequirements2 {
 +    VkStructureType         sType;
 +    void*                   pNext;
 +    VkMemoryRequirements    memoryRequirements;
 +} VkMemoryRequirements2;
 +
- typedef struct VkSparseImageFormatProperties2 {
-     VkStructureType                  sType;
-     void*                            pNext;
-     VkSparseImageFormatProperties    properties;
- } VkSparseImageFormatProperties2;
- typedef struct VkPhysicalDeviceSparseImageFormatInfo2 {
-     VkStructureType          sType;
-     const void*              pNext;
-     VkFormat                 format;
-     VkImageType              type;
-     VkSampleCountFlagBits    samples;
-     VkImageUsageFlags        usage;
-     VkImageTiling            tiling;
- } VkPhysicalDeviceSparseImageFormatInfo2;
 +typedef struct VkPhysicalDeviceFeatures2 {
 +    VkStructureType             sType;
 +    void*                       pNext;
 +    VkPhysicalDeviceFeatures    features;
 +} VkPhysicalDeviceFeatures2;
 +
 +typedef struct VkPhysicalDeviceProperties2 {
 +    VkStructureType               sType;
 +    void*                         pNext;
 +    VkPhysicalDeviceProperties    properties;
 +} VkPhysicalDeviceProperties2;
 +
 +typedef struct VkFormatProperties2 {
 +    VkStructureType       sType;
 +    void*                 pNext;
 +    VkFormatProperties    formatProperties;
 +} VkFormatProperties2;
 +
 +typedef struct VkImageFormatProperties2 {
 +    VkStructureType            sType;
 +    void*                      pNext;
 +    VkImageFormatProperties    imageFormatProperties;
 +} VkImageFormatProperties2;
 +
 +typedef struct VkPhysicalDeviceImageFormatInfo2 {
 +    VkStructureType       sType;
 +    const void*           pNext;
 +    VkFormat              format;
 +    VkImageType           type;
 +    VkImageTiling         tiling;
 +    VkImageUsageFlags     usage;
 +    VkImageCreateFlags    flags;
 +} VkPhysicalDeviceImageFormatInfo2;
 +
 +typedef struct VkQueueFamilyProperties2 {
 +    VkStructureType            sType;
 +    void*                      pNext;
 +    VkQueueFamilyProperties    queueFamilyProperties;
 +} VkQueueFamilyProperties2;
 +
 +typedef struct VkPhysicalDeviceMemoryProperties2 {
 +    VkStructureType                     sType;
 +    void*                               pNext;
 +    VkPhysicalDeviceMemoryProperties    memoryProperties;
 +} VkPhysicalDeviceMemoryProperties2;
 +
- typedef void (VKAPI_PTR *PFN_vkGetImageSparseMemoryRequirements2)(VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, deUint32* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements);
 +typedef struct VkPhysicalDevicePointClippingProperties {
 +    VkStructureType            sType;
 +    void*                      pNext;
 +    VkPointClippingBehavior    pointClippingBehavior;
 +} VkPhysicalDevicePointClippingProperties;
 +
 +typedef struct VkInputAttachmentAspectReference {
 +    deUint32              subpass;
 +    deUint32              inputAttachmentIndex;
 +    VkImageAspectFlags    aspectMask;
 +} VkInputAttachmentAspectReference;
 +
 +typedef struct VkRenderPassInputAttachmentAspectCreateInfo {
 +    VkStructureType                            sType;
 +    const void*                                pNext;
 +    deUint32                                   aspectReferenceCount;
 +    const VkInputAttachmentAspectReference*    pAspectReferences;
 +} VkRenderPassInputAttachmentAspectCreateInfo;
 +
 +typedef struct VkImageViewUsageCreateInfo {
 +    VkStructureType      sType;
 +    const void*          pNext;
 +    VkImageUsageFlags    usage;
 +} VkImageViewUsageCreateInfo;
 +
 +typedef struct VkPipelineTessellationDomainOriginStateCreateInfo {
 +    VkStructureType               sType;
 +    const void*                   pNext;
 +    VkTessellationDomainOrigin    domainOrigin;
 +} VkPipelineTessellationDomainOriginStateCreateInfo;
 +
 +typedef struct VkRenderPassMultiviewCreateInfo {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    deUint32           subpassCount;
 +    const deUint32*    pViewMasks;
 +    deUint32           dependencyCount;
 +    const deInt32*     pViewOffsets;
 +    deUint32           correlationMaskCount;
 +    const deUint32*    pCorrelationMasks;
 +} VkRenderPassMultiviewCreateInfo;
 +
 +typedef struct VkPhysicalDeviceMultiviewFeatures {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           multiview;
 +    VkBool32           multiviewGeometryShader;
 +    VkBool32           multiviewTessellationShader;
 +} VkPhysicalDeviceMultiviewFeatures;
 +
 +typedef struct VkPhysicalDeviceMultiviewProperties {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    deUint32           maxMultiviewViewCount;
 +    deUint32           maxMultiviewInstanceIndex;
 +} VkPhysicalDeviceMultiviewProperties;
 +
 +typedef struct VkPhysicalDeviceVariablePointersFeatures {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           variablePointersStorageBuffer;
 +    VkBool32           variablePointers;
 +} VkPhysicalDeviceVariablePointersFeatures;
 +
 +typedef VkPhysicalDeviceVariablePointersFeatures VkPhysicalDeviceVariablePointerFeatures;
 +
 +typedef struct VkPhysicalDeviceProtectedMemoryFeatures {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           protectedMemory;
 +} VkPhysicalDeviceProtectedMemoryFeatures;
 +
 +typedef struct VkPhysicalDeviceProtectedMemoryProperties {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           protectedNoFault;
 +} VkPhysicalDeviceProtectedMemoryProperties;
 +
 +typedef struct VkDeviceQueueInfo2 {
 +    VkStructureType             sType;
 +    const void*                 pNext;
 +    VkDeviceQueueCreateFlags    flags;
 +    deUint32                    queueFamilyIndex;
 +    deUint32                    queueIndex;
 +} VkDeviceQueueInfo2;
 +
 +typedef struct VkProtectedSubmitInfo {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    VkBool32           protectedSubmit;
 +} VkProtectedSubmitInfo;
 +
 +typedef struct VkSamplerYcbcrConversionCreateInfo {
 +    VkStructureType                  sType;
 +    const void*                      pNext;
 +    VkFormat                         format;
 +    VkSamplerYcbcrModelConversion    ycbcrModel;
 +    VkSamplerYcbcrRange              ycbcrRange;
 +    VkComponentMapping               components;
 +    VkChromaLocation                 xChromaOffset;
 +    VkChromaLocation                 yChromaOffset;
 +    VkFilter                         chromaFilter;
 +    VkBool32                         forceExplicitReconstruction;
 +} VkSamplerYcbcrConversionCreateInfo;
 +
 +typedef struct VkSamplerYcbcrConversionInfo {
 +    VkStructureType             sType;
 +    const void*                 pNext;
 +    VkSamplerYcbcrConversion    conversion;
 +} VkSamplerYcbcrConversionInfo;
 +
 +typedef struct VkBindImagePlaneMemoryInfo {
 +    VkStructureType          sType;
 +    const void*              pNext;
 +    VkImageAspectFlagBits    planeAspect;
 +} VkBindImagePlaneMemoryInfo;
 +
 +typedef struct VkImagePlaneMemoryRequirementsInfo {
 +    VkStructureType          sType;
 +    const void*              pNext;
 +    VkImageAspectFlagBits    planeAspect;
 +} VkImagePlaneMemoryRequirementsInfo;
 +
 +typedef struct VkPhysicalDeviceSamplerYcbcrConversionFeatures {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           samplerYcbcrConversion;
 +} VkPhysicalDeviceSamplerYcbcrConversionFeatures;
 +
 +typedef struct VkSamplerYcbcrConversionImageFormatProperties {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    deUint32           combinedImageSamplerDescriptorCount;
 +} VkSamplerYcbcrConversionImageFormatProperties;
 +
 +typedef struct VkExternalMemoryProperties {
 +    VkExternalMemoryFeatureFlags       externalMemoryFeatures;
 +    VkExternalMemoryHandleTypeFlags    exportFromImportedHandleTypes;
 +    VkExternalMemoryHandleTypeFlags    compatibleHandleTypes;
 +} VkExternalMemoryProperties;
 +
 +typedef struct VkPhysicalDeviceExternalImageFormatInfo {
 +    VkStructureType                       sType;
 +    const void*                           pNext;
 +    VkExternalMemoryHandleTypeFlagBits    handleType;
 +} VkPhysicalDeviceExternalImageFormatInfo;
 +
 +typedef struct VkExternalImageFormatProperties {
 +    VkStructureType               sType;
 +    void*                         pNext;
 +    VkExternalMemoryProperties    externalMemoryProperties;
 +} VkExternalImageFormatProperties;
 +
 +typedef struct VkPhysicalDeviceExternalBufferInfo {
 +    VkStructureType                       sType;
 +    const void*                           pNext;
 +    VkBufferCreateFlags                   flags;
 +    VkBufferUsageFlags                    usage;
 +    VkExternalMemoryHandleTypeFlagBits    handleType;
 +} VkPhysicalDeviceExternalBufferInfo;
 +
 +typedef struct VkExternalBufferProperties {
 +    VkStructureType               sType;
 +    void*                         pNext;
 +    VkExternalMemoryProperties    externalMemoryProperties;
 +} VkExternalBufferProperties;
 +
 +typedef struct VkPhysicalDeviceIDProperties {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    deUint8            deviceUUID[VK_UUID_SIZE];
 +    deUint8            driverUUID[VK_UUID_SIZE];
 +    deUint8            deviceLUID[VK_LUID_SIZE];
 +    deUint32           deviceNodeMask;
 +    VkBool32           deviceLUIDValid;
 +} VkPhysicalDeviceIDProperties;
 +
 +typedef struct VkExternalMemoryImageCreateInfo {
 +    VkStructureType                    sType;
 +    const void*                        pNext;
 +    VkExternalMemoryHandleTypeFlags    handleTypes;
 +} VkExternalMemoryImageCreateInfo;
 +
 +typedef struct VkExternalMemoryBufferCreateInfo {
 +    VkStructureType                    sType;
 +    const void*                        pNext;
 +    VkExternalMemoryHandleTypeFlags    handleTypes;
 +} VkExternalMemoryBufferCreateInfo;
 +
 +typedef struct VkExportMemoryAllocateInfo {
 +    VkStructureType                    sType;
 +    const void*                        pNext;
 +    VkExternalMemoryHandleTypeFlags    handleTypes;
 +} VkExportMemoryAllocateInfo;
 +
 +typedef struct VkPhysicalDeviceExternalFenceInfo {
 +    VkStructureType                      sType;
 +    const void*                          pNext;
 +    VkExternalFenceHandleTypeFlagBits    handleType;
 +} VkPhysicalDeviceExternalFenceInfo;
 +
 +typedef struct VkExternalFenceProperties {
 +    VkStructureType                   sType;
 +    void*                             pNext;
 +    VkExternalFenceHandleTypeFlags    exportFromImportedHandleTypes;
 +    VkExternalFenceHandleTypeFlags    compatibleHandleTypes;
 +    VkExternalFenceFeatureFlags       externalFenceFeatures;
 +} VkExternalFenceProperties;
 +
 +typedef struct VkExportFenceCreateInfo {
 +    VkStructureType                   sType;
 +    const void*                       pNext;
 +    VkExternalFenceHandleTypeFlags    handleTypes;
 +} VkExportFenceCreateInfo;
 +
 +typedef struct VkExportSemaphoreCreateInfo {
 +    VkStructureType                       sType;
 +    const void*                           pNext;
 +    VkExternalSemaphoreHandleTypeFlags    handleTypes;
 +} VkExportSemaphoreCreateInfo;
 +
 +typedef struct VkPhysicalDeviceExternalSemaphoreInfo {
 +    VkStructureType                          sType;
 +    const void*                              pNext;
 +    VkExternalSemaphoreHandleTypeFlagBits    handleType;
 +} VkPhysicalDeviceExternalSemaphoreInfo;
 +
 +typedef struct VkExternalSemaphoreProperties {
 +    VkStructureType                       sType;
 +    void*                                 pNext;
 +    VkExternalSemaphoreHandleTypeFlags    exportFromImportedHandleTypes;
 +    VkExternalSemaphoreHandleTypeFlags    compatibleHandleTypes;
 +    VkExternalSemaphoreFeatureFlags       externalSemaphoreFeatures;
 +} VkExternalSemaphoreProperties;
 +
 +typedef struct VkPhysicalDeviceMaintenance3Properties {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    deUint32           maxPerSetDescriptors;
 +    VkDeviceSize       maxMemoryAllocationSize;
 +} VkPhysicalDeviceMaintenance3Properties;
 +
 +typedef struct VkDescriptorSetLayoutSupport {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           supported;
 +} VkDescriptorSetLayoutSupport;
 +
 +typedef struct VkPhysicalDeviceShaderDrawParametersFeatures {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           shaderDrawParameters;
 +} VkPhysicalDeviceShaderDrawParametersFeatures;
 +
 +typedef VkPhysicalDeviceShaderDrawParametersFeatures VkPhysicalDeviceShaderDrawParameterFeatures;
 +
 +typedef VkResult (VKAPI_PTR *PFN_vkEnumerateInstanceVersion)(deUint32* pApiVersion);
 +typedef VkResult (VKAPI_PTR *PFN_vkBindBufferMemory2)(VkDevice device, deUint32 bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos);
 +typedef VkResult (VKAPI_PTR *PFN_vkBindImageMemory2)(VkDevice device, deUint32 bindInfoCount, const VkBindImageMemoryInfo* pBindInfos);
 +typedef void (VKAPI_PTR *PFN_vkGetDeviceGroupPeerMemoryFeatures)(VkDevice device, deUint32 heapIndex, deUint32 localDeviceIndex, deUint32 remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures);
 +typedef void (VKAPI_PTR *PFN_vkCmdSetDeviceMask)(VkCommandBuffer commandBuffer, deUint32 deviceMask);
 +typedef void (VKAPI_PTR *PFN_vkCmdDispatchBase)(VkCommandBuffer commandBuffer, deUint32 baseGroupX, deUint32 baseGroupY, deUint32 baseGroupZ, deUint32 groupCountX, deUint32 groupCountY, deUint32 groupCountZ);
 +typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDeviceGroups)(VkInstance instance, deUint32* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties);
 +typedef void (VKAPI_PTR *PFN_vkGetImageMemoryRequirements2)(VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements);
 +typedef void (VKAPI_PTR *PFN_vkGetBufferMemoryRequirements2)(VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements);
- typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceSparseImageFormatProperties2)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, deUint32* pPropertyCount, VkSparseImageFormatProperties2* pProperties);
 +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFeatures2)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures);
 +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceProperties2)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties);
 +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFormatProperties2)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties);
 +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceImageFormatProperties2)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties);
 +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyProperties2)(VkPhysicalDevice physicalDevice, deUint32* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties);
 +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMemoryProperties2)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties);
- VKAPI_ATTR void VKAPI_CALL vkGetImageSparseMemoryRequirements2(
-     VkDevice                                    device,
-     const VkImageSparseMemoryRequirementsInfo2* pInfo,
-     deUint32*                                   pSparseMemoryRequirementCount,
-     VkSparseImageMemoryRequirements2*           pSparseMemoryRequirements);
 +typedef void (VKAPI_PTR *PFN_vkGetDeviceQueue2)(VkDevice device, const VkDeviceQueueInfo2* pQueueInfo, VkQueue* pQueue);
 +typedef VkResult (VKAPI_PTR *PFN_vkCreateSamplerYcbcrConversion)(VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion);
 +typedef void (VKAPI_PTR *PFN_vkDestroySamplerYcbcrConversion)(VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator);
 +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalBufferProperties)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties);
 +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalFenceProperties)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties);
 +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalSemaphoreProperties)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties);
 +typedef void (VKAPI_PTR *PFN_vkGetDescriptorSetLayoutSupport)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport);
 +
 +#ifndef VK_NO_PROTOTYPES
 +VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceVersion(
 +    deUint32*                                   pApiVersion);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkBindBufferMemory2(
 +    VkDevice                                    device,
 +    deUint32                                    bindInfoCount,
 +    const VkBindBufferMemoryInfo*               pBindInfos);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory2(
 +    VkDevice                                    device,
 +    deUint32                                    bindInfoCount,
 +    const VkBindImageMemoryInfo*                pBindInfos);
 +
 +VKAPI_ATTR void VKAPI_CALL vkGetDeviceGroupPeerMemoryFeatures(
 +    VkDevice                                    device,
 +    deUint32                                    heapIndex,
 +    deUint32                                    localDeviceIndex,
 +    deUint32                                    remoteDeviceIndex,
 +    VkPeerMemoryFeatureFlags*                   pPeerMemoryFeatures);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdSetDeviceMask(
 +    VkCommandBuffer                             commandBuffer,
 +    deUint32                                    deviceMask);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdDispatchBase(
 +    VkCommandBuffer                             commandBuffer,
 +    deUint32                                    baseGroupX,
 +    deUint32                                    baseGroupY,
 +    deUint32                                    baseGroupZ,
 +    deUint32                                    groupCountX,
 +    deUint32                                    groupCountY,
 +    deUint32                                    groupCountZ);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDeviceGroups(
 +    VkInstance                                  instance,
 +    deUint32*                                   pPhysicalDeviceGroupCount,
 +    VkPhysicalDeviceGroupProperties*            pPhysicalDeviceGroupProperties);
 +
 +VKAPI_ATTR void VKAPI_CALL vkGetImageMemoryRequirements2(
 +    VkDevice                                    device,
 +    const VkImageMemoryRequirementsInfo2*       pInfo,
 +    VkMemoryRequirements2*                      pMemoryRequirements);
 +
 +VKAPI_ATTR void VKAPI_CALL vkGetBufferMemoryRequirements2(
 +    VkDevice                                    device,
 +    const VkBufferMemoryRequirementsInfo2*      pInfo,
 +    VkMemoryRequirements2*                      pMemoryRequirements);
 +
- VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties2(
-     VkPhysicalDevice                            physicalDevice,
-     const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
-     deUint32*                                   pPropertyCount,
-     VkSparseImageFormatProperties2*             pProperties);
 +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFeatures2(
 +    VkPhysicalDevice                            physicalDevice,
 +    VkPhysicalDeviceFeatures2*                  pFeatures);
 +
 +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceProperties2(
 +    VkPhysicalDevice                            physicalDevice,
 +    VkPhysicalDeviceProperties2*                pProperties);
 +
 +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFormatProperties2(
 +    VkPhysicalDevice                            physicalDevice,
 +    VkFormat                                    format,
 +    VkFormatProperties2*                        pFormatProperties);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceImageFormatProperties2(
 +    VkPhysicalDevice                            physicalDevice,
 +    const VkPhysicalDeviceImageFormatInfo2*     pImageFormatInfo,
 +    VkImageFormatProperties2*                   pImageFormatProperties);
 +
 +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyProperties2(
 +    VkPhysicalDevice                            physicalDevice,
 +    deUint32*                                   pQueueFamilyPropertyCount,
 +    VkQueueFamilyProperties2*                   pQueueFamilyProperties);
 +
 +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties2(
 +    VkPhysicalDevice                            physicalDevice,
 +    VkPhysicalDeviceMemoryProperties2*          pMemoryProperties);
 +
- #define VK_API_VERSION_1_2 VK_MAKE_VERSION(1, 2, 0)// Patch version should always be set to 0
 +VKAPI_ATTR void VKAPI_CALL vkGetDeviceQueue2(
 +    VkDevice                                    device,
 +    const VkDeviceQueueInfo2*                   pQueueInfo,
 +    VkQueue*                                    pQueue);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkCreateSamplerYcbcrConversion(
 +    VkDevice                                    device,
 +    const VkSamplerYcbcrConversionCreateInfo*   pCreateInfo,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkSamplerYcbcrConversion*                   pYcbcrConversion);
 +
 +VKAPI_ATTR void VKAPI_CALL vkDestroySamplerYcbcrConversion(
 +    VkDevice                                    device,
 +    VkSamplerYcbcrConversion                    ycbcrConversion,
 +    const VkAllocationCallbacks*                pAllocator);
 +
 +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalBufferProperties(
 +    VkPhysicalDevice                            physicalDevice,
 +    const VkPhysicalDeviceExternalBufferInfo*   pExternalBufferInfo,
 +    VkExternalBufferProperties*                 pExternalBufferProperties);
 +
 +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalFenceProperties(
 +    VkPhysicalDevice                            physicalDevice,
 +    const VkPhysicalDeviceExternalFenceInfo*    pExternalFenceInfo,
 +    VkExternalFenceProperties*                  pExternalFenceProperties);
 +
 +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalSemaphoreProperties(
 +    VkPhysicalDevice                            physicalDevice,
 +    const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
 +    VkExternalSemaphoreProperties*              pExternalSemaphoreProperties);
 +
 +VKAPI_ATTR void VKAPI_CALL vkGetDescriptorSetLayoutSupport(
 +    VkDevice                                    device,
 +    const VkDescriptorSetLayoutCreateInfo*      pCreateInfo,
 +    VkDescriptorSetLayoutSupport*               pSupport);
 +#endif
 +
 +
 +#define VK_VERSION_1_2 1
 +// Vulkan 1.2 version number
- #define VK_MAX_DRIVER_NAME_SIZE           256
- #define VK_MAX_DRIVER_INFO_SIZE           256
++#define VK_API_VERSION_1_2 VK_MAKE_API_VERSION(0, 1, 2, 0)// Patch version should always be set to 0
 +
- #define VK_KHR_surface 1
- VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR)
- #define VK_KHR_SURFACE_SPEC_VERSION       25
- #define VK_KHR_SURFACE_EXTENSION_NAME     "VK_KHR_surface"
++#define VK_MAX_DRIVER_NAME_SIZE           256U
++#define VK_MAX_DRIVER_INFO_SIZE           256U
 +
 +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_MESA_LLVMPIPE = 13,
 +    VK_DRIVER_ID_MOLTENVK = 14,
++    VK_DRIVER_ID_COREAVI_PROPRIETARY = 15,
 +    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_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_MAX_ENUM = 0x7FFFFFFF
 +} VkSamplerReductionMode;
 +
 +typedef enum VkSemaphoreType {
 +    VK_SEMAPHORE_TYPE_BINARY = 0,
 +    VK_SEMAPHORE_TYPE_TIMELINE = 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_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_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkDescriptorBindingFlagBits;
 +typedef VkFlags VkDescriptorBindingFlags;
 +
 +typedef enum VkSemaphoreWaitFlagBits {
 +    VK_SEMAPHORE_WAIT_ANY_BIT = 0x00000001,
 +    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
 +
 +
- typedef enum VkPresentModeKHR {
-     VK_PRESENT_MODE_IMMEDIATE_KHR = 0,
-     VK_PRESENT_MODE_MAILBOX_KHR = 1,
-     VK_PRESENT_MODE_FIFO_KHR = 2,
-     VK_PRESENT_MODE_FIFO_RELAXED_KHR = 3,
-     VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR = 1000111000,
-     VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR = 1000111001,
-     VK_PRESENT_MODE_MAX_ENUM_KHR = 0x7FFFFFFF
- } VkPresentModeKHR;
++#define VKSC_VERSION_1_0 1
++// Vulkan SC 1.0 version number
++#define VKSC_API_VERSION_1_0 VK_MAKE_API_VERSION(VKSC_API_VARIANT, 1, 0, 0)// Patch version should always be set to 0
 +
- typedef enum VkColorSpaceKHR {
-     VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0,
-     VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = 1000104001,
-     VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = 1000104002,
-     VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT = 1000104003,
-     VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT = 1000104004,
-     VK_COLOR_SPACE_BT709_LINEAR_EXT = 1000104005,
-     VK_COLOR_SPACE_BT709_NONLINEAR_EXT = 1000104006,
-     VK_COLOR_SPACE_BT2020_LINEAR_EXT = 1000104007,
-     VK_COLOR_SPACE_HDR10_ST2084_EXT = 1000104008,
-     VK_COLOR_SPACE_DOLBYVISION_EXT = 1000104009,
-     VK_COLOR_SPACE_HDR10_HLG_EXT = 1000104010,
-     VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT = 1000104011,
-     VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT = 1000104012,
-     VK_COLOR_SPACE_PASS_THROUGH_EXT = 1000104013,
 +
- #define VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION 1
++typedef enum VkFaultLevel {
++    VK_FAULT_LEVEL_UNASSIGNED = 0,
++    VK_FAULT_LEVEL_CRITICAL = 1,
++    VK_FAULT_LEVEL_RECOVERABLE = 2,
++    VK_FAULT_LEVEL_WARNING = 3,
++    VK_FAULT_LEVEL_MAX_ENUM = 0x7FFFFFFF
++} VkFaultLevel;
++
++typedef enum VkFaultType {
++    VK_FAULT_TYPE_INVALID = 0,
++    VK_FAULT_TYPE_UNASSIGNED = 1,
++    VK_FAULT_TYPE_IMPLEMENTATION = 2,
++    VK_FAULT_TYPE_SYSTEM = 3,
++    VK_FAULT_TYPE_PHYSICAL_DEVICE = 4,
++    VK_FAULT_TYPE_COMMAND_BUFFER_FULL = 5,
++    VK_FAULT_TYPE_INVALID_API_USAGE = 6,
++    VK_FAULT_TYPE_MAX_ENUM = 0x7FFFFFFF
++} VkFaultType;
++
++typedef enum VkFaultQueryBehavior {
++    VK_FAULT_QUERY_BEHAVIOR_GET_AND_CLEAR_ALL_FAULTS = 0,
++    VK_FAULT_QUERY_BEHAVIOR_MAX_ENUM = 0x7FFFFFFF
++} VkFaultQueryBehavior;
++
++typedef enum VkPipelineMatchControl {
++    VK_PIPELINE_MATCH_CONTROL_APPLICATION_UUID_EXACT_MATCH = 0,
++    VK_PIPELINE_MATCH_CONTROL_MAX_ENUM = 0x7FFFFFFF
++} VkPipelineMatchControl;
++typedef struct VkPhysicalDeviceVulkanSC10Features {
++    VkStructureType    sType;
++    void*              pNext;
++    VkBool32           pipelineIdentifier;
++    VkBool32           shaderAtomicInstructions;
++} VkPhysicalDeviceVulkanSC10Features;
++
++typedef struct VkPhysicalDeviceVulkanSC10Properties {
++    VkStructureType    sType;
++    void*              pNext;
++    VkBool32           deviceNoDynamicHostAllocations;
++    VkBool32           deviceDestroyFreesMemory;
++    VkBool32           commandPoolMultipleCommandBuffersRecording;
++    VkBool32           commandPoolResetCommandBuffer;
++    VkBool32           commandBufferSimultaneousUse;
++    VkBool32           secondaryCommandBufferNullFramebuffer;
++    VkBool32           descriptorPoolFreeDescriptorSets;
++    VkBool32           recyclePipelineMemory;
++    deUint32           maxRenderPassSubpasses;
++    deUint32           maxRenderPassDependencies;
++    deUint32           maxSubpassInputAttachments;
++    deUint32           maxSubpassPreserveAttachments;
++    deUint32           maxFramebufferAttachments;
++    deUint32           maxDescriptorSetLayoutBindings;
++    deUint32           maxQueryFaultCount;
++    deUint32           maxCallbackFaultCount;
++} VkPhysicalDeviceVulkanSC10Properties;
++
++typedef struct VkPipelinePoolSize {
++    VkStructureType    sType;
++    const void*        pNext;
++    VkDeviceSize       poolEntrySize;
++    deUint32           poolEntryCount;
++} VkPipelinePoolSize;
++
++typedef struct VkDeviceObjectReservationCreateInfo {
++    VkStructureType                     sType;
++    const void*                         pNext;
++    deUint32                            pipelineCacheCreateInfoCount;
++    const VkPipelineCacheCreateInfo*    pPipelineCacheCreateInfos;
++    deUint32                            pipelinePoolSizeCount;
++    const VkPipelinePoolSize*           pPipelinePoolSizes;
++    deUint32                            semaphoreRequestCount;
++    deUint32                            commandBufferRequestCount;
++    deUint32                            fenceRequestCount;
++    deUint32                            deviceMemoryRequestCount;
++    deUint32                            bufferRequestCount;
++    deUint32                            imageRequestCount;
++    deUint32                            eventRequestCount;
++    deUint32                            queryPoolRequestCount;
++    deUint32                            bufferViewRequestCount;
++    deUint32                            imageViewRequestCount;
++    deUint32                            layeredImageViewRequestCount;
++    deUint32                            pipelineCacheRequestCount;
++    deUint32                            pipelineLayoutRequestCount;
++    deUint32                            renderPassRequestCount;
++    deUint32                            graphicsPipelineRequestCount;
++    deUint32                            computePipelineRequestCount;
++    deUint32                            descriptorSetLayoutRequestCount;
++    deUint32                            samplerRequestCount;
++    deUint32                            descriptorPoolRequestCount;
++    deUint32                            descriptorSetRequestCount;
++    deUint32                            framebufferRequestCount;
++    deUint32                            commandPoolRequestCount;
++    deUint32                            samplerYcbcrConversionRequestCount;
++    deUint32                            surfaceRequestCount;
++    deUint32                            swapchainRequestCount;
++    deUint32                            displayModeRequestCount;
++    deUint32                            subpassDescriptionRequestCount;
++    deUint32                            attachmentDescriptionRequestCount;
++    deUint32                            descriptorSetLayoutBindingRequestCount;
++    deUint32                            descriptorSetLayoutBindingLimit;
++    deUint32                            maxImageViewMipLevels;
++    deUint32                            maxImageViewArrayLayers;
++    deUint32                            maxLayeredImageViewMipLevels;
++    deUint32                            maxOcclusionQueriesPerPool;
++    deUint32                            maxPipelineStatisticsQueriesPerPool;
++    deUint32                            maxTimestampQueriesPerPool;
++} VkDeviceObjectReservationCreateInfo;
++
++typedef struct VkCommandPoolMemoryReservationCreateInfo {
++    VkStructureType    sType;
++    const void*        pNext;
++    VkDeviceSize       commandPoolReservedSize;
++    deUint32           commandPoolMaxCommandBuffers;
++} VkCommandPoolMemoryReservationCreateInfo;
++
++typedef struct VkCommandPoolMemoryConsumption {
++    VkStructureType    sType;
++    void*              pNext;
++    VkDeviceSize       commandPoolAllocated;
++    VkDeviceSize       commandPoolReservedSize;
++    VkDeviceSize       commandBufferAllocated;
++} VkCommandPoolMemoryConsumption;
++
++typedef struct VkPipelinePoolEntrySizeCreateInfo {
++    VkStructureType    sType;
++    const void*        pNext;
++    VkDeviceSize       poolEntrySize;
++} VkPipelinePoolEntrySizeCreateInfo;
++
++typedef struct VkFaultData {
++    VkStructureType    sType;
++    void*              pNext;
++    VkFaultLevel       faultLevel;
++    VkFaultType        faultType;
++} VkFaultData;
++
++typedef void (VKAPI_PTR *PFN_vkFaultCallbackFunction)(
++    VkBool32                                    unrecordedFaults,
++    deUint32                                    faultCount,
++    const VkFaultData*                          pFaults);
++
++typedef struct VkFaultCallbackInfo {
++    VkStructureType                sType;
++    void*                          pNext;
++    VkFaultData*                   pFaults;
++    PFN_vkFaultCallbackFunction    pfnFaultCallback;
++} VkFaultCallbackInfo;
++
++typedef struct VkPipelineIdentifierInfo {
++    VkStructureType           sType;
++    const void*               pNext;
++    deUint8                   pipelineIdentifier[VK_UUID_SIZE];
++    VkPipelineMatchControl    matchControl;
++} VkPipelineIdentifierInfo;
++
++typedef void (VKAPI_PTR *PFN_vkGetCommandPoolMemoryConsumption)(VkDevice device, VkCommandPool commandPool, VkCommandBuffer commandBuffer, VkCommandPoolMemoryConsumption* pConsumption);
++typedef VkResult (VKAPI_PTR *PFN_vkGetFaultData)(VkDevice device, VkFaultQueryBehavior faultQueryBehavior, VkBool32* pUnrecordedFaults, deUint32* pFaultCount, VkFaultData* pFaults);
++
++#ifndef VK_NO_PROTOTYPES
++VKAPI_ATTR void VKAPI_CALL vkGetCommandPoolMemoryConsumption(
++    VkDevice                                    device,
++    VkCommandPool                               commandPool,
++    VkCommandBuffer                             commandBuffer,
++    VkCommandPoolMemoryConsumption*             pConsumption);
++
++VKAPI_ATTR VkResult VKAPI_CALL vkGetFaultData(
++    VkDevice                                    device,
++    VkFaultQueryBehavior                        faultQueryBehavior,
++    VkBool32*                                   pUnrecordedFaults,
++    deUint32*                                   pFaultCount,
++    VkFaultData*                                pFaults);
++#endif
++
++
++#define VK_KHR_surface 1
++VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR)
++#define VK_KHR_SURFACE_SPEC_VERSION       25
++#define VK_KHR_SURFACE_EXTENSION_NAME     "VK_KHR_surface"
++
++typedef enum VkPresentModeKHR {
++    VK_PRESENT_MODE_IMMEDIATE_KHR = 0,
++    VK_PRESENT_MODE_MAILBOX_KHR = 1,
++    VK_PRESENT_MODE_FIFO_KHR = 2,
++    VK_PRESENT_MODE_FIFO_RELAXED_KHR = 3,
++    VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR = 1000111000,
++    VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR = 1000111001,
++    VK_PRESENT_MODE_MAX_ENUM_KHR = 0x7FFFFFFF
++} VkPresentModeKHR;
++
++typedef enum VkColorSpaceKHR {
++    VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0,
++    VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = 1000104001,
++    VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = 1000104002,
++    VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT = 1000104003,
++    VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT = 1000104004,
++    VK_COLOR_SPACE_BT709_LINEAR_EXT = 1000104005,
++    VK_COLOR_SPACE_BT709_NONLINEAR_EXT = 1000104006,
++    VK_COLOR_SPACE_BT2020_LINEAR_EXT = 1000104007,
++    VK_COLOR_SPACE_HDR10_ST2084_EXT = 1000104008,
++    VK_COLOR_SPACE_DOLBYVISION_EXT = 1000104009,
++    VK_COLOR_SPACE_HDR10_HLG_EXT = 1000104010,
++    VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT = 1000104011,
++    VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT = 1000104012,
++    VK_COLOR_SPACE_PASS_THROUGH_EXT = 1000104013,
 +    VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT = 1000104014,
 +    VK_COLORSPACE_SRGB_NONLINEAR_KHR = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR,
 +    VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT,
 +    VK_COLOR_SPACE_MAX_ENUM_KHR = 0x7FFFFFFF
 +} VkColorSpaceKHR;
 +
 +typedef enum VkSurfaceTransformFlagBitsKHR {
 +    VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 0x00000001,
 +    VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 0x00000002,
 +    VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 0x00000004,
 +    VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 0x00000008,
 +    VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 0x00000010,
 +    VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = 0x00000020,
 +    VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = 0x00000040,
 +    VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = 0x00000080,
 +    VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 0x00000100,
 +    VK_SURFACE_TRANSFORM_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
 +} VkSurfaceTransformFlagBitsKHR;
 +
 +typedef enum VkCompositeAlphaFlagBitsKHR {
 +    VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 0x00000001,
 +    VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 0x00000002,
 +    VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 0x00000004,
 +    VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 0x00000008,
 +    VK_COMPOSITE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
 +} VkCompositeAlphaFlagBitsKHR;
 +typedef VkFlags VkCompositeAlphaFlagsKHR;
 +typedef VkFlags VkSurfaceTransformFlagsKHR;
 +typedef struct VkSurfaceCapabilitiesKHR {
 +    deUint32                         minImageCount;
 +    deUint32                         maxImageCount;
 +    VkExtent2D                       currentExtent;
 +    VkExtent2D                       minImageExtent;
 +    VkExtent2D                       maxImageExtent;
 +    deUint32                         maxImageArrayLayers;
 +    VkSurfaceTransformFlagsKHR       supportedTransforms;
 +    VkSurfaceTransformFlagBitsKHR    currentTransform;
 +    VkCompositeAlphaFlagsKHR         supportedCompositeAlpha;
 +    VkImageUsageFlags                supportedUsageFlags;
 +} VkSurfaceCapabilitiesKHR;
 +
 +typedef struct VkSurfaceFormatKHR {
 +    VkFormat           format;
 +    VkColorSpaceKHR    colorSpace;
 +} VkSurfaceFormatKHR;
 +
 +typedef void (VKAPI_PTR *PFN_vkDestroySurfaceKHR)(VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks* pAllocator);
 +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceSupportKHR)(VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported);
 +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities);
 +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceFormatsKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats);
 +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfacePresentModesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pPresentModeCount, VkPresentModeKHR* pPresentModes);
 +
 +#ifndef VK_NO_PROTOTYPES
 +VKAPI_ATTR void VKAPI_CALL vkDestroySurfaceKHR(
 +    VkInstance                                  instance,
 +    VkSurfaceKHR                                surface,
 +    const VkAllocationCallbacks*                pAllocator);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceSupportKHR(
 +    VkPhysicalDevice                            physicalDevice,
 +    deUint32                                    queueFamilyIndex,
 +    VkSurfaceKHR                                surface,
 +    VkBool32*                                   pSupported);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
 +    VkPhysicalDevice                            physicalDevice,
 +    VkSurfaceKHR                                surface,
 +    VkSurfaceCapabilitiesKHR*                   pSurfaceCapabilities);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceFormatsKHR(
 +    VkPhysicalDevice                            physicalDevice,
 +    VkSurfaceKHR                                surface,
 +    deUint32*                                   pSurfaceFormatCount,
 +    VkSurfaceFormatKHR*                         pSurfaceFormats);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfacePresentModesKHR(
 +    VkPhysicalDevice                            physicalDevice,
 +    VkSurfaceKHR                                surface,
 +    deUint32*                                   pPresentModeCount,
 +    VkPresentModeKHR*                           pPresentModes);
 +#endif
 +
 +
 +#define VK_KHR_swapchain 1
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSwapchainKHR)
 +#define VK_KHR_SWAPCHAIN_SPEC_VERSION     70
 +#define VK_KHR_SWAPCHAIN_EXTENSION_NAME   "VK_KHR_swapchain"
 +
 +typedef enum VkSwapchainCreateFlagBitsKHR {
 +    VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 0x00000001,
 +    VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 0x00000002,
 +    VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR = 0x00000004,
 +    VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
 +} VkSwapchainCreateFlagBitsKHR;
 +typedef VkFlags VkSwapchainCreateFlagsKHR;
 +
 +typedef enum VkDeviceGroupPresentModeFlagBitsKHR {
 +    VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR = 0x00000001,
 +    VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR = 0x00000002,
 +    VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR = 0x00000004,
 +    VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR = 0x00000008,
 +    VK_DEVICE_GROUP_PRESENT_MODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
 +} VkDeviceGroupPresentModeFlagBitsKHR;
 +typedef VkFlags VkDeviceGroupPresentModeFlagsKHR;
 +typedef struct VkSwapchainCreateInfoKHR {
 +    VkStructureType                  sType;
 +    const void*                      pNext;
 +    VkSwapchainCreateFlagsKHR        flags;
 +    VkSurfaceKHR                     surface;
 +    deUint32                         minImageCount;
 +    VkFormat                         imageFormat;
 +    VkColorSpaceKHR                  imageColorSpace;
 +    VkExtent2D                       imageExtent;
 +    deUint32                         imageArrayLayers;
 +    VkImageUsageFlags                imageUsage;
 +    VkSharingMode                    imageSharingMode;
 +    deUint32                         queueFamilyIndexCount;
 +    const deUint32*                  pQueueFamilyIndices;
 +    VkSurfaceTransformFlagBitsKHR    preTransform;
 +    VkCompositeAlphaFlagBitsKHR      compositeAlpha;
 +    VkPresentModeKHR                 presentMode;
 +    VkBool32                         clipped;
 +    VkSwapchainKHR                   oldSwapchain;
 +} VkSwapchainCreateInfoKHR;
 +
 +typedef struct VkPresentInfoKHR {
 +    VkStructureType          sType;
 +    const void*              pNext;
 +    deUint32                 waitSemaphoreCount;
 +    const VkSemaphore*       pWaitSemaphores;
 +    deUint32                 swapchainCount;
 +    const VkSwapchainKHR*    pSwapchains;
 +    const deUint32*          pImageIndices;
 +    VkResult*                pResults;
 +} VkPresentInfoKHR;
 +
 +typedef struct VkImageSwapchainCreateInfoKHR {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    VkSwapchainKHR     swapchain;
 +} VkImageSwapchainCreateInfoKHR;
 +
 +typedef struct VkBindImageMemorySwapchainInfoKHR {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    VkSwapchainKHR     swapchain;
 +    deUint32           imageIndex;
 +} VkBindImageMemorySwapchainInfoKHR;
 +
 +typedef struct VkAcquireNextImageInfoKHR {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    VkSwapchainKHR     swapchain;
 +    deUint64           timeout;
 +    VkSemaphore        semaphore;
 +    VkFence            fence;
 +    deUint32           deviceMask;
 +} VkAcquireNextImageInfoKHR;
 +
 +typedef struct VkDeviceGroupPresentCapabilitiesKHR {
 +    VkStructureType                     sType;
 +    const void*                         pNext;
 +    deUint32                            presentMask[VK_MAX_DEVICE_GROUP_SIZE];
 +    VkDeviceGroupPresentModeFlagsKHR    modes;
 +} VkDeviceGroupPresentCapabilitiesKHR;
 +
 +typedef struct VkDeviceGroupPresentInfoKHR {
 +    VkStructureType                        sType;
 +    const void*                            pNext;
 +    deUint32                               swapchainCount;
 +    const deUint32*                        pDeviceMasks;
 +    VkDeviceGroupPresentModeFlagBitsKHR    mode;
 +} VkDeviceGroupPresentInfoKHR;
 +
 +typedef struct VkDeviceGroupSwapchainCreateInfoKHR {
 +    VkStructureType                     sType;
 +    const void*                         pNext;
 +    VkDeviceGroupPresentModeFlagsKHR    modes;
 +} VkDeviceGroupSwapchainCreateInfoKHR;
 +
 +typedef VkResult (VKAPI_PTR *PFN_vkCreateSwapchainKHR)(VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain);
 +typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainImagesKHR)(VkDevice device, VkSwapchainKHR swapchain, deUint32* pSwapchainImageCount, VkImage* pSwapchainImages);
 +typedef VkResult (VKAPI_PTR *PFN_vkAcquireNextImageKHR)(VkDevice device, VkSwapchainKHR swapchain, deUint64 timeout, VkSemaphore semaphore, VkFence fence, deUint32* pImageIndex);
 +typedef VkResult (VKAPI_PTR *PFN_vkQueuePresentKHR)(VkQueue queue, const VkPresentInfoKHR* pPresentInfo);
 +typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceGroupPresentCapabilitiesKHR)(VkDevice device, VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities);
 +typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceGroupSurfacePresentModesKHR)(VkDevice device, VkSurfaceKHR surface, VkDeviceGroupPresentModeFlagsKHR* pModes);
 +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDevicePresentRectanglesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pRectCount, VkRect2D* pRects);
 +typedef VkResult (VKAPI_PTR *PFN_vkAcquireNextImage2KHR)(VkDevice device, const VkAcquireNextImageInfoKHR* pAcquireInfo, deUint32* pImageIndex);
 +
 +#ifndef VK_NO_PROTOTYPES
 +VKAPI_ATTR VkResult VKAPI_CALL vkCreateSwapchainKHR(
 +    VkDevice                                    device,
 +    const VkSwapchainCreateInfoKHR*             pCreateInfo,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkSwapchainKHR*                             pSwapchain);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainImagesKHR(
 +    VkDevice                                    device,
 +    VkSwapchainKHR                              swapchain,
 +    deUint32*                                   pSwapchainImageCount,
 +    VkImage*                                    pSwapchainImages);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkAcquireNextImageKHR(
 +    VkDevice                                    device,
 +    VkSwapchainKHR                              swapchain,
 +    deUint64                                    timeout,
 +    VkSemaphore                                 semaphore,
 +    VkFence                                     fence,
 +    deUint32*                                   pImageIndex);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkQueuePresentKHR(
 +    VkQueue                                     queue,
 +    const VkPresentInfoKHR*                     pPresentInfo);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceGroupPresentCapabilitiesKHR(
 +    VkDevice                                    device,
 +    VkDeviceGroupPresentCapabilitiesKHR*        pDeviceGroupPresentCapabilities);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceGroupSurfacePresentModesKHR(
 +    VkDevice                                    device,
 +    VkSurfaceKHR                                surface,
 +    VkDeviceGroupPresentModeFlagsKHR*           pModes);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDevicePresentRectanglesKHR(
 +    VkPhysicalDevice                            physicalDevice,
 +    VkSurfaceKHR                                surface,
 +    deUint32*                                   pRectCount,
 +    VkRect2D*                                   pRects);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkAcquireNextImage2KHR(
 +    VkDevice                                    device,
 +    const VkAcquireNextImageInfoKHR*            pAcquireInfo,
 +    deUint32*                                   pImageIndex);
 +#endif
 +
 +
 +#define VK_KHR_display 1
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayKHR)
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayModeKHR)
 +#define VK_KHR_DISPLAY_SPEC_VERSION       23
 +#define VK_KHR_DISPLAY_EXTENSION_NAME     "VK_KHR_display"
 +typedef VkFlags VkDisplayModeCreateFlagsKHR;
 +
 +typedef enum VkDisplayPlaneAlphaFlagBitsKHR {
 +    VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = 0x00000001,
 +    VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 0x00000002,
 +    VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 0x00000004,
 +    VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 0x00000008,
 +    VK_DISPLAY_PLANE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
 +} VkDisplayPlaneAlphaFlagBitsKHR;
 +typedef VkFlags VkDisplayPlaneAlphaFlagsKHR;
 +typedef VkFlags VkDisplaySurfaceCreateFlagsKHR;
 +typedef struct VkDisplayModeParametersKHR {
 +    VkExtent2D    visibleRegion;
 +    deUint32      refreshRate;
 +} VkDisplayModeParametersKHR;
 +
 +typedef struct VkDisplayModeCreateInfoKHR {
 +    VkStructureType                sType;
 +    const void*                    pNext;
 +    VkDisplayModeCreateFlagsKHR    flags;
 +    VkDisplayModeParametersKHR     parameters;
 +} VkDisplayModeCreateInfoKHR;
 +
 +typedef struct VkDisplayModePropertiesKHR {
 +    VkDisplayModeKHR              displayMode;
 +    VkDisplayModeParametersKHR    parameters;
 +} VkDisplayModePropertiesKHR;
 +
 +typedef struct VkDisplayPlaneCapabilitiesKHR {
 +    VkDisplayPlaneAlphaFlagsKHR    supportedAlpha;
 +    VkOffset2D                     minSrcPosition;
 +    VkOffset2D                     maxSrcPosition;
 +    VkExtent2D                     minSrcExtent;
 +    VkExtent2D                     maxSrcExtent;
 +    VkOffset2D                     minDstPosition;
 +    VkOffset2D                     maxDstPosition;
 +    VkExtent2D                     minDstExtent;
 +    VkExtent2D                     maxDstExtent;
 +} VkDisplayPlaneCapabilitiesKHR;
 +
 +typedef struct VkDisplayPlanePropertiesKHR {
 +    VkDisplayKHR    currentDisplay;
 +    deUint32        currentStackIndex;
 +} VkDisplayPlanePropertiesKHR;
 +
 +typedef struct VkDisplayPropertiesKHR {
 +    VkDisplayKHR                  display;
 +    const char*                   displayName;
 +    VkExtent2D                    physicalDimensions;
 +    VkExtent2D                    physicalResolution;
 +    VkSurfaceTransformFlagsKHR    supportedTransforms;
 +    VkBool32                      planeReorderPossible;
 +    VkBool32                      persistentContent;
 +} VkDisplayPropertiesKHR;
 +
 +typedef struct VkDisplaySurfaceCreateInfoKHR {
 +    VkStructureType                   sType;
 +    const void*                       pNext;
 +    VkDisplaySurfaceCreateFlagsKHR    flags;
 +    VkDisplayModeKHR                  displayMode;
 +    deUint32                          planeIndex;
 +    deUint32                          planeStackIndex;
 +    VkSurfaceTransformFlagBitsKHR     transform;
 +    float                             globalAlpha;
 +    VkDisplayPlaneAlphaFlagBitsKHR    alphaMode;
 +    VkExtent2D                        imageExtent;
 +} VkDisplaySurfaceCreateInfoKHR;
 +
 +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPropertiesKHR)(VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPropertiesKHR* pProperties);
 +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR)(VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties);
 +typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneSupportedDisplaysKHR)(VkPhysicalDevice physicalDevice, deUint32 planeIndex, deUint32* pDisplayCount, VkDisplayKHR* pDisplays);
 +typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayModePropertiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, deUint32* pPropertyCount, VkDisplayModePropertiesKHR* pProperties);
 +typedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayModeKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDisplayModeKHR* pMode);
 +typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, deUint32 planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities);
 +typedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayPlaneSurfaceKHR)(VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
 +
 +#ifndef VK_NO_PROTOTYPES
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPropertiesKHR(
 +    VkPhysicalDevice                            physicalDevice,
 +    deUint32*                                   pPropertyCount,
 +    VkDisplayPropertiesKHR*                     pProperties);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
 +    VkPhysicalDevice                            physicalDevice,
 +    deUint32*                                   pPropertyCount,
 +    VkDisplayPlanePropertiesKHR*                pProperties);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneSupportedDisplaysKHR(
 +    VkPhysicalDevice                            physicalDevice,
 +    deUint32                                    planeIndex,
 +    deUint32*                                   pDisplayCount,
 +    VkDisplayKHR*                               pDisplays);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayModePropertiesKHR(
 +    VkPhysicalDevice                            physicalDevice,
 +    VkDisplayKHR                                display,
 +    deUint32*                                   pPropertyCount,
 +    VkDisplayModePropertiesKHR*                 pProperties);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkCreateDisplayModeKHR(
 +    VkPhysicalDevice                            physicalDevice,
 +    VkDisplayKHR                                display,
 +    const VkDisplayModeCreateInfoKHR*           pCreateInfo,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkDisplayModeKHR*                           pMode);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneCapabilitiesKHR(
 +    VkPhysicalDevice                            physicalDevice,
 +    VkDisplayModeKHR                            mode,
 +    deUint32                                    planeIndex,
 +    VkDisplayPlaneCapabilitiesKHR*              pCapabilities);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkCreateDisplayPlaneSurfaceKHR(
 +    VkInstance                                  instance,
 +    const VkDisplaySurfaceCreateInfoKHR*        pCreateInfo,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkSurfaceKHR*                               pSurface);
 +#endif
 +
 +
 +#define VK_KHR_display_swapchain 1
 +#define VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION 10
 +#define VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME "VK_KHR_display_swapchain"
 +typedef struct VkDisplayPresentInfoKHR {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    VkRect2D           srcRect;
 +    VkRect2D           dstRect;
 +    VkBool32           persistent;
 +} VkDisplayPresentInfoKHR;
 +
 +typedef VkResult (VKAPI_PTR *PFN_vkCreateSharedSwapchainsKHR)(VkDevice device, deUint32 swapchainCount, const VkSwapchainCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchains);
 +
 +#ifndef VK_NO_PROTOTYPES
 +VKAPI_ATTR VkResult VKAPI_CALL vkCreateSharedSwapchainsKHR(
 +    VkDevice                                    device,
 +    deUint32                                    swapchainCount,
 +    const VkSwapchainCreateInfoKHR*             pCreateInfos,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkSwapchainKHR*                             pSwapchains);
 +#endif
 +
 +
 +#define VK_KHR_external_memory_fd 1
 +#define VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION 1
 +#define VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME "VK_KHR_external_memory_fd"
 +typedef struct VkImportMemoryFdInfoKHR {
 +    VkStructureType                       sType;
 +    const void*                           pNext;
 +    VkExternalMemoryHandleTypeFlagBits    handleType;
 +    int                                   fd;
 +} VkImportMemoryFdInfoKHR;
 +
 +typedef struct VkMemoryFdPropertiesKHR {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    deUint32           memoryTypeBits;
 +} VkMemoryFdPropertiesKHR;
 +
 +typedef struct VkMemoryGetFdInfoKHR {
 +    VkStructureType                       sType;
 +    const void*                           pNext;
 +    VkDeviceMemory                        memory;
 +    VkExternalMemoryHandleTypeFlagBits    handleType;
 +} VkMemoryGetFdInfoKHR;
 +
 +typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryFdKHR)(VkDevice device, const VkMemoryGetFdInfoKHR* pGetFdInfo, int* pFd);
 +typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryFdPropertiesKHR)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, int fd, VkMemoryFdPropertiesKHR* pMemoryFdProperties);
 +
 +#ifndef VK_NO_PROTOTYPES
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryFdKHR(
 +    VkDevice                                    device,
 +    const VkMemoryGetFdInfoKHR*                 pGetFdInfo,
 +    int*                                        pFd);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryFdPropertiesKHR(
 +    VkDevice                                    device,
 +    VkExternalMemoryHandleTypeFlagBits          handleType,
 +    int                                         fd,
 +    VkMemoryFdPropertiesKHR*                    pMemoryFdProperties);
 +#endif
 +
 +
 +#define VK_KHR_external_semaphore_fd 1
 +#define VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION 1
 +#define VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME "VK_KHR_external_semaphore_fd"
 +typedef struct VkImportSemaphoreFdInfoKHR {
 +    VkStructureType                          sType;
 +    const void*                              pNext;
 +    VkSemaphore                              semaphore;
 +    VkSemaphoreImportFlags                   flags;
 +    VkExternalSemaphoreHandleTypeFlagBits    handleType;
 +    int                                      fd;
 +} VkImportSemaphoreFdInfoKHR;
 +
 +typedef struct VkSemaphoreGetFdInfoKHR {
 +    VkStructureType                          sType;
 +    const void*                              pNext;
 +    VkSemaphore                              semaphore;
 +    VkExternalSemaphoreHandleTypeFlagBits    handleType;
 +} VkSemaphoreGetFdInfoKHR;
 +
 +typedef VkResult (VKAPI_PTR *PFN_vkImportSemaphoreFdKHR)(VkDevice device, const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo);
 +typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreFdKHR)(VkDevice device, const VkSemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd);
 +
 +#ifndef VK_NO_PROTOTYPES
 +VKAPI_ATTR VkResult VKAPI_CALL vkImportSemaphoreFdKHR(
 +    VkDevice                                    device,
 +    const VkImportSemaphoreFdInfoKHR*           pImportSemaphoreFdInfo);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreFdKHR(
 +    VkDevice                                    device,
 +    const VkSemaphoreGetFdInfoKHR*              pGetFdInfo,
 +    int*                                        pFd);
 +#endif
 +
 +
 +#define VK_KHR_incremental_present 1
- #define VK_KHR_fault_handling 1
- #define VK_KHR_FAULT_HANDLING_SPEC_VERSION 1
- #define VK_KHR_FAULT_HANDLING_EXTENSION_NAME "VK_KHR_fault_handling"
- typedef VkFaultLevel VkFaultLevelKHR;
- typedef VkFaultType VkFaultTypeKHR;
- typedef VkFaultQueryBehavior VkFaultQueryBehaviorKHR;
- typedef VkFaultData VkFaultDataKHR;
- typedef VkFaultCallbackInfo VkFaultCallbackInfoKHR;
- typedef PFN_vkFaultCallbackFunction PFN_vkFaultCallbackFunctionKHR;
- typedef VkPhysicalDeviceFaultHandlingProperties VkPhysicalDeviceFaultHandlingPropertiesKHR;
- typedef VkResult (VKAPI_PTR *PFN_vkGetFaultDataKHR)(VkDevice device, VkFaultQueryBehavior faultQueryBehavior, VkBool32* pUnrecordedFaults, deUint32* pFaultCount, VkFaultData* pFaults);
- #ifndef VK_NO_PROTOTYPES
- VKAPI_ATTR VkResult VKAPI_CALL vkGetFaultDataKHR(
-     VkDevice                                    device,
-     VkFaultQueryBehavior                        faultQueryBehavior,
-     VkBool32*                                   pUnrecordedFaults,
-     deUint32*                                   pFaultCount,
-     VkFaultData*                                pFaults);
- #endif
++#define VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION 2
 +#define VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME "VK_KHR_incremental_present"
 +typedef struct VkRectLayerKHR {
 +    VkOffset2D    offset;
 +    VkExtent2D    extent;
 +    deUint32      layer;
 +} VkRectLayerKHR;
 +
 +typedef struct VkPresentRegionKHR {
 +    deUint32                 rectangleCount;
 +    const VkRectLayerKHR*    pRectangles;
 +} VkPresentRegionKHR;
 +
 +typedef struct VkPresentRegionsKHR {
 +    VkStructureType              sType;
 +    const void*                  pNext;
 +    deUint32                     swapchainCount;
 +    const VkPresentRegionKHR*    pRegions;
 +} VkPresentRegionsKHR;
 +
 +
 +
 +#define VK_KHR_shared_presentable_image 1
 +#define VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION 1
 +#define VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME "VK_KHR_shared_presentable_image"
 +typedef struct VkSharedPresentSurfaceCapabilitiesKHR {
 +    VkStructureType      sType;
 +    void*                pNext;
 +    VkImageUsageFlags    sharedPresentSupportedUsageFlags;
 +} VkSharedPresentSurfaceCapabilitiesKHR;
 +
 +typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainStatusKHR)(VkDevice device, VkSwapchainKHR swapchain);
 +
 +#ifndef VK_NO_PROTOTYPES
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainStatusKHR(
 +    VkDevice                                    device,
 +    VkSwapchainKHR                              swapchain);
 +#endif
 +
 +
 +#define VK_KHR_external_fence_fd 1
 +#define VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION 1
 +#define VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME "VK_KHR_external_fence_fd"
 +typedef struct VkImportFenceFdInfoKHR {
 +    VkStructureType                      sType;
 +    const void*                          pNext;
 +    VkFence                              fence;
 +    VkFenceImportFlags                   flags;
 +    VkExternalFenceHandleTypeFlagBits    handleType;
 +    int                                  fd;
 +} VkImportFenceFdInfoKHR;
 +
 +typedef struct VkFenceGetFdInfoKHR {
 +    VkStructureType                      sType;
 +    const void*                          pNext;
 +    VkFence                              fence;
 +    VkExternalFenceHandleTypeFlagBits    handleType;
 +} VkFenceGetFdInfoKHR;
 +
 +typedef VkResult (VKAPI_PTR *PFN_vkImportFenceFdKHR)(VkDevice device, const VkImportFenceFdInfoKHR* pImportFenceFdInfo);
 +typedef VkResult (VKAPI_PTR *PFN_vkGetFenceFdKHR)(VkDevice device, const VkFenceGetFdInfoKHR* pGetFdInfo, int* pFd);
 +
 +#ifndef VK_NO_PROTOTYPES
 +VKAPI_ATTR VkResult VKAPI_CALL vkImportFenceFdKHR(
 +    VkDevice                                    device,
 +    const VkImportFenceFdInfoKHR*               pImportFenceFdInfo);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceFdKHR(
 +    VkDevice                                    device,
 +    const VkFenceGetFdInfoKHR*                  pGetFdInfo,
 +    int*                                        pFd);
 +#endif
 +
 +
++#define VK_KHR_performance_query 1
++#define VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION 1
++#define VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME "VK_KHR_performance_query"
++
++typedef enum VkPerformanceCounterUnitKHR {
++    VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR = 0,
++    VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR = 1,
++    VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR = 2,
++    VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR = 3,
++    VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR = 4,
++    VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR = 5,
++    VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR = 6,
++    VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR = 7,
++    VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR = 8,
++    VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR = 9,
++    VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR = 10,
++    VK_PERFORMANCE_COUNTER_UNIT_MAX_ENUM_KHR = 0x7FFFFFFF
++} VkPerformanceCounterUnitKHR;
++
++typedef enum VkPerformanceCounterScopeKHR {
++    VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR = 0,
++    VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR = 1,
++    VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR = 2,
++    VK_QUERY_SCOPE_COMMAND_BUFFER_KHR = VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR,
++    VK_QUERY_SCOPE_RENDER_PASS_KHR = VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR,
++    VK_QUERY_SCOPE_COMMAND_KHR = VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR,
++    VK_PERFORMANCE_COUNTER_SCOPE_MAX_ENUM_KHR = 0x7FFFFFFF
++} VkPerformanceCounterScopeKHR;
++
++typedef enum VkPerformanceCounterStorageKHR {
++    VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR = 0,
++    VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR = 1,
++    VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR = 2,
++    VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR = 3,
++    VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR = 4,
++    VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR = 5,
++    VK_PERFORMANCE_COUNTER_STORAGE_MAX_ENUM_KHR = 0x7FFFFFFF
++} VkPerformanceCounterStorageKHR;
++
++typedef enum VkPerformanceCounterDescriptionFlagBitsKHR {
++    VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR = 0x00000001,
++    VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR = 0x00000002,
++    VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR = VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR,
++    VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR = VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR,
++    VK_PERFORMANCE_COUNTER_DESCRIPTION_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
++} VkPerformanceCounterDescriptionFlagBitsKHR;
++typedef VkFlags VkPerformanceCounterDescriptionFlagsKHR;
++
++typedef enum VkAcquireProfilingLockFlagBitsKHR {
++    VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
++} VkAcquireProfilingLockFlagBitsKHR;
++typedef VkFlags VkAcquireProfilingLockFlagsKHR;
++typedef struct VkPhysicalDevicePerformanceQueryFeaturesKHR {
++    VkStructureType    sType;
++    void*              pNext;
++    VkBool32           performanceCounterQueryPools;
++    VkBool32           performanceCounterMultipleQueryPools;
++} VkPhysicalDevicePerformanceQueryFeaturesKHR;
++
++typedef struct VkPhysicalDevicePerformanceQueryPropertiesKHR {
++    VkStructureType    sType;
++    void*              pNext;
++    VkBool32           allowCommandBufferQueryCopies;
++} VkPhysicalDevicePerformanceQueryPropertiesKHR;
++
++typedef struct VkPerformanceCounterKHR {
++    VkStructureType                   sType;
++    const void*                       pNext;
++    VkPerformanceCounterUnitKHR       unit;
++    VkPerformanceCounterScopeKHR      scope;
++    VkPerformanceCounterStorageKHR    storage;
++    deUint8                           uuid[VK_UUID_SIZE];
++} VkPerformanceCounterKHR;
++
++typedef struct VkPerformanceCounterDescriptionKHR {
++    VkStructureType                            sType;
++    const void*                                pNext;
++    VkPerformanceCounterDescriptionFlagsKHR    flags;
++    char                                       name[VK_MAX_DESCRIPTION_SIZE];
++    char                                       category[VK_MAX_DESCRIPTION_SIZE];
++    char                                       description[VK_MAX_DESCRIPTION_SIZE];
++} VkPerformanceCounterDescriptionKHR;
++
++typedef struct VkQueryPoolPerformanceCreateInfoKHR {
++    VkStructureType    sType;
++    const void*        pNext;
++    deUint32           queueFamilyIndex;
++    deUint32           counterIndexCount;
++    const deUint32*    pCounterIndices;
++} VkQueryPoolPerformanceCreateInfoKHR;
++
++typedef union VkPerformanceCounterResultKHR {
++    deInt32     int32;
++    deInt64     int64;
++    deUint32    uint32;
++    deUint64    uint64;
++    float       float32;
++    double      float64;
++} VkPerformanceCounterResultKHR;
++
++typedef struct VkAcquireProfilingLockInfoKHR {
++    VkStructureType                   sType;
++    const void*                       pNext;
++    VkAcquireProfilingLockFlagsKHR    flags;
++    deUint64                          timeout;
++} VkAcquireProfilingLockInfoKHR;
++
++typedef struct VkPerformanceQuerySubmitInfoKHR {
++    VkStructureType    sType;
++    const void*        pNext;
++    deUint32           counterPassIndex;
++} VkPerformanceQuerySubmitInfoKHR;
++
++typedef struct VkPerformanceQueryReservationInfoKHR {
++    VkStructureType    sType;
++    const void*        pNext;
++    deUint32           maxPerformanceQueriesPerPool;
++} VkPerformanceQueryReservationInfoKHR;
++
++typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR)(VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, deUint32* pCounterCount, VkPerformanceCounterKHR* pCounters, VkPerformanceCounterDescriptionKHR* pCounterDescriptions);
++typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR)(VkPhysicalDevice physicalDevice, const VkQueryPoolPerformanceCreateInfoKHR* pPerformanceQueryCreateInfo, deUint32* pNumPasses);
++typedef VkResult (VKAPI_PTR *PFN_vkAcquireProfilingLockKHR)(VkDevice device, const VkAcquireProfilingLockInfoKHR* pInfo);
++typedef void (VKAPI_PTR *PFN_vkReleaseProfilingLockKHR)(VkDevice device);
++
++#ifndef VK_NO_PROTOTYPES
++VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(
++    VkPhysicalDevice                            physicalDevice,
++    deUint32                                    queueFamilyIndex,
++    deUint32*                                   pCounterCount,
++    VkPerformanceCounterKHR*                    pCounters,
++    VkPerformanceCounterDescriptionKHR*         pCounterDescriptions);
++
++VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(
++    VkPhysicalDevice                            physicalDevice,
++    const VkQueryPoolPerformanceCreateInfoKHR*  pPerformanceQueryCreateInfo,
++    deUint32*                                   pNumPasses);
++
++VKAPI_ATTR VkResult VKAPI_CALL vkAcquireProfilingLockKHR(
++    VkDevice                                    device,
++    const VkAcquireProfilingLockInfoKHR*        pInfo);
++
++VKAPI_ATTR void VKAPI_CALL vkReleaseProfilingLockKHR(
++    VkDevice                                    device);
++#endif
++
++
 +#define VK_KHR_get_surface_capabilities2 1
 +#define VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION 1
 +#define VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME "VK_KHR_get_surface_capabilities2"
 +typedef struct VkPhysicalDeviceSurfaceInfo2KHR {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    VkSurfaceKHR       surface;
 +} VkPhysicalDeviceSurfaceInfo2KHR;
 +
 +typedef struct VkSurfaceCapabilities2KHR {
 +    VkStructureType             sType;
 +    void*                       pNext;
 +    VkSurfaceCapabilitiesKHR    surfaceCapabilities;
 +} VkSurfaceCapabilities2KHR;
 +
 +typedef struct VkSurfaceFormat2KHR {
 +    VkStructureType       sType;
 +    void*                 pNext;
 +    VkSurfaceFormatKHR    surfaceFormat;
 +} VkSurfaceFormat2KHR;
 +
 +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkSurfaceCapabilities2KHR* pSurfaceCapabilities);
 +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceFormats2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, deUint32* pSurfaceFormatCount, VkSurfaceFormat2KHR* pSurfaceFormats);
 +
 +#ifndef VK_NO_PROTOTYPES
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilities2KHR(
 +    VkPhysicalDevice                            physicalDevice,
 +    const VkPhysicalDeviceSurfaceInfo2KHR*      pSurfaceInfo,
 +    VkSurfaceCapabilities2KHR*                  pSurfaceCapabilities);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceFormats2KHR(
 +    VkPhysicalDevice                            physicalDevice,
 +    const VkPhysicalDeviceSurfaceInfo2KHR*      pSurfaceInfo,
 +    deUint32*                                   pSurfaceFormatCount,
 +    VkSurfaceFormat2KHR*                        pSurfaceFormats);
 +#endif
 +
 +
 +#define VK_KHR_get_display_properties2 1
 +#define VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION 1
 +#define VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME "VK_KHR_get_display_properties2"
 +typedef struct VkDisplayProperties2KHR {
 +    VkStructureType           sType;
 +    void*                     pNext;
 +    VkDisplayPropertiesKHR    displayProperties;
 +} VkDisplayProperties2KHR;
 +
 +typedef struct VkDisplayPlaneProperties2KHR {
 +    VkStructureType                sType;
 +    void*                          pNext;
 +    VkDisplayPlanePropertiesKHR    displayPlaneProperties;
 +} VkDisplayPlaneProperties2KHR;
 +
 +typedef struct VkDisplayModeProperties2KHR {
 +    VkStructureType               sType;
 +    void*                         pNext;
 +    VkDisplayModePropertiesKHR    displayModeProperties;
 +} VkDisplayModeProperties2KHR;
 +
 +typedef struct VkDisplayPlaneInfo2KHR {
 +    VkStructureType     sType;
 +    const void*         pNext;
 +    VkDisplayModeKHR    mode;
 +    deUint32            planeIndex;
 +} VkDisplayPlaneInfo2KHR;
 +
 +typedef struct VkDisplayPlaneCapabilities2KHR {
 +    VkStructureType                  sType;
 +    void*                            pNext;
 +    VkDisplayPlaneCapabilitiesKHR    capabilities;
 +} VkDisplayPlaneCapabilities2KHR;
 +
 +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayProperties2KHR)(VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayProperties2KHR* pProperties);
 +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR)(VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPlaneProperties2KHR* pProperties);
 +typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayModeProperties2KHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, deUint32* pPropertyCount, VkDisplayModeProperties2KHR* pProperties);
 +typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneCapabilities2KHR)(VkPhysicalDevice physicalDevice, const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo, VkDisplayPlaneCapabilities2KHR* pCapabilities);
 +
 +#ifndef VK_NO_PROTOTYPES
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayProperties2KHR(
 +    VkPhysicalDevice                            physicalDevice,
 +    deUint32*                                   pPropertyCount,
 +    VkDisplayProperties2KHR*                    pProperties);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
 +    VkPhysicalDevice                            physicalDevice,
 +    deUint32*                                   pPropertyCount,
 +    VkDisplayPlaneProperties2KHR*               pProperties);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayModeProperties2KHR(
 +    VkPhysicalDevice                            physicalDevice,
 +    VkDisplayKHR                                display,
 +    deUint32*                                   pPropertyCount,
 +    VkDisplayModeProperties2KHR*                pProperties);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneCapabilities2KHR(
 +    VkPhysicalDevice                            physicalDevice,
 +    const VkDisplayPlaneInfo2KHR*               pDisplayPlaneInfo,
 +    VkDisplayPlaneCapabilities2KHR*             pCapabilities);
 +#endif
 +
 +
 +#define VK_KHR_shader_clock 1
 +#define VK_KHR_SHADER_CLOCK_SPEC_VERSION  1
 +#define VK_KHR_SHADER_CLOCK_EXTENSION_NAME "VK_KHR_shader_clock"
 +typedef struct VkPhysicalDeviceShaderClockFeaturesKHR {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           shaderSubgroupClock;
 +    VkBool32           shaderDeviceClock;
 +} VkPhysicalDeviceShaderClockFeaturesKHR;
 +
 +
 +
 +#define VK_KHR_swapchain_mutable_format 1
 +#define VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION 1
 +#define VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME "VK_KHR_swapchain_mutable_format"
 +
 +
 +#define VK_KHR_shader_terminate_invocation 1
 +#define VK_KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION 1
 +#define VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME "VK_KHR_shader_terminate_invocation"
 +typedef struct VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           shaderTerminateInvocation;
 +} VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR;
 +
 +
 +
 +#define VK_KHR_fragment_shading_rate 1
 +#define VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION 1
 +#define VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME "VK_KHR_fragment_shading_rate"
 +
 +typedef enum VkFragmentShadingRateCombinerOpKHR {
 +    VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR = 0,
 +    VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR = 1,
 +    VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHR = 2,
 +    VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHR = 3,
 +    VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR = 4,
 +    VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_ENUM_KHR = 0x7FFFFFFF
 +} VkFragmentShadingRateCombinerOpKHR;
 +typedef struct VkFragmentShadingRateAttachmentInfoKHR {
 +    VkStructureType                  sType;
 +    const void*                      pNext;
 +    const VkAttachmentReference2*    pFragmentShadingRateAttachment;
 +    VkExtent2D                       shadingRateAttachmentTexelSize;
 +} VkFragmentShadingRateAttachmentInfoKHR;
 +
 +typedef struct VkPipelineFragmentShadingRateStateCreateInfoKHR {
 +    VkStructureType                       sType;
 +    const void*                           pNext;
 +    VkExtent2D                            fragmentSize;
 +    VkFragmentShadingRateCombinerOpKHR    combinerOps[2];
 +} VkPipelineFragmentShadingRateStateCreateInfoKHR;
 +
 +typedef struct VkPhysicalDeviceFragmentShadingRateFeaturesKHR {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           pipelineFragmentShadingRate;
 +    VkBool32           primitiveFragmentShadingRate;
 +    VkBool32           attachmentFragmentShadingRate;
 +} VkPhysicalDeviceFragmentShadingRateFeaturesKHR;
 +
 +typedef struct VkPhysicalDeviceFragmentShadingRatePropertiesKHR {
 +    VkStructureType          sType;
 +    void*                    pNext;
 +    VkExtent2D               minFragmentShadingRateAttachmentTexelSize;
 +    VkExtent2D               maxFragmentShadingRateAttachmentTexelSize;
 +    deUint32                 maxFragmentShadingRateAttachmentTexelSizeAspectRatio;
 +    VkBool32                 primitiveFragmentShadingRateWithMultipleViewports;
 +    VkBool32                 layeredShadingRateAttachments;
 +    VkBool32                 fragmentShadingRateNonTrivialCombinerOps;
 +    VkExtent2D               maxFragmentSize;
 +    deUint32                 maxFragmentSizeAspectRatio;
 +    deUint32                 maxFragmentShadingRateCoverageSamples;
 +    VkSampleCountFlagBits    maxFragmentShadingRateRasterizationSamples;
 +    VkBool32                 fragmentShadingRateWithShaderDepthStencilWrites;
 +    VkBool32                 fragmentShadingRateWithSampleMask;
 +    VkBool32                 fragmentShadingRateWithShaderSampleMask;
 +    VkBool32                 fragmentShadingRateWithConservativeRasterization;
 +    VkBool32                 fragmentShadingRateWithFragmentShaderInterlock;
 +    VkBool32                 fragmentShadingRateWithCustomSampleLocations;
 +    VkBool32                 fragmentShadingRateStrictMultiplyCombiner;
 +} VkPhysicalDeviceFragmentShadingRatePropertiesKHR;
 +
 +typedef struct VkPhysicalDeviceFragmentShadingRateKHR {
 +    VkStructureType       sType;
 +    void*                 pNext;
 +    VkSampleCountFlags    sampleCounts;
 +    VkExtent2D            fragmentSize;
 +} VkPhysicalDeviceFragmentShadingRateKHR;
 +
 +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR)(VkPhysicalDevice physicalDevice, deUint32* pFragmentShadingRateCount, VkPhysicalDeviceFragmentShadingRateKHR* pFragmentShadingRates);
 +typedef void (VKAPI_PTR *PFN_vkCmdSetFragmentShadingRateKHR)(VkCommandBuffer           commandBuffer, const VkExtent2D*                           pFragmentSize, const VkFragmentShadingRateCombinerOpKHR    combinerOps[2]);
 +
 +#ifndef VK_NO_PROTOTYPES
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceFragmentShadingRatesKHR(
 +    VkPhysicalDevice                            physicalDevice,
 +    deUint32*                                   pFragmentShadingRateCount,
 +    VkPhysicalDeviceFragmentShadingRateKHR*     pFragmentShadingRates);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdSetFragmentShadingRateKHR(
 +    VkCommandBuffer                             commandBuffer,
 +    const VkExtent2D*                           pFragmentSize,
 +    const VkFragmentShadingRateCombinerOpKHR    combinerOps[2]);
 +#endif
 +
 +
- #define VK_KHR_seu_safe_memory 1
- #define VK_KHR_SEU_SAFE_MEMORY_SPEC_VERSION 1
- #define VK_KHR_SEU_SAFE_MEMORY_EXTENSION_NAME "VK_KHR_seu_safe_memory"
 +#define VK_KHR_object_refresh 1
 +#define VK_KHR_OBJECT_REFRESH_SPEC_VERSION 1
 +#define VK_KHR_OBJECT_REFRESH_EXTENSION_NAME "VK_KHR_object_refresh"
 +
 +typedef enum VkRefreshObjectFlagBitsKHR {
 +    VK_REFRESH_OBJECT_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
 +} VkRefreshObjectFlagBitsKHR;
 +typedef VkFlags VkRefreshObjectFlagsKHR;
 +typedef struct VkRefreshObjectKHR {
 +    VkObjectType               objectType;
 +    deUint64                   objectHandle;
 +    VkRefreshObjectFlagsKHR    flags;
 +} VkRefreshObjectKHR;
 +
 +typedef struct VkRefreshObjectListKHR {
 +    VkStructureType              sType;
 +    const void*                  pNext;
 +    deUint32                     objectCount;
 +    const VkRefreshObjectKHR*    pObjects;
 +} VkRefreshObjectListKHR;
 +
 +typedef void (VKAPI_PTR *PFN_vkCmdRefreshObjectsKHR)(VkCommandBuffer commandBuffer, const VkRefreshObjectListKHR* pRefreshObjects);
 +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceRefreshableObjectTypesKHR)(VkPhysicalDevice physicalDevice, deUint32* pRefreshableObjectCount, VkObjectType* pRefreshableObjectTypes);
 +
 +#ifndef VK_NO_PROTOTYPES
 +VKAPI_ATTR void VKAPI_CALL vkCmdRefreshObjectsKHR(
 +    VkCommandBuffer                             commandBuffer,
 +    const VkRefreshObjectListKHR*               pRefreshObjects);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceRefreshableObjectTypesKHR(
 +    VkPhysicalDevice                            physicalDevice,
 +    deUint32*                                   pRefreshableObjectCount,
 +    VkObjectType*                               pRefreshableObjectTypes);
 +#endif
 +
 +
- #define VK_KHR_pipeline_identifier 1
- #define VK_KHR_PIPELINE_IDENTIFIER_SPEC_VERSION 1
- #define VK_KHR_PIPELINE_IDENTIFIER_EXTENSION_NAME "VK_KHR_pipeline_identifier"
- typedef VkPipelineMatchControl VkPipelineMatchControlKHR;
++#define VK_KHR_synchronization2 1
++typedef deUint64 VkFlags64;
++#define VK_KHR_SYNCHRONIZATION_2_SPEC_VERSION 1
++#define VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME "VK_KHR_synchronization2"
++typedef VkFlags64 VkPipelineStageFlags2KHR;
++
++// Flag bits for VkPipelineStageFlagBits2KHR
++typedef VkFlags64 VkPipelineStageFlagBits2KHR;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_NONE_KHR = 0ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR = 0x00000001ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR = 0x00000002ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT_KHR = 0x00000004ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR = 0x00000008ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR = 0x00000010ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR = 0x00000020ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR = 0x00000040ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR = 0x00000080ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR = 0x00000100ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR = 0x00000200ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR = 0x00000400ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR = 0x00000800ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR = 0x00001000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR = 0x00001000;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR = 0x00002000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_HOST_BIT_KHR = 0x00004000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR = 0x00008000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR = 0x00010000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_COPY_BIT_KHR = 0x100000000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR = 0x200000000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_BLIT_BIT_KHR = 0x400000000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR = 0x800000000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR = 0x1000000000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR = 0x2000000000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT_KHR = 0x4000000000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT = 0x01000000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT = 0x00040000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV = 0x00020000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x00400000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV = 0x00400000;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 0x02000000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR = 0x00200000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_NV = 0x00200000;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 0x02000000;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 0x00800000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV = 0x00080000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV = 0x00100000ULL;
++
++typedef VkFlags64 VkAccessFlags2KHR;
++
++// Flag bits for VkAccessFlagBits2KHR
++typedef VkFlags64 VkAccessFlagBits2KHR;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_NONE_KHR = 0ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR = 0x00000001ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_INDEX_READ_BIT_KHR = 0x00000002ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT_KHR = 0x00000004ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_UNIFORM_READ_BIT_KHR = 0x00000008ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR = 0x00000010ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_SHADER_READ_BIT_KHR = 0x00000020ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_SHADER_WRITE_BIT_KHR = 0x00000040ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT_KHR = 0x00000080ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR = 0x00000100ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR = 0x00000200ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR = 0x00000400ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_TRANSFER_READ_BIT_KHR = 0x00000800ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR = 0x00001000ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_HOST_READ_BIT_KHR = 0x00002000ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_HOST_WRITE_BIT_KHR = 0x00004000ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_MEMORY_READ_BIT_KHR = 0x00008000ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_MEMORY_WRITE_BIT_KHR = 0x00010000ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR = 0x100000000ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR = 0x200000000ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR = 0x400000000ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 0x02000000ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 0x04000000ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 0x08000000ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT = 0x00100000ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV = 0x00020000ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV = 0x00040000ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = 0x00800000ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV = 0x00800000;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR = 0x00200000ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 0x00400000ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_NV = 0x00200000;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 0x00400000;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 0x01000000ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 0x00080000ULL;
++
++
++typedef enum VkSubmitFlagBitsKHR {
++    VK_SUBMIT_PROTECTED_BIT_KHR = 0x00000001,
++    VK_SUBMIT_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
++} VkSubmitFlagBitsKHR;
++typedef VkFlags VkSubmitFlagsKHR;
++typedef struct VkMemoryBarrier2KHR {
++    VkStructureType             sType;
++    const void*                 pNext;
++    VkPipelineStageFlags2KHR    srcStageMask;
++    VkAccessFlags2KHR           srcAccessMask;
++    VkPipelineStageFlags2KHR    dstStageMask;
++    VkAccessFlags2KHR           dstAccessMask;
++} VkMemoryBarrier2KHR;
++
++typedef struct VkBufferMemoryBarrier2KHR {
++    VkStructureType             sType;
++    const void*                 pNext;
++    VkPipelineStageFlags2KHR    srcStageMask;
++    VkAccessFlags2KHR           srcAccessMask;
++    VkPipelineStageFlags2KHR    dstStageMask;
++    VkAccessFlags2KHR           dstAccessMask;
++    deUint32                    srcQueueFamilyIndex;
++    deUint32                    dstQueueFamilyIndex;
++    VkBuffer                    buffer;
++    VkDeviceSize                offset;
++    VkDeviceSize                size;
++} VkBufferMemoryBarrier2KHR;
++
++typedef struct VkImageMemoryBarrier2KHR {
++    VkStructureType             sType;
++    const void*                 pNext;
++    VkPipelineStageFlags2KHR    srcStageMask;
++    VkAccessFlags2KHR           srcAccessMask;
++    VkPipelineStageFlags2KHR    dstStageMask;
++    VkAccessFlags2KHR           dstAccessMask;
++    VkImageLayout               oldLayout;
++    VkImageLayout               newLayout;
++    deUint32                    srcQueueFamilyIndex;
++    deUint32                    dstQueueFamilyIndex;
++    VkImage                     image;
++    VkImageSubresourceRange     subresourceRange;
++} VkImageMemoryBarrier2KHR;
++
++typedef struct VkDependencyInfoKHR {
++    VkStructureType                     sType;
++    const void*                         pNext;
++    VkDependencyFlags                   dependencyFlags;
++    deUint32                            memoryBarrierCount;
++    const VkMemoryBarrier2KHR*          pMemoryBarriers;
++    deUint32                            bufferMemoryBarrierCount;
++    const VkBufferMemoryBarrier2KHR*    pBufferMemoryBarriers;
++    deUint32                            imageMemoryBarrierCount;
++    const VkImageMemoryBarrier2KHR*     pImageMemoryBarriers;
++} VkDependencyInfoKHR;
++
++typedef struct VkSemaphoreSubmitInfoKHR {
++    VkStructureType             sType;
++    const void*                 pNext;
++    VkSemaphore                 semaphore;
++    deUint64                    value;
++    VkPipelineStageFlags2KHR    stageMask;
++    deUint32                    deviceIndex;
++} VkSemaphoreSubmitInfoKHR;
 +
++typedef struct VkCommandBufferSubmitInfoKHR {
++    VkStructureType    sType;
++    const void*        pNext;
++    VkCommandBuffer    commandBuffer;
++    deUint32           deviceMask;
++} VkCommandBufferSubmitInfoKHR;
 +
- typedef VkPhysicalDevicePipelineIdentifierFeatures VkPhysicalDevicePipelineIdentifierFeaturesKHR;
++typedef struct VkSubmitInfo2KHR {
++    VkStructureType                        sType;
++    const void*                            pNext;
++    VkSubmitFlagsKHR                       flags;
++    deUint32                               waitSemaphoreInfoCount;
++    const VkSemaphoreSubmitInfoKHR*        pWaitSemaphoreInfos;
++    deUint32                               commandBufferInfoCount;
++    const VkCommandBufferSubmitInfoKHR*    pCommandBufferInfos;
++    deUint32                               signalSemaphoreInfoCount;
++    const VkSemaphoreSubmitInfoKHR*        pSignalSemaphoreInfos;
++} VkSubmitInfo2KHR;
++
++typedef struct VkPhysicalDeviceSynchronization2FeaturesKHR {
++    VkStructureType    sType;
++    void*              pNext;
++    VkBool32           synchronization2;
++} VkPhysicalDeviceSynchronization2FeaturesKHR;
 +
- typedef VkPipelineIdentifierInfo VkPipelineIdentifierInfoKHR;
++typedef struct VkQueueFamilyCheckpointProperties2NV {
++    VkStructureType             sType;
++    void*                       pNext;
++    VkPipelineStageFlags2KHR    checkpointExecutionStageMask;
++} VkQueueFamilyCheckpointProperties2NV;
 +
- #define VK_KHR_sc_pipeline_cache_functionality 1
- #define VK_KHR_SC_PIPELINE_CACHE_FUNCTIONALITY_SPEC_VERSION 1
- #define VK_KHR_SC_PIPELINE_CACHE_FUNCTIONALITY_EXTENSION_NAME "VK_KHR_sc_pipeline_cache_functionality"
++typedef struct VkCheckpointData2NV {
++    VkStructureType             sType;
++    void*                       pNext;
++    VkPipelineStageFlags2KHR    stage;
++    void*                       pCheckpointMarker;
++} VkCheckpointData2NV;
++
++typedef void (VKAPI_PTR *PFN_vkCmdSetEvent2KHR)(VkCommandBuffer                   commandBuffer, VkEvent                                             event, const VkDependencyInfoKHR*                          pDependencyInfo);
++typedef void (VKAPI_PTR *PFN_vkCmdResetEvent2KHR)(VkCommandBuffer                   commandBuffer, VkEvent                                             event, VkPipelineStageFlags2KHR                            stageMask);
++typedef void (VKAPI_PTR *PFN_vkCmdWaitEvents2KHR)(VkCommandBuffer                   commandBuffer, deUint32                                            eventCount, const VkEvent*                     pEvents, const VkDependencyInfoKHR*         pDependencyInfos);
++typedef void (VKAPI_PTR *PFN_vkCmdPipelineBarrier2KHR)(VkCommandBuffer                   commandBuffer, const VkDependencyInfoKHR*                                pDependencyInfo);
++typedef void (VKAPI_PTR *PFN_vkCmdWriteTimestamp2KHR)(VkCommandBuffer                   commandBuffer, VkPipelineStageFlags2KHR                            stage, VkQueryPool                                         queryPool, deUint32                                            query);
++typedef VkResult (VKAPI_PTR *PFN_vkQueueSubmit2KHR)(VkQueue                           queue, deUint32                            submitCount, const VkSubmitInfo2KHR*           pSubmits, VkFence           fence);
++typedef void (VKAPI_PTR *PFN_vkCmdWriteBufferMarker2AMD)(VkCommandBuffer                   commandBuffer, VkPipelineStageFlags2KHR                            stage, VkBuffer                                            dstBuffer, VkDeviceSize                                        dstOffset, deUint32                                            marker);
++typedef void (VKAPI_PTR *PFN_vkGetQueueCheckpointData2NV)(VkQueue queue, deUint32* pCheckpointDataCount, VkCheckpointData2NV* pCheckpointData);
 +
++#ifndef VK_NO_PROTOTYPES
++VKAPI_ATTR void VKAPI_CALL vkCmdSetEvent2KHR(
++    VkCommandBuffer                             commandBuffer,
++    VkEvent                                     event,
++    const VkDependencyInfoKHR*                  pDependencyInfo);
++
++VKAPI_ATTR void VKAPI_CALL vkCmdResetEvent2KHR(
++    VkCommandBuffer                             commandBuffer,
++    VkEvent                                     event,
++    VkPipelineStageFlags2KHR                    stageMask);
++
++VKAPI_ATTR void VKAPI_CALL vkCmdWaitEvents2KHR(
++    VkCommandBuffer                             commandBuffer,
++    deUint32                                    eventCount,
++    const VkEvent*                              pEvents,
++    const VkDependencyInfoKHR*                  pDependencyInfos);
++
++VKAPI_ATTR void VKAPI_CALL vkCmdPipelineBarrier2KHR(
++    VkCommandBuffer                             commandBuffer,
++    const VkDependencyInfoKHR*                  pDependencyInfo);
++
++VKAPI_ATTR void VKAPI_CALL vkCmdWriteTimestamp2KHR(
++    VkCommandBuffer                             commandBuffer,
++    VkPipelineStageFlags2KHR                    stage,
++    VkQueryPool                                 queryPool,
++    deUint32                                    query);
++
++VKAPI_ATTR VkResult VKAPI_CALL vkQueueSubmit2KHR(
++    VkQueue                                     queue,
++    deUint32                                    submitCount,
++    const VkSubmitInfo2KHR*                     pSubmits,
++    VkFence                                     fence);
++
++VKAPI_ATTR void VKAPI_CALL vkCmdWriteBufferMarker2AMD(
++    VkCommandBuffer                             commandBuffer,
++    VkPipelineStageFlags2KHR                    stage,
++    VkBuffer                                    dstBuffer,
++    VkDeviceSize                                dstOffset,
++    deUint32                                    marker);
++
++VKAPI_ATTR void VKAPI_CALL vkGetQueueCheckpointData2NV(
++    VkQueue                                     queue,
++    deUint32*                                   pCheckpointDataCount,
++    VkCheckpointData2NV*                        pCheckpointData);
++#endif
 +
 +
 +#define VK_KHR_copy_commands2 1
 +#define VK_KHR_COPY_COMMANDS_2_SPEC_VERSION 1
 +#define VK_KHR_COPY_COMMANDS_2_EXTENSION_NAME "VK_KHR_copy_commands2"
 +typedef struct VkBufferCopy2KHR {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    VkDeviceSize       srcOffset;
 +    VkDeviceSize       dstOffset;
 +    VkDeviceSize       size;
 +} VkBufferCopy2KHR;
 +
 +typedef struct VkCopyBufferInfo2KHR {
 +    VkStructureType            sType;
 +    const void*                pNext;
 +    VkBuffer                   srcBuffer;
 +    VkBuffer                   dstBuffer;
 +    deUint32                   regionCount;
 +    const VkBufferCopy2KHR*    pRegions;
 +} VkCopyBufferInfo2KHR;
 +
 +typedef struct VkImageCopy2KHR {
 +    VkStructureType             sType;
 +    const void*                 pNext;
 +    VkImageSubresourceLayers    srcSubresource;
 +    VkOffset3D                  srcOffset;
 +    VkImageSubresourceLayers    dstSubresource;
 +    VkOffset3D                  dstOffset;
 +    VkExtent3D                  extent;
 +} VkImageCopy2KHR;
 +
 +typedef struct VkCopyImageInfo2KHR {
 +    VkStructureType           sType;
 +    const void*               pNext;
 +    VkImage                   srcImage;
 +    VkImageLayout             srcImageLayout;
 +    VkImage                   dstImage;
 +    VkImageLayout             dstImageLayout;
 +    deUint32                  regionCount;
 +    const VkImageCopy2KHR*    pRegions;
 +} VkCopyImageInfo2KHR;
 +
 +typedef struct VkBufferImageCopy2KHR {
 +    VkStructureType             sType;
 +    const void*                 pNext;
 +    VkDeviceSize                bufferOffset;
 +    deUint32                    bufferRowLength;
 +    deUint32                    bufferImageHeight;
 +    VkImageSubresourceLayers    imageSubresource;
 +    VkOffset3D                  imageOffset;
 +    VkExtent3D                  imageExtent;
 +} VkBufferImageCopy2KHR;
 +
 +typedef struct VkCopyBufferToImageInfo2KHR {
 +    VkStructureType                 sType;
 +    const void*                     pNext;
 +    VkBuffer                        srcBuffer;
 +    VkImage                         dstImage;
 +    VkImageLayout                   dstImageLayout;
 +    deUint32                        regionCount;
 +    const VkBufferImageCopy2KHR*    pRegions;
 +} VkCopyBufferToImageInfo2KHR;
 +
 +typedef struct VkCopyImageToBufferInfo2KHR {
 +    VkStructureType                 sType;
 +    const void*                     pNext;
 +    VkImage                         srcImage;
 +    VkImageLayout                   srcImageLayout;
 +    VkBuffer                        dstBuffer;
 +    deUint32                        regionCount;
 +    const VkBufferImageCopy2KHR*    pRegions;
 +} VkCopyImageToBufferInfo2KHR;
 +
 +typedef struct VkImageBlit2KHR {
 +    VkStructureType             sType;
 +    const void*                 pNext;
 +    VkImageSubresourceLayers    srcSubresource;
 +    VkOffset3D                  srcOffsets[2];
 +    VkImageSubresourceLayers    dstSubresource;
 +    VkOffset3D                  dstOffsets[2];
 +} VkImageBlit2KHR;
 +
 +typedef struct VkBlitImageInfo2KHR {
 +    VkStructureType           sType;
 +    const void*               pNext;
 +    VkImage                   srcImage;
 +    VkImageLayout             srcImageLayout;
 +    VkImage                   dstImage;
 +    VkImageLayout             dstImageLayout;
 +    deUint32                  regionCount;
 +    const VkImageBlit2KHR*    pRegions;
 +    VkFilter                  filter;
 +} VkBlitImageInfo2KHR;
 +
 +typedef struct VkImageResolve2KHR {
 +    VkStructureType             sType;
 +    const void*                 pNext;
 +    VkImageSubresourceLayers    srcSubresource;
 +    VkOffset3D                  srcOffset;
 +    VkImageSubresourceLayers    dstSubresource;
 +    VkOffset3D                  dstOffset;
 +    VkExtent3D                  extent;
 +} VkImageResolve2KHR;
 +
 +typedef struct VkResolveImageInfo2KHR {
 +    VkStructureType              sType;
 +    const void*                  pNext;
 +    VkImage                      srcImage;
 +    VkImageLayout                srcImageLayout;
 +    VkImage                      dstImage;
 +    VkImageLayout                dstImageLayout;
 +    deUint32                     regionCount;
 +    const VkImageResolve2KHR*    pRegions;
 +} VkResolveImageInfo2KHR;
 +
 +typedef void (VKAPI_PTR *PFN_vkCmdCopyBuffer2KHR)(VkCommandBuffer commandBuffer, const VkCopyBufferInfo2KHR* pCopyBufferInfo);
 +typedef void (VKAPI_PTR *PFN_vkCmdCopyImage2KHR)(VkCommandBuffer commandBuffer, const VkCopyImageInfo2KHR* pCopyImageInfo);
 +typedef void (VKAPI_PTR *PFN_vkCmdCopyBufferToImage2KHR)(VkCommandBuffer commandBuffer, const VkCopyBufferToImageInfo2KHR* pCopyBufferToImageInfo);
 +typedef void (VKAPI_PTR *PFN_vkCmdCopyImageToBuffer2KHR)(VkCommandBuffer commandBuffer, const VkCopyImageToBufferInfo2KHR* pCopyImageToBufferInfo);
 +typedef void (VKAPI_PTR *PFN_vkCmdBlitImage2KHR)(VkCommandBuffer commandBuffer, const VkBlitImageInfo2KHR* pBlitImageInfo);
 +typedef void (VKAPI_PTR *PFN_vkCmdResolveImage2KHR)(VkCommandBuffer commandBuffer, const VkResolveImageInfo2KHR* pResolveImageInfo);
 +
 +#ifndef VK_NO_PROTOTYPES
 +VKAPI_ATTR void VKAPI_CALL vkCmdCopyBuffer2KHR(
 +    VkCommandBuffer                             commandBuffer,
 +    const VkCopyBufferInfo2KHR*                 pCopyBufferInfo);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdCopyImage2KHR(
 +    VkCommandBuffer                             commandBuffer,
 +    const VkCopyImageInfo2KHR*                  pCopyImageInfo);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdCopyBufferToImage2KHR(
 +    VkCommandBuffer                             commandBuffer,
 +    const VkCopyBufferToImageInfo2KHR*          pCopyBufferToImageInfo);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdCopyImageToBuffer2KHR(
 +    VkCommandBuffer                             commandBuffer,
 +    const VkCopyImageToBufferInfo2KHR*          pCopyImageToBufferInfo);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdBlitImage2KHR(
 +    VkCommandBuffer                             commandBuffer,
 +    const VkBlitImageInfo2KHR*                  pBlitImageInfo);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdResolveImage2KHR(
 +    VkCommandBuffer                             commandBuffer,
 +    const VkResolveImageInfo2KHR*               pResolveImageInfo);
 +#endif
 +
 +
- #define VK_QUEUE_FAMILY_FOREIGN_EXT       (~0U-2)
 +#define VK_EXT_depth_range_unrestricted 1
 +#define VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION 1
 +#define VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME "VK_EXT_depth_range_unrestricted"
 +
 +
 +#define VK_EXT_texture_compression_astc_hdr 1
 +#define VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION 1
 +#define VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME "VK_EXT_texture_compression_astc_hdr"
 +typedef struct VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           textureCompressionASTC_HDR;
 +} VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT;
 +
 +
 +
 +#define VK_EXT_astc_decode_mode 1
 +#define VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION 1
 +#define VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME "VK_EXT_astc_decode_mode"
 +typedef struct VkImageViewASTCDecodeModeEXT {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    VkFormat           decodeMode;
 +} VkImageViewASTCDecodeModeEXT;
 +
 +typedef struct VkPhysicalDeviceASTCDecodeFeaturesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           decodeModeSharedExponent;
 +} VkPhysicalDeviceASTCDecodeFeaturesEXT;
 +
 +
 +
 +#define VK_EXT_direct_mode_display 1
 +#define VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION 1
 +#define VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME "VK_EXT_direct_mode_display"
 +typedef VkResult (VKAPI_PTR *PFN_vkReleaseDisplayEXT)(VkPhysicalDevice physicalDevice, VkDisplayKHR display);
 +
 +#ifndef VK_NO_PROTOTYPES
 +VKAPI_ATTR VkResult VKAPI_CALL vkReleaseDisplayEXT(
 +    VkPhysicalDevice                            physicalDevice,
 +    VkDisplayKHR                                display);
 +#endif
 +
 +
 +#define VK_EXT_display_surface_counter 1
 +#define VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION 1
 +#define VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME "VK_EXT_display_surface_counter"
 +
 +typedef enum VkSurfaceCounterFlagBitsEXT {
 +    VK_SURFACE_COUNTER_VBLANK_BIT_EXT = 0x00000001,
 +    VK_SURFACE_COUNTER_VBLANK_EXT = VK_SURFACE_COUNTER_VBLANK_BIT_EXT,
 +    VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
 +} VkSurfaceCounterFlagBitsEXT;
 +typedef VkFlags VkSurfaceCounterFlagsEXT;
 +typedef struct VkSurfaceCapabilities2EXT {
 +    VkStructureType                  sType;
 +    void*                            pNext;
 +    deUint32                         minImageCount;
 +    deUint32                         maxImageCount;
 +    VkExtent2D                       currentExtent;
 +    VkExtent2D                       minImageExtent;
 +    VkExtent2D                       maxImageExtent;
 +    deUint32                         maxImageArrayLayers;
 +    VkSurfaceTransformFlagsKHR       supportedTransforms;
 +    VkSurfaceTransformFlagBitsKHR    currentTransform;
 +    VkCompositeAlphaFlagsKHR         supportedCompositeAlpha;
 +    VkImageUsageFlags                supportedUsageFlags;
 +    VkSurfaceCounterFlagsEXT         supportedSurfaceCounters;
 +} VkSurfaceCapabilities2EXT;
 +
 +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilities2EXT* pSurfaceCapabilities);
 +
 +#ifndef VK_NO_PROTOTYPES
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilities2EXT(
 +    VkPhysicalDevice                            physicalDevice,
 +    VkSurfaceKHR                                surface,
 +    VkSurfaceCapabilities2EXT*                  pSurfaceCapabilities);
 +#endif
 +
 +
 +#define VK_EXT_display_control 1
 +#define VK_EXT_DISPLAY_CONTROL_SPEC_VERSION 1
 +#define VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME "VK_EXT_display_control"
 +
 +typedef enum VkDisplayPowerStateEXT {
 +    VK_DISPLAY_POWER_STATE_OFF_EXT = 0,
 +    VK_DISPLAY_POWER_STATE_SUSPEND_EXT = 1,
 +    VK_DISPLAY_POWER_STATE_ON_EXT = 2,
 +    VK_DISPLAY_POWER_STATE_MAX_ENUM_EXT = 0x7FFFFFFF
 +} VkDisplayPowerStateEXT;
 +
 +typedef enum VkDeviceEventTypeEXT {
 +    VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0,
 +    VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF
 +} VkDeviceEventTypeEXT;
 +
 +typedef enum VkDisplayEventTypeEXT {
 +    VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0,
 +    VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF
 +} VkDisplayEventTypeEXT;
 +typedef struct VkDisplayPowerInfoEXT {
 +    VkStructureType           sType;
 +    const void*               pNext;
 +    VkDisplayPowerStateEXT    powerState;
 +} VkDisplayPowerInfoEXT;
 +
 +typedef struct VkDeviceEventInfoEXT {
 +    VkStructureType         sType;
 +    const void*             pNext;
 +    VkDeviceEventTypeEXT    deviceEvent;
 +} VkDeviceEventInfoEXT;
 +
 +typedef struct VkDisplayEventInfoEXT {
 +    VkStructureType          sType;
 +    const void*              pNext;
 +    VkDisplayEventTypeEXT    displayEvent;
 +} VkDisplayEventInfoEXT;
 +
 +typedef struct VkSwapchainCounterCreateInfoEXT {
 +    VkStructureType             sType;
 +    const void*                 pNext;
 +    VkSurfaceCounterFlagsEXT    surfaceCounters;
 +} VkSwapchainCounterCreateInfoEXT;
 +
 +typedef VkResult (VKAPI_PTR *PFN_vkDisplayPowerControlEXT)(VkDevice device, VkDisplayKHR display, const VkDisplayPowerInfoEXT* pDisplayPowerInfo);
 +typedef VkResult (VKAPI_PTR *PFN_vkRegisterDeviceEventEXT)(VkDevice device, const VkDeviceEventInfoEXT* pDeviceEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);
 +typedef VkResult (VKAPI_PTR *PFN_vkRegisterDisplayEventEXT)(VkDevice device, VkDisplayKHR display, const VkDisplayEventInfoEXT* pDisplayEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);
 +typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainCounterEXT)(VkDevice device, VkSwapchainKHR swapchain, VkSurfaceCounterFlagBitsEXT counter, deUint64* pCounterValue);
 +
 +#ifndef VK_NO_PROTOTYPES
 +VKAPI_ATTR VkResult VKAPI_CALL vkDisplayPowerControlEXT(
 +    VkDevice                                    device,
 +    VkDisplayKHR                                display,
 +    const VkDisplayPowerInfoEXT*                pDisplayPowerInfo);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkRegisterDeviceEventEXT(
 +    VkDevice                                    device,
 +    const VkDeviceEventInfoEXT*                 pDeviceEventInfo,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkFence*                                    pFence);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkRegisterDisplayEventEXT(
 +    VkDevice                                    device,
 +    VkDisplayKHR                                display,
 +    const VkDisplayEventInfoEXT*                pDisplayEventInfo,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkFence*                                    pFence);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainCounterEXT(
 +    VkDevice                                    device,
 +    VkSwapchainKHR                              swapchain,
 +    VkSurfaceCounterFlagBitsEXT                 counter,
 +    deUint64*                                   pCounterValue);
 +#endif
 +
 +
 +#define VK_EXT_discard_rectangles 1
 +#define VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION 1
 +#define VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME "VK_EXT_discard_rectangles"
 +
 +typedef enum VkDiscardRectangleModeEXT {
 +    VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0,
 +    VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1,
 +    VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT = 0x7FFFFFFF
 +} VkDiscardRectangleModeEXT;
 +typedef VkFlags VkPipelineDiscardRectangleStateCreateFlagsEXT;
 +typedef struct VkPhysicalDeviceDiscardRectanglePropertiesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    deUint32           maxDiscardRectangles;
 +} VkPhysicalDeviceDiscardRectanglePropertiesEXT;
 +
 +typedef struct VkPipelineDiscardRectangleStateCreateInfoEXT {
 +    VkStructureType                                  sType;
 +    const void*                                      pNext;
 +    VkPipelineDiscardRectangleStateCreateFlagsEXT    flags;
 +    VkDiscardRectangleModeEXT                        discardRectangleMode;
 +    deUint32                                         discardRectangleCount;
 +    const VkRect2D*                                  pDiscardRectangles;
 +} VkPipelineDiscardRectangleStateCreateInfoEXT;
 +
 +typedef void (VKAPI_PTR *PFN_vkCmdSetDiscardRectangleEXT)(VkCommandBuffer commandBuffer, deUint32 firstDiscardRectangle, deUint32 discardRectangleCount, const VkRect2D* pDiscardRectangles);
 +
 +#ifndef VK_NO_PROTOTYPES
 +VKAPI_ATTR void VKAPI_CALL vkCmdSetDiscardRectangleEXT(
 +    VkCommandBuffer                             commandBuffer,
 +    deUint32                                    firstDiscardRectangle,
 +    deUint32                                    discardRectangleCount,
 +    const VkRect2D*                             pDiscardRectangles);
 +#endif
 +
 +
 +#define VK_EXT_conservative_rasterization 1
 +#define VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION 1
 +#define VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME "VK_EXT_conservative_rasterization"
 +
 +typedef enum VkConservativeRasterizationModeEXT {
 +    VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT = 0,
 +    VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT = 1,
 +    VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT = 2,
 +    VK_CONSERVATIVE_RASTERIZATION_MODE_MAX_ENUM_EXT = 0x7FFFFFFF
 +} VkConservativeRasterizationModeEXT;
 +typedef VkFlags VkPipelineRasterizationConservativeStateCreateFlagsEXT;
 +typedef struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    float              primitiveOverestimationSize;
 +    float              maxExtraPrimitiveOverestimationSize;
 +    float              extraPrimitiveOverestimationSizeGranularity;
 +    VkBool32           primitiveUnderestimation;
 +    VkBool32           conservativePointAndLineRasterization;
 +    VkBool32           degenerateTrianglesRasterized;
 +    VkBool32           degenerateLinesRasterized;
 +    VkBool32           fullyCoveredFragmentShaderInputVariable;
 +    VkBool32           conservativeRasterizationPostDepthCoverage;
 +} VkPhysicalDeviceConservativeRasterizationPropertiesEXT;
 +
 +typedef struct VkPipelineRasterizationConservativeStateCreateInfoEXT {
 +    VkStructureType                                           sType;
 +    const void*                                               pNext;
 +    VkPipelineRasterizationConservativeStateCreateFlagsEXT    flags;
 +    VkConservativeRasterizationModeEXT                        conservativeRasterizationMode;
 +    float                                                     extraPrimitiveOverestimationSize;
 +} VkPipelineRasterizationConservativeStateCreateInfoEXT;
 +
 +
 +
 +#define VK_EXT_depth_clip_enable 1
 +#define VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION 1
 +#define VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME "VK_EXT_depth_clip_enable"
 +typedef VkFlags VkPipelineRasterizationDepthClipStateCreateFlagsEXT;
 +typedef struct VkPhysicalDeviceDepthClipEnableFeaturesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           depthClipEnable;
 +} VkPhysicalDeviceDepthClipEnableFeaturesEXT;
 +
 +typedef struct VkPipelineRasterizationDepthClipStateCreateInfoEXT {
 +    VkStructureType                                        sType;
 +    const void*                                            pNext;
 +    VkPipelineRasterizationDepthClipStateCreateFlagsEXT    flags;
 +    VkBool32                                               depthClipEnable;
 +} VkPipelineRasterizationDepthClipStateCreateInfoEXT;
 +
 +
 +
 +#define VK_EXT_swapchain_colorspace 1
 +#define VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION 4
 +#define VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME "VK_EXT_swapchain_colorspace"
 +
 +
 +#define VK_EXT_hdr_metadata 1
 +#define VK_EXT_HDR_METADATA_SPEC_VERSION  2
 +#define VK_EXT_HDR_METADATA_EXTENSION_NAME "VK_EXT_hdr_metadata"
 +typedef struct VkXYColorEXT {
 +    float    x;
 +    float    y;
 +} VkXYColorEXT;
 +
 +typedef struct VkHdrMetadataEXT {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    VkXYColorEXT       displayPrimaryRed;
 +    VkXYColorEXT       displayPrimaryGreen;
 +    VkXYColorEXT       displayPrimaryBlue;
 +    VkXYColorEXT       whitePoint;
 +    float              maxLuminance;
 +    float              minLuminance;
 +    float              maxContentLightLevel;
 +    float              maxFrameAverageLightLevel;
 +} VkHdrMetadataEXT;
 +
 +typedef void (VKAPI_PTR *PFN_vkSetHdrMetadataEXT)(VkDevice device, deUint32 swapchainCount, const VkSwapchainKHR* pSwapchains, const VkHdrMetadataEXT* pMetadata);
 +
 +#ifndef VK_NO_PROTOTYPES
 +VKAPI_ATTR void VKAPI_CALL vkSetHdrMetadataEXT(
 +    VkDevice                                    device,
 +    deUint32                                    swapchainCount,
 +    const VkSwapchainKHR*                       pSwapchains,
 +    const VkHdrMetadataEXT*                     pMetadata);
 +#endif
 +
 +
 +#define VK_EXT_external_memory_dma_buf 1
 +#define VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION 1
 +#define VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME "VK_EXT_external_memory_dma_buf"
 +
 +
 +#define VK_EXT_queue_family_foreign 1
 +#define VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION 1
 +#define VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME "VK_EXT_queue_family_foreign"
- #define VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION 1
++#define VK_QUEUE_FAMILY_FOREIGN_EXT       (~2U)
++
++
++#define VK_EXT_debug_utils 1
++VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugUtilsMessengerEXT)
++#define VK_EXT_DEBUG_UTILS_SPEC_VERSION   2
++#define VK_EXT_DEBUG_UTILS_EXTENSION_NAME "VK_EXT_debug_utils"
++typedef VkFlags VkDebugUtilsMessengerCallbackDataFlagsEXT;
++
++typedef enum VkDebugUtilsMessageSeverityFlagBitsEXT {
++    VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT = 0x00000001,
++    VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT = 0x00000010,
++    VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT = 0x00000100,
++    VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT = 0x00001000,
++    VK_DEBUG_UTILS_MESSAGE_SEVERITY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
++} VkDebugUtilsMessageSeverityFlagBitsEXT;
++
++typedef enum VkDebugUtilsMessageTypeFlagBitsEXT {
++    VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT = 0x00000001,
++    VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT = 0x00000002,
++    VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT = 0x00000004,
++    VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
++} VkDebugUtilsMessageTypeFlagBitsEXT;
++typedef VkFlags VkDebugUtilsMessageTypeFlagsEXT;
++typedef VkFlags VkDebugUtilsMessageSeverityFlagsEXT;
++typedef VkFlags VkDebugUtilsMessengerCreateFlagsEXT;
++typedef struct VkDebugUtilsLabelEXT {
++    VkStructureType    sType;
++    const void*        pNext;
++    const char*        pLabelName;
++    float              color[4];
++} VkDebugUtilsLabelEXT;
++
++typedef struct VkDebugUtilsObjectNameInfoEXT {
++    VkStructureType    sType;
++    const void*        pNext;
++    VkObjectType       objectType;
++    deUint64           objectHandle;
++    const char*        pObjectName;
++} VkDebugUtilsObjectNameInfoEXT;
++
++typedef struct VkDebugUtilsMessengerCallbackDataEXT {
++    VkStructureType                              sType;
++    const void*                                  pNext;
++    VkDebugUtilsMessengerCallbackDataFlagsEXT    flags;
++    const char*                                  pMessageIdName;
++    deInt32                                      messageIdNumber;
++    const char*                                  pMessage;
++    deUint32                                     queueLabelCount;
++    const VkDebugUtilsLabelEXT*                  pQueueLabels;
++    deUint32                                     cmdBufLabelCount;
++    const VkDebugUtilsLabelEXT*                  pCmdBufLabels;
++    deUint32                                     objectCount;
++    const VkDebugUtilsObjectNameInfoEXT*         pObjects;
++} VkDebugUtilsMessengerCallbackDataEXT;
++
++typedef VkBool32 (VKAPI_PTR *PFN_vkDebugUtilsMessengerCallbackEXT)(
++    VkDebugUtilsMessageSeverityFlagBitsEXT           messageSeverity,
++    VkDebugUtilsMessageTypeFlagsEXT                  messageTypes,
++    const VkDebugUtilsMessengerCallbackDataEXT*      pCallbackData,
++    void*                                            pUserData);
++
++typedef struct VkDebugUtilsMessengerCreateInfoEXT {
++    VkStructureType                         sType;
++    const void*                             pNext;
++    VkDebugUtilsMessengerCreateFlagsEXT     flags;
++    VkDebugUtilsMessageSeverityFlagsEXT     messageSeverity;
++    VkDebugUtilsMessageTypeFlagsEXT         messageType;
++    PFN_vkDebugUtilsMessengerCallbackEXT    pfnUserCallback;
++    void*                                   pUserData;
++} VkDebugUtilsMessengerCreateInfoEXT;
++
++typedef struct VkDebugUtilsObjectTagInfoEXT {
++    VkStructureType    sType;
++    const void*        pNext;
++    VkObjectType       objectType;
++    deUint64           objectHandle;
++    deUint64           tagName;
++    deUintptr             tagSize;
++    const void*        pTag;
++} VkDebugUtilsObjectTagInfoEXT;
++
++typedef VkResult (VKAPI_PTR *PFN_vkSetDebugUtilsObjectNameEXT)(VkDevice device, const VkDebugUtilsObjectNameInfoEXT* pNameInfo);
++typedef VkResult (VKAPI_PTR *PFN_vkSetDebugUtilsObjectTagEXT)(VkDevice device, const VkDebugUtilsObjectTagInfoEXT* pTagInfo);
++typedef void (VKAPI_PTR *PFN_vkQueueBeginDebugUtilsLabelEXT)(VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo);
++typedef void (VKAPI_PTR *PFN_vkQueueEndDebugUtilsLabelEXT)(VkQueue queue);
++typedef void (VKAPI_PTR *PFN_vkQueueInsertDebugUtilsLabelEXT)(VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo);
++typedef void (VKAPI_PTR *PFN_vkCmdBeginDebugUtilsLabelEXT)(VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo);
++typedef void (VKAPI_PTR *PFN_vkCmdEndDebugUtilsLabelEXT)(VkCommandBuffer commandBuffer);
++typedef void (VKAPI_PTR *PFN_vkCmdInsertDebugUtilsLabelEXT)(VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo);
++typedef VkResult (VKAPI_PTR *PFN_vkCreateDebugUtilsMessengerEXT)(VkInstance instance, const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugUtilsMessengerEXT* pMessenger);
++typedef void (VKAPI_PTR *PFN_vkDestroyDebugUtilsMessengerEXT)(VkInstance instance, VkDebugUtilsMessengerEXT messenger, const VkAllocationCallbacks* pAllocator);
++typedef void (VKAPI_PTR *PFN_vkSubmitDebugUtilsMessageEXT)(VkInstance instance, VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageTypes, const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData);
++
++#ifndef VK_NO_PROTOTYPES
++VKAPI_ATTR VkResult VKAPI_CALL vkSetDebugUtilsObjectNameEXT(
++    VkDevice                                    device,
++    const VkDebugUtilsObjectNameInfoEXT*        pNameInfo);
++
++VKAPI_ATTR VkResult VKAPI_CALL vkSetDebugUtilsObjectTagEXT(
++    VkDevice                                    device,
++    const VkDebugUtilsObjectTagInfoEXT*         pTagInfo);
++
++VKAPI_ATTR void VKAPI_CALL vkQueueBeginDebugUtilsLabelEXT(
++    VkQueue                                     queue,
++    const VkDebugUtilsLabelEXT*                 pLabelInfo);
++
++VKAPI_ATTR void VKAPI_CALL vkQueueEndDebugUtilsLabelEXT(
++    VkQueue                                     queue);
++
++VKAPI_ATTR void VKAPI_CALL vkQueueInsertDebugUtilsLabelEXT(
++    VkQueue                                     queue,
++    const VkDebugUtilsLabelEXT*                 pLabelInfo);
++
++VKAPI_ATTR void VKAPI_CALL vkCmdBeginDebugUtilsLabelEXT(
++    VkCommandBuffer                             commandBuffer,
++    const VkDebugUtilsLabelEXT*                 pLabelInfo);
++
++VKAPI_ATTR void VKAPI_CALL vkCmdEndDebugUtilsLabelEXT(
++    VkCommandBuffer                             commandBuffer);
++
++VKAPI_ATTR void VKAPI_CALL vkCmdInsertDebugUtilsLabelEXT(
++    VkCommandBuffer                             commandBuffer,
++    const VkDebugUtilsLabelEXT*                 pLabelInfo);
++
++VKAPI_ATTR VkResult VKAPI_CALL vkCreateDebugUtilsMessengerEXT(
++    VkInstance                                  instance,
++    const VkDebugUtilsMessengerCreateInfoEXT*   pCreateInfo,
++    const VkAllocationCallbacks*                pAllocator,
++    VkDebugUtilsMessengerEXT*                   pMessenger);
++
++VKAPI_ATTR void VKAPI_CALL vkDestroyDebugUtilsMessengerEXT(
++    VkInstance                                  instance,
++    VkDebugUtilsMessengerEXT                    messenger,
++    const VkAllocationCallbacks*                pAllocator);
++
++VKAPI_ATTR void VKAPI_CALL vkSubmitDebugUtilsMessageEXT(
++    VkInstance                                  instance,
++    VkDebugUtilsMessageSeverityFlagBitsEXT      messageSeverity,
++    VkDebugUtilsMessageTypeFlagsEXT             messageTypes,
++    const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData);
++#endif
 +
 +
 +#define VK_EXT_shader_stencil_export 1
 +#define VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION 1
 +#define VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME "VK_EXT_shader_stencil_export"
 +
 +
 +#define VK_EXT_sample_locations 1
 +#define VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION 1
 +#define VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME "VK_EXT_sample_locations"
 +typedef struct VkSampleLocationEXT {
 +    float    x;
 +    float    y;
 +} VkSampleLocationEXT;
 +
 +typedef struct VkSampleLocationsInfoEXT {
 +    VkStructureType               sType;
 +    const void*                   pNext;
 +    VkSampleCountFlagBits         sampleLocationsPerPixel;
 +    VkExtent2D                    sampleLocationGridSize;
 +    deUint32                      sampleLocationsCount;
 +    const VkSampleLocationEXT*    pSampleLocations;
 +} VkSampleLocationsInfoEXT;
 +
 +typedef struct VkAttachmentSampleLocationsEXT {
 +    deUint32                    attachmentIndex;
 +    VkSampleLocationsInfoEXT    sampleLocationsInfo;
 +} VkAttachmentSampleLocationsEXT;
 +
 +typedef struct VkSubpassSampleLocationsEXT {
 +    deUint32                    subpassIndex;
 +    VkSampleLocationsInfoEXT    sampleLocationsInfo;
 +} VkSubpassSampleLocationsEXT;
 +
 +typedef struct VkRenderPassSampleLocationsBeginInfoEXT {
 +    VkStructureType                          sType;
 +    const void*                              pNext;
 +    deUint32                                 attachmentInitialSampleLocationsCount;
 +    const VkAttachmentSampleLocationsEXT*    pAttachmentInitialSampleLocations;
 +    deUint32                                 postSubpassSampleLocationsCount;
 +    const VkSubpassSampleLocationsEXT*       pPostSubpassSampleLocations;
 +} VkRenderPassSampleLocationsBeginInfoEXT;
 +
 +typedef struct VkPipelineSampleLocationsStateCreateInfoEXT {
 +    VkStructureType             sType;
 +    const void*                 pNext;
 +    VkBool32                    sampleLocationsEnable;
 +    VkSampleLocationsInfoEXT    sampleLocationsInfo;
 +} VkPipelineSampleLocationsStateCreateInfoEXT;
 +
 +typedef struct VkPhysicalDeviceSampleLocationsPropertiesEXT {
 +    VkStructureType       sType;
 +    void*                 pNext;
 +    VkSampleCountFlags    sampleLocationSampleCounts;
 +    VkExtent2D            maxSampleLocationGridSize;
 +    float                 sampleLocationCoordinateRange[2];
 +    deUint32              sampleLocationSubPixelBits;
 +    VkBool32              variableSampleLocations;
 +} VkPhysicalDeviceSampleLocationsPropertiesEXT;
 +
 +typedef struct VkMultisamplePropertiesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkExtent2D         maxSampleLocationGridSize;
 +} VkMultisamplePropertiesEXT;
 +
 +typedef void (VKAPI_PTR *PFN_vkCmdSetSampleLocationsEXT)(VkCommandBuffer commandBuffer, const VkSampleLocationsInfoEXT* pSampleLocationsInfo);
 +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT)(VkPhysicalDevice physicalDevice, VkSampleCountFlagBits samples, VkMultisamplePropertiesEXT* pMultisampleProperties);
 +
 +#ifndef VK_NO_PROTOTYPES
 +VKAPI_ATTR void VKAPI_CALL vkCmdSetSampleLocationsEXT(
 +    VkCommandBuffer                             commandBuffer,
 +    const VkSampleLocationsInfoEXT*             pSampleLocationsInfo);
 +
 +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMultisamplePropertiesEXT(
 +    VkPhysicalDevice                            physicalDevice,
 +    VkSampleCountFlagBits                       samples,
 +    VkMultisamplePropertiesEXT*                 pMultisampleProperties);
 +#endif
 +
 +
 +#define VK_EXT_blend_operation_advanced 1
 +#define VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION 2
 +#define VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME "VK_EXT_blend_operation_advanced"
 +
 +typedef enum VkBlendOverlapEXT {
 +    VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0,
 +    VK_BLEND_OVERLAP_DISJOINT_EXT = 1,
 +    VK_BLEND_OVERLAP_CONJOINT_EXT = 2,
 +    VK_BLEND_OVERLAP_MAX_ENUM_EXT = 0x7FFFFFFF
 +} VkBlendOverlapEXT;
 +typedef struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           advancedBlendCoherentOperations;
 +} VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT;
 +
 +typedef struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    deUint32           advancedBlendMaxColorAttachments;
 +    VkBool32           advancedBlendIndependentBlend;
 +    VkBool32           advancedBlendNonPremultipliedSrcColor;
 +    VkBool32           advancedBlendNonPremultipliedDstColor;
 +    VkBool32           advancedBlendCorrelatedOverlap;
 +    VkBool32           advancedBlendAllOperations;
 +} VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT;
 +
 +typedef struct VkPipelineColorBlendAdvancedStateCreateInfoEXT {
 +    VkStructureType      sType;
 +    const void*          pNext;
 +    VkBool32             srcPremultiplied;
 +    VkBool32             dstPremultiplied;
 +    VkBlendOverlapEXT    blendOverlap;
 +} VkPipelineColorBlendAdvancedStateCreateInfoEXT;
 +
 +
 +
 +#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"
 +
 +
 +#define VK_EXT_image_drm_format_modifier 1
 +#define VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION 1
 +#define VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME "VK_EXT_image_drm_format_modifier"
 +typedef struct VkDrmFormatModifierPropertiesEXT {
 +    deUint64                drmFormatModifier;
 +    deUint32                drmFormatModifierPlaneCount;
 +    VkFormatFeatureFlags    drmFormatModifierTilingFeatures;
 +} VkDrmFormatModifierPropertiesEXT;
 +
 +typedef struct VkDrmFormatModifierPropertiesListEXT {
 +    VkStructureType                      sType;
 +    void*                                pNext;
 +    deUint32                             drmFormatModifierCount;
 +    VkDrmFormatModifierPropertiesEXT*    pDrmFormatModifierProperties;
 +} VkDrmFormatModifierPropertiesListEXT;
 +
 +typedef struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    deUint64           drmFormatModifier;
 +    VkSharingMode      sharingMode;
 +    deUint32           queueFamilyIndexCount;
 +    const deUint32*    pQueueFamilyIndices;
 +} VkPhysicalDeviceImageDrmFormatModifierInfoEXT;
 +
 +typedef struct VkImageDrmFormatModifierListCreateInfoEXT {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    deUint32           drmFormatModifierCount;
 +    const deUint64*    pDrmFormatModifiers;
 +} VkImageDrmFormatModifierListCreateInfoEXT;
 +
 +typedef struct VkImageDrmFormatModifierExplicitCreateInfoEXT {
 +    VkStructureType               sType;
 +    const void*                   pNext;
 +    deUint64                      drmFormatModifier;
 +    deUint32                      drmFormatModifierPlaneCount;
 +    const VkSubresourceLayout*    pPlaneLayouts;
 +} VkImageDrmFormatModifierExplicitCreateInfoEXT;
 +
 +typedef struct VkImageDrmFormatModifierPropertiesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    deUint64           drmFormatModifier;
 +} VkImageDrmFormatModifierPropertiesEXT;
 +
 +typedef VkResult (VKAPI_PTR *PFN_vkGetImageDrmFormatModifierPropertiesEXT)(VkDevice device, VkImage image, VkImageDrmFormatModifierPropertiesEXT* pProperties);
 +
 +#ifndef VK_NO_PROTOTYPES
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetImageDrmFormatModifierPropertiesEXT(
 +    VkDevice                                    device,
 +    VkImage                                     image,
 +    VkImageDrmFormatModifierPropertiesEXT*      pProperties);
 +#endif
 +
 +
 +#define VK_EXT_filter_cubic 1
 +#define VK_EXT_FILTER_CUBIC_SPEC_VERSION  3
 +#define VK_EXT_FILTER_CUBIC_EXTENSION_NAME "VK_EXT_filter_cubic"
 +typedef struct VkPhysicalDeviceImageViewImageFormatInfoEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkImageViewType    imageViewType;
 +} VkPhysicalDeviceImageViewImageFormatInfoEXT;
 +
 +typedef struct VkFilterCubicImageViewImageFormatPropertiesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           filterCubic;
 +    VkBool32           filterCubicMinmax;
 +} VkFilterCubicImageViewImageFormatPropertiesEXT;
 +
 +
 +
 +#define VK_EXT_global_priority 1
 +#define VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION 2
 +#define VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME "VK_EXT_global_priority"
 +
 +typedef enum VkQueueGlobalPriorityEXT {
 +    VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT = 128,
 +    VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT = 256,
 +    VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT = 512,
 +    VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT = 1024,
 +    VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM_EXT = 0x7FFFFFFF
 +} VkQueueGlobalPriorityEXT;
 +typedef struct VkDeviceQueueGlobalPriorityCreateInfoEXT {
 +    VkStructureType             sType;
 +    const void*                 pNext;
 +    VkQueueGlobalPriorityEXT    globalPriority;
 +} VkDeviceQueueGlobalPriorityCreateInfoEXT;
 +
 +
 +
 +#define VK_EXT_external_memory_host 1
 +#define VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION 1
 +#define VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME "VK_EXT_external_memory_host"
 +typedef struct VkImportMemoryHostPointerInfoEXT {
 +    VkStructureType                       sType;
 +    const void*                           pNext;
 +    VkExternalMemoryHandleTypeFlagBits    handleType;
 +    void*                                 pHostPointer;
 +} VkImportMemoryHostPointerInfoEXT;
 +
 +typedef struct VkMemoryHostPointerPropertiesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    deUint32           memoryTypeBits;
 +} VkMemoryHostPointerPropertiesEXT;
 +
 +typedef struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkDeviceSize       minImportedHostPointerAlignment;
 +} VkPhysicalDeviceExternalMemoryHostPropertiesEXT;
 +
 +typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryHostPointerPropertiesEXT)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, const void* pHostPointer, VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties);
 +
 +#ifndef VK_NO_PROTOTYPES
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryHostPointerPropertiesEXT(
 +    VkDevice                                    device,
 +    VkExternalMemoryHandleTypeFlagBits          handleType,
 +    const void*                                 pHostPointer,
 +    VkMemoryHostPointerPropertiesEXT*           pMemoryHostPointerProperties);
 +#endif
 +
 +
 +#define VK_EXT_calibrated_timestamps 1
++#define VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION 2
 +#define VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME "VK_EXT_calibrated_timestamps"
 +
 +typedef enum VkTimeDomainEXT {
 +    VK_TIME_DOMAIN_DEVICE_EXT = 0,
 +    VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT = 1,
 +    VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = 2,
 +    VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT = 3,
 +    VK_TIME_DOMAIN_MAX_ENUM_EXT = 0x7FFFFFFF
 +} VkTimeDomainEXT;
 +typedef struct VkCalibratedTimestampInfoEXT {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    VkTimeDomainEXT    timeDomain;
 +} VkCalibratedTimestampInfoEXT;
 +
 +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT)(VkPhysicalDevice physicalDevice, deUint32* pTimeDomainCount, VkTimeDomainEXT* pTimeDomains);
 +typedef VkResult (VKAPI_PTR *PFN_vkGetCalibratedTimestampsEXT)(VkDevice device, deUint32 timestampCount, const VkCalibratedTimestampInfoEXT* pTimestampInfos, deUint64* pTimestamps, deUint64* pMaxDeviation);
 +
 +#ifndef VK_NO_PROTOTYPES
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(
 +    VkPhysicalDevice                            physicalDevice,
 +    deUint32*                                   pTimeDomainCount,
 +    VkTimeDomainEXT*                            pTimeDomains);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetCalibratedTimestampsEXT(
 +    VkDevice                                    device,
 +    deUint32                                    timestampCount,
 +    const VkCalibratedTimestampInfoEXT*         pTimestampInfos,
 +    deUint64*                                   pTimestamps,
 +    deUint64*                                   pMaxDeviation);
 +#endif
 +
 +
 +#define VK_EXT_vertex_attribute_divisor 1
 +#define VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION 3
 +#define VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME "VK_EXT_vertex_attribute_divisor"
 +typedef struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    deUint32           maxVertexAttribDivisor;
 +} VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT;
 +
 +typedef struct VkVertexInputBindingDivisorDescriptionEXT {
 +    deUint32    binding;
 +    deUint32    divisor;
 +} VkVertexInputBindingDivisorDescriptionEXT;
 +
 +typedef struct VkPipelineVertexInputDivisorStateCreateInfoEXT {
 +    VkStructureType                                     sType;
 +    const void*                                         pNext;
 +    deUint32                                            vertexBindingDivisorCount;
 +    const VkVertexInputBindingDivisorDescriptionEXT*    pVertexBindingDivisors;
 +} VkPipelineVertexInputDivisorStateCreateInfoEXT;
 +
 +typedef struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           vertexAttributeInstanceRateDivisor;
 +    VkBool32           vertexAttributeInstanceRateZeroDivisor;
 +} VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT;
 +
 +
 +
 +#define VK_EXT_pci_bus_info 1
 +#define VK_EXT_PCI_BUS_INFO_SPEC_VERSION  2
 +#define VK_EXT_PCI_BUS_INFO_EXTENSION_NAME "VK_EXT_pci_bus_info"
 +typedef struct VkPhysicalDevicePCIBusInfoPropertiesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    deUint32           pciDomain;
 +    deUint32           pciBus;
 +    deUint32           pciDevice;
 +    deUint32           pciFunction;
 +} VkPhysicalDevicePCIBusInfoPropertiesEXT;
 +
 +
 +
 +#define VK_EXT_subgroup_size_control 1
 +#define VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION 2
 +#define VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME "VK_EXT_subgroup_size_control"
 +typedef struct VkPhysicalDeviceSubgroupSizeControlFeaturesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           subgroupSizeControl;
 +    VkBool32           computeFullSubgroups;
 +} VkPhysicalDeviceSubgroupSizeControlFeaturesEXT;
 +
 +typedef struct VkPhysicalDeviceSubgroupSizeControlPropertiesEXT {
 +    VkStructureType       sType;
 +    void*                 pNext;
 +    deUint32              minSubgroupSize;
 +    deUint32              maxSubgroupSize;
 +    deUint32              maxComputeWorkgroupSubgroups;
 +    VkShaderStageFlags    requiredSubgroupSizeStages;
 +} VkPhysicalDeviceSubgroupSizeControlPropertiesEXT;
 +
 +typedef struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    deUint32           requiredSubgroupSize;
 +} VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT;
 +
 +
 +
 +#define VK_EXT_shader_image_atomic_int64 1
 +#define VK_EXT_SHADER_IMAGE_ATOMIC_INT64_SPEC_VERSION 1
 +#define VK_EXT_SHADER_IMAGE_ATOMIC_INT64_EXTENSION_NAME "VK_EXT_shader_image_atomic_int64"
 +typedef struct VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           shaderImageInt64Atomics;
 +    VkBool32           sparseImageInt64Atomics;
 +} VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT;
 +
 +
 +
 +#define VK_EXT_memory_budget 1
 +#define VK_EXT_MEMORY_BUDGET_SPEC_VERSION 1
 +#define VK_EXT_MEMORY_BUDGET_EXTENSION_NAME "VK_EXT_memory_budget"
 +typedef struct VkPhysicalDeviceMemoryBudgetPropertiesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkDeviceSize       heapBudget[VK_MAX_MEMORY_HEAPS];
 +    VkDeviceSize       heapUsage[VK_MAX_MEMORY_HEAPS];
 +} VkPhysicalDeviceMemoryBudgetPropertiesEXT;
 +
 +
 +
++#define VK_EXT_validation_features 1
++#define VK_EXT_VALIDATION_FEATURES_SPEC_VERSION 4
++#define VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME "VK_EXT_validation_features"
++
++typedef enum VkValidationFeatureEnableEXT {
++    VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT = 0,
++    VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT = 1,
++    VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT = 2,
++    VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT = 3,
++    VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT = 4,
++    VK_VALIDATION_FEATURE_ENABLE_MAX_ENUM_EXT = 0x7FFFFFFF
++} VkValidationFeatureEnableEXT;
++
++typedef enum VkValidationFeatureDisableEXT {
++    VK_VALIDATION_FEATURE_DISABLE_ALL_EXT = 0,
++    VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT = 1,
++    VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT = 2,
++    VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT = 3,
++    VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT = 4,
++    VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT = 5,
++    VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT = 6,
++    VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 0x7FFFFFFF
++} VkValidationFeatureDisableEXT;
++typedef struct VkValidationFeaturesEXT {
++    VkStructureType                         sType;
++    const void*                             pNext;
++    deUint32                                enabledValidationFeatureCount;
++    const VkValidationFeatureEnableEXT*     pEnabledValidationFeatures;
++    deUint32                                disabledValidationFeatureCount;
++    const VkValidationFeatureDisableEXT*    pDisabledValidationFeatures;
++} VkValidationFeaturesEXT;
++
++
++
 +#define VK_EXT_fragment_shader_interlock 1
 +#define VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION 1
 +#define VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME "VK_EXT_fragment_shader_interlock"
 +typedef struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           fragmentShaderSampleInterlock;
 +    VkBool32           fragmentShaderPixelInterlock;
 +    VkBool32           fragmentShaderShadingRateInterlock;
 +} VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT;
 +
 +
 +
 +#define VK_EXT_ycbcr_image_arrays 1
 +#define VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION 1
 +#define VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME "VK_EXT_ycbcr_image_arrays"
 +typedef struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           ycbcrImageArrays;
 +} VkPhysicalDeviceYcbcrImageArraysFeaturesEXT;
 +
 +
 +
 +#define VK_EXT_headless_surface 1
 +#define VK_EXT_HEADLESS_SURFACE_SPEC_VERSION 1
 +#define VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME "VK_EXT_headless_surface"
 +typedef VkFlags VkHeadlessSurfaceCreateFlagsEXT;
 +typedef struct VkHeadlessSurfaceCreateInfoEXT {
 +    VkStructureType                    sType;
 +    const void*                        pNext;
 +    VkHeadlessSurfaceCreateFlagsEXT    flags;
 +} VkHeadlessSurfaceCreateInfoEXT;
 +
 +typedef VkResult (VKAPI_PTR *PFN_vkCreateHeadlessSurfaceEXT)(VkInstance instance, const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
 +
 +#ifndef VK_NO_PROTOTYPES
 +VKAPI_ATTR VkResult VKAPI_CALL vkCreateHeadlessSurfaceEXT(
 +    VkInstance                                  instance,
 +    const VkHeadlessSurfaceCreateInfoEXT*       pCreateInfo,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkSurfaceKHR*                               pSurface);
 +#endif
 +
 +
 +#define VK_EXT_line_rasterization 1
 +#define VK_EXT_LINE_RASTERIZATION_SPEC_VERSION 1
 +#define VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME "VK_EXT_line_rasterization"
 +
 +typedef enum VkLineRasterizationModeEXT {
 +    VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT = 0,
 +    VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = 1,
 +    VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT = 2,
 +    VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = 3,
 +    VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT = 0x7FFFFFFF
 +} VkLineRasterizationModeEXT;
 +typedef struct VkPhysicalDeviceLineRasterizationFeaturesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           rectangularLines;
 +    VkBool32           bresenhamLines;
 +    VkBool32           smoothLines;
 +    VkBool32           stippledRectangularLines;
 +    VkBool32           stippledBresenhamLines;
 +    VkBool32           stippledSmoothLines;
 +} VkPhysicalDeviceLineRasterizationFeaturesEXT;
 +
 +typedef struct VkPhysicalDeviceLineRasterizationPropertiesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    deUint32           lineSubPixelPrecisionBits;
 +} VkPhysicalDeviceLineRasterizationPropertiesEXT;
 +
 +typedef struct VkPipelineRasterizationLineStateCreateInfoEXT {
 +    VkStructureType               sType;
 +    const void*                   pNext;
 +    VkLineRasterizationModeEXT    lineRasterizationMode;
 +    VkBool32                      stippledLineEnable;
 +    deUint32                      lineStippleFactor;
 +    deUint16                      lineStipplePattern;
 +} VkPipelineRasterizationLineStateCreateInfoEXT;
 +
 +typedef void (VKAPI_PTR *PFN_vkCmdSetLineStippleEXT)(VkCommandBuffer commandBuffer, deUint32 lineStippleFactor, deUint16 lineStipplePattern);
 +
 +#ifndef VK_NO_PROTOTYPES
 +VKAPI_ATTR void VKAPI_CALL vkCmdSetLineStippleEXT(
 +    VkCommandBuffer                             commandBuffer,
 +    deUint32                                    lineStippleFactor,
 +    deUint16                                    lineStipplePattern);
 +#endif
 +
 +
 +#define VK_EXT_shader_atomic_float 1
 +#define VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION 1
 +#define VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME "VK_EXT_shader_atomic_float"
 +typedef struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           shaderBufferFloat32Atomics;
 +    VkBool32           shaderBufferFloat32AtomicAdd;
 +    VkBool32           shaderBufferFloat64Atomics;
 +    VkBool32           shaderBufferFloat64AtomicAdd;
 +    VkBool32           shaderSharedFloat32Atomics;
 +    VkBool32           shaderSharedFloat32AtomicAdd;
 +    VkBool32           shaderSharedFloat64Atomics;
 +    VkBool32           shaderSharedFloat64AtomicAdd;
 +    VkBool32           shaderImageFloat32Atomics;
 +    VkBool32           shaderImageFloat32AtomicAdd;
 +    VkBool32           sparseImageFloat32Atomics;
 +    VkBool32           sparseImageFloat32AtomicAdd;
 +} VkPhysicalDeviceShaderAtomicFloatFeaturesEXT;
 +
 +
 +
 +#define VK_EXT_index_type_uint8 1
 +#define VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION 1
 +#define VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME "VK_EXT_index_type_uint8"
 +typedef struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           indexTypeUint8;
 +} VkPhysicalDeviceIndexTypeUint8FeaturesEXT;
 +
 +
 +
 +#define VK_EXT_extended_dynamic_state 1
 +#define VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION 1
 +#define VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME "VK_EXT_extended_dynamic_state"
 +typedef struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           extendedDynamicState;
 +} VkPhysicalDeviceExtendedDynamicStateFeaturesEXT;
 +
 +typedef void (VKAPI_PTR *PFN_vkCmdSetCullModeEXT)(VkCommandBuffer commandBuffer, VkCullModeFlags cullMode);
 +typedef void (VKAPI_PTR *PFN_vkCmdSetFrontFaceEXT)(VkCommandBuffer commandBuffer, VkFrontFace frontFace);
 +typedef void (VKAPI_PTR *PFN_vkCmdSetPrimitiveTopologyEXT)(VkCommandBuffer commandBuffer, VkPrimitiveTopology primitiveTopology);
 +typedef void (VKAPI_PTR *PFN_vkCmdSetViewportWithCountEXT)(VkCommandBuffer commandBuffer, deUint32 viewportCount, const VkViewport* pViewports);
 +typedef void (VKAPI_PTR *PFN_vkCmdSetScissorWithCountEXT)(VkCommandBuffer commandBuffer, deUint32 scissorCount, const VkRect2D* pScissors);
 +typedef void (VKAPI_PTR *PFN_vkCmdBindVertexBuffers2EXT)(VkCommandBuffer commandBuffer, deUint32 firstBinding, deUint32 bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes, const VkDeviceSize* pStrides);
 +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthTestEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthTestEnable);
 +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthWriteEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthWriteEnable);
 +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthCompareOpEXT)(VkCommandBuffer commandBuffer, VkCompareOp depthCompareOp);
 +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBoundsTestEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthBoundsTestEnable);
 +typedef void (VKAPI_PTR *PFN_vkCmdSetStencilTestEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 stencilTestEnable);
 +typedef void (VKAPI_PTR *PFN_vkCmdSetStencilOpEXT)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, VkStencilOp failOp, VkStencilOp passOp, VkStencilOp depthFailOp, VkCompareOp compareOp);
 +
 +#ifndef VK_NO_PROTOTYPES
 +VKAPI_ATTR void VKAPI_CALL vkCmdSetCullModeEXT(
 +    VkCommandBuffer                             commandBuffer,
 +    VkCullModeFlags                             cullMode);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdSetFrontFaceEXT(
 +    VkCommandBuffer                             commandBuffer,
 +    VkFrontFace                                 frontFace);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdSetPrimitiveTopologyEXT(
 +    VkCommandBuffer                             commandBuffer,
 +    VkPrimitiveTopology                         primitiveTopology);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdSetViewportWithCountEXT(
 +    VkCommandBuffer                             commandBuffer,
 +    deUint32                                    viewportCount,
 +    const VkViewport*                           pViewports);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdSetScissorWithCountEXT(
 +    VkCommandBuffer                             commandBuffer,
 +    deUint32                                    scissorCount,
 +    const VkRect2D*                             pScissors);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdBindVertexBuffers2EXT(
 +    VkCommandBuffer                             commandBuffer,
 +    deUint32                                    firstBinding,
 +    deUint32                                    bindingCount,
 +    const VkBuffer*                             pBuffers,
 +    const VkDeviceSize*                         pOffsets,
 +    const VkDeviceSize*                         pSizes,
 +    const VkDeviceSize*                         pStrides);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthTestEnableEXT(
 +    VkCommandBuffer                             commandBuffer,
 +    VkBool32                                    depthTestEnable);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthWriteEnableEXT(
 +    VkCommandBuffer                             commandBuffer,
 +    VkBool32                                    depthWriteEnable);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthCompareOpEXT(
 +    VkCommandBuffer                             commandBuffer,
 +    VkCompareOp                                 depthCompareOp);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBoundsTestEnableEXT(
 +    VkCommandBuffer                             commandBuffer,
 +    VkBool32                                    depthBoundsTestEnable);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilTestEnableEXT(
 +    VkCommandBuffer                             commandBuffer,
 +    VkBool32                                    stencilTestEnable);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilOpEXT(
 +    VkCommandBuffer                             commandBuffer,
 +    VkStencilFaceFlags                          faceMask,
 +    VkStencilOp                                 failOp,
 +    VkStencilOp                                 passOp,
 +    VkStencilOp                                 depthFailOp,
 +    VkCompareOp                                 compareOp);
 +#endif
 +
 +
 +#define VK_EXT_shader_demote_to_helper_invocation 1
 +#define VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION 1
 +#define VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME "VK_EXT_shader_demote_to_helper_invocation"
 +typedef struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           shaderDemoteToHelperInvocation;
 +} VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT;
 +
 +
 +
 +#define VK_EXT_texel_buffer_alignment 1
 +#define VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION 1
 +#define VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME "VK_EXT_texel_buffer_alignment"
 +typedef struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           texelBufferAlignment;
 +} VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT;
 +
 +typedef struct VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkDeviceSize       storageTexelBufferOffsetAlignmentBytes;
 +    VkBool32           storageTexelBufferOffsetSingleTexelAlignment;
 +    VkDeviceSize       uniformTexelBufferOffsetAlignmentBytes;
 +    VkBool32           uniformTexelBufferOffsetSingleTexelAlignment;
 +} VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT;
 +
 +
 +
 +#define VK_EXT_robustness2 1
 +#define VK_EXT_ROBUSTNESS_2_SPEC_VERSION  1
 +#define VK_EXT_ROBUSTNESS_2_EXTENSION_NAME "VK_EXT_robustness2"
 +typedef struct VkPhysicalDeviceRobustness2FeaturesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           robustBufferAccess2;
 +    VkBool32           robustImageAccess2;
 +    VkBool32           nullDescriptor;
 +} VkPhysicalDeviceRobustness2FeaturesEXT;
 +
 +typedef struct VkPhysicalDeviceRobustness2PropertiesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkDeviceSize       robustStorageBufferAccessSizeAlignment;
 +    VkDeviceSize       robustUniformBufferAccessSizeAlignment;
 +} VkPhysicalDeviceRobustness2PropertiesEXT;
 +
 +
 +
 +#define VK_EXT_custom_border_color 1
 +#define VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION 12
 +#define VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME "VK_EXT_custom_border_color"
 +typedef struct VkSamplerCustomBorderColorCreateInfoEXT {
 +    VkStructureType      sType;
 +    const void*          pNext;
 +    VkClearColorValue    customBorderColor;
 +    VkFormat             format;
 +} VkSamplerCustomBorderColorCreateInfoEXT;
 +
 +typedef struct VkPhysicalDeviceCustomBorderColorPropertiesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    deUint32           maxCustomBorderColorSamplers;
 +} VkPhysicalDeviceCustomBorderColorPropertiesEXT;
 +
 +typedef struct VkPhysicalDeviceCustomBorderColorFeaturesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           customBorderColors;
 +    VkBool32           customBorderColorWithoutFormat;
 +} VkPhysicalDeviceCustomBorderColorFeaturesEXT;
 +
 +
 +
++#define VK_EXT_ycbcr_2plane_444_formats 1
++#define VK_EXT_YCBCR_2PLANE_444_FORMATS_SPEC_VERSION 1
++#define VK_EXT_YCBCR_2PLANE_444_FORMATS_EXTENSION_NAME "VK_EXT_ycbcr_2plane_444_formats"
++typedef struct VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT {
++    VkStructureType    sType;
++    void*              pNext;
++    VkBool32           ycbcr2plane444Formats;
++} VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT;
++
++
++
 +#define VK_EXT_image_robustness 1
 +#define VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION 1
 +#define VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME "VK_EXT_image_robustness"
 +typedef struct VkPhysicalDeviceImageRobustnessFeaturesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           robustImageAccess;
 +} VkPhysicalDeviceImageRobustnessFeaturesEXT;
 +
 +
 +
 +#define VK_EXT_4444_formats 1
 +#define VK_EXT_4444_FORMATS_SPEC_VERSION  1
 +#define VK_EXT_4444_FORMATS_EXTENSION_NAME "VK_EXT_4444_formats"
 +typedef struct VkPhysicalDevice4444FormatsFeaturesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           formatA4R4G4B4;
 +    VkBool32           formatA4B4G4R4;
 +} VkPhysicalDevice4444FormatsFeaturesEXT;
 +
 +
++
++#define VK_EXT_vertex_input_dynamic_state 1
++#define VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_SPEC_VERSION 2
++#define VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME "VK_EXT_vertex_input_dynamic_state"
++typedef struct VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT {
++    VkStructureType    sType;
++    void*              pNext;
++    VkBool32           vertexInputDynamicState;
++} VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT;
++
++typedef struct VkVertexInputBindingDescription2EXT {
++    VkStructureType      sType;
++    void*                pNext;
++    deUint32             binding;
++    deUint32             stride;
++    VkVertexInputRate    inputRate;
++    deUint32             divisor;
++} VkVertexInputBindingDescription2EXT;
++
++typedef struct VkVertexInputAttributeDescription2EXT {
++    VkStructureType    sType;
++    void*              pNext;
++    deUint32           location;
++    deUint32           binding;
++    VkFormat           format;
++    deUint32           offset;
++} VkVertexInputAttributeDescription2EXT;
++
++typedef void (VKAPI_PTR *PFN_vkCmdSetVertexInputEXT)(VkCommandBuffer commandBuffer, deUint32 vertexBindingDescriptionCount, const VkVertexInputBindingDescription2EXT* pVertexBindingDescriptions, deUint32 vertexAttributeDescriptionCount, const VkVertexInputAttributeDescription2EXT* pVertexAttributeDescriptions);
++
++#ifndef VK_NO_PROTOTYPES
++VKAPI_ATTR void VKAPI_CALL vkCmdSetVertexInputEXT(
++    VkCommandBuffer                             commandBuffer,
++    deUint32                                    vertexBindingDescriptionCount,
++    const VkVertexInputBindingDescription2EXT*  pVertexBindingDescriptions,
++    deUint32                                    vertexAttributeDescriptionCount,
++    const VkVertexInputAttributeDescription2EXT* pVertexAttributeDescriptions);
++#endif
++
++
++#define VK_EXT_extended_dynamic_state2 1
++#define VK_EXT_EXTENDED_DYNAMIC_STATE_2_SPEC_VERSION 1
++#define VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME "VK_EXT_extended_dynamic_state2"
++typedef struct VkPhysicalDeviceExtendedDynamicState2FeaturesEXT {
++    VkStructureType    sType;
++    void*              pNext;
++    VkBool32           extendedDynamicState2;
++    VkBool32           extendedDynamicState2LogicOp;
++    VkBool32           extendedDynamicState2PatchControlPoints;
++} VkPhysicalDeviceExtendedDynamicState2FeaturesEXT;
++
++typedef void (VKAPI_PTR *PFN_vkCmdSetPatchControlPointsEXT)(VkCommandBuffer commandBuffer, deUint32 patchControlPoints);
++typedef void (VKAPI_PTR *PFN_vkCmdSetRasterizerDiscardEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 rasterizerDiscardEnable);
++typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBiasEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthBiasEnable);
++typedef void (VKAPI_PTR *PFN_vkCmdSetLogicOpEXT)(VkCommandBuffer commandBuffer, VkLogicOp logicOp);
++typedef void (VKAPI_PTR *PFN_vkCmdSetPrimitiveRestartEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 primitiveRestartEnable);
++
++#ifndef VK_NO_PROTOTYPES
++VKAPI_ATTR void VKAPI_CALL vkCmdSetPatchControlPointsEXT(
++    VkCommandBuffer                             commandBuffer,
++    deUint32                                    patchControlPoints);
++
++VKAPI_ATTR void VKAPI_CALL vkCmdSetRasterizerDiscardEnableEXT(
++    VkCommandBuffer                             commandBuffer,
++    VkBool32                                    rasterizerDiscardEnable);
++
++VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBiasEnableEXT(
++    VkCommandBuffer                             commandBuffer,
++    VkBool32                                    depthBiasEnable);
++
++VKAPI_ATTR void VKAPI_CALL vkCmdSetLogicOpEXT(
++    VkCommandBuffer                             commandBuffer,
++    VkLogicOp                                   logicOp);
++
++VKAPI_ATTR void VKAPI_CALL vkCmdSetPrimitiveRestartEnableEXT(
++    VkCommandBuffer                             commandBuffer,
++    VkBool32                                    primitiveRestartEnable);
++#endif
++
++
++#define VK_EXT_color_write_enable 1
++#define VK_EXT_COLOR_WRITE_ENABLE_SPEC_VERSION 1
++#define VK_EXT_COLOR_WRITE_ENABLE_EXTENSION_NAME "VK_EXT_color_write_enable"
++typedef struct VkPhysicalDeviceColorWriteEnableFeaturesEXT {
++    VkStructureType    sType;
++    void*              pNext;
++    VkBool32           colorWriteEnable;
++} VkPhysicalDeviceColorWriteEnableFeaturesEXT;
++
++typedef struct VkPipelineColorWriteCreateInfoEXT {
++    VkStructureType    sType;
++    const void*        pNext;
++    deUint32           attachmentCount;
++    const VkBool32*    pColorWriteEnables;
++} VkPipelineColorWriteCreateInfoEXT;
++
++typedef void                                    (VKAPI_PTR *PFN_vkCmdSetColorWriteEnableEXT)(VkCommandBuffer       commandBuffer, deUint32                                attachmentCount, const VkBool32*   pColorWriteEnables);
++
++#ifndef VK_NO_PROTOTYPES
++VKAPI_ATTR void                                    VKAPI_CALL vkCmdSetColorWriteEnableEXT(
++    VkCommandBuffer                             commandBuffer,
++    deUint32                                    attachmentCount,
++    const VkBool32*                             pColorWriteEnables);
++#endif
++
 +#ifdef __cplusplus
 +}
 +#endif
 +
 +#endif
 +
@@@ -49,12 -49,15 +49,16 @@@ struct NAME {                                                                                      
  };                                                                                                            \
  } // pt
  
- #define VK_MAKE_VERSION(MAJOR, MINOR, PATCH)  (((deUint32)(MAJOR) << 22u) | ((deUint32)(MINOR) << 12u) | (deUint32)(PATCH))
+ #define VK_MAKE_API_VERSION(VARIANT, MAJOR, MINOR, PATCH)     \
+                                                                                               ((((deUint32)(VARIANT)) << 29) | (((deUint32)(MAJOR)) << 22) | (((deUint32)(MINOR)) << 12) | ((deUint32)(PATCH)))
++#define VKSC_API_VARIANT                                              1
+ #define VK_MAKE_VERSION(MAJOR, MINOR, PATCH)  VK_MAKE_API_VERSION(0, MAJOR, MINOR, PATCH)
  #define VK_BIT(NUM)                                                           (1u<<(deUint32)(NUM))
  
- #define VK_VERSION_MAJOR(version)                             ((deUint32)(version) >> 22)
- #define VK_VERSION_MINOR(version)                             (((deUint32)(version) >> 12) & 0x3ff)
- #define VK_VERSION_PATCH(version)                             ((deUint32)(version) & 0xfff)
+ #define VK_API_VERSION_VARIANT(version)                       ((deUint32)(version) >> 29)
+ #define VK_API_VERSION_MAJOR(version)                 (((deUint32)(version) >> 22) & 0x7FU)
+ #define VK_API_VERSION_MINOR(version)                 (((deUint32)(version) >> 12) & 0x3FFU)
+ #define VK_API_VERSION_PATCH(version)                 ((deUint32)(version) & 0xFFFU)
  
  #define VK_CHECK(EXPR)                                                        vk::checkResult((EXPR), #EXPR, __FILE__, __LINE__)
  #define VK_CHECK_MSG(EXPR, MSG)                                       vk::checkResult((EXPR), MSG, __FILE__, __LINE__)
@@@ -173,13 -176,10 +179,13 @@@ typedef VKAPI_ATTR VkBool32     (VKAPI_CALL
                                                                                                                                                                 const char*                            pMessage,
                                                                                                                                                                 void*                                          pUserData);
  
++#endif // CTS_USES_VULKANSC
++
  typedef VKAPI_ATTR VkBool32 (VKAPI_CALL *PFN_vkDebugUtilsMessengerCallbackEXT)        (VkDebugUtilsMessageSeverityFlagBitsEXT                         messageSeverity,
                                                                                                                                                                 VkDebugUtilsMessageTypeFlagsEXT                                        messageTypes,
                                                                                                                                                                 const struct VkDebugUtilsMessengerCallbackDataEXT*     pCallbackData,
                                                                                                                                                                 void*                                                                                          pUserData);
- #endif // CTS_USES_VULKANSC
 +
  typedef VKAPI_ATTR void               (VKAPI_CALL* PFN_vkDeviceMemoryReportCallbackEXT)       (const struct VkDeviceMemoryReportCallbackDataEXT*      pCallbackData,
                                                                                                                                                                 void*                                                                                          pUserData);
  
@@@ -4673,6 -4929,6 +4929,8 @@@ void initDepthStencilImageChessboardPat
        submitCommandsAndWait(vk, device, queue, *cmdBuffer);
  }
  
++#ifndef CTS_USES_VULKANSC
++
  void allocateAndBindSparseImage (const DeviceInterface&                                               vk,
                                                                 VkDevice                                                                       device,
                                                                 const VkPhysicalDevice                                         physicalDevice,
  
  bool checkSparseImageFormatSupport (const VkPhysicalDevice            physicalDevice,
                                                                        const InstanceInterface&        instance,
-                                                                       const VkImageCreateInfo&        imageCreateInfo)
+                                                                       const VkFormat                          format,
+                                                                       const VkImageType                       imageType,
+                                                                       const VkSampleCountFlagBits     sampleCount,
+                                                                       const VkImageUsageFlags         usageFlags,
+                                                                       const VkImageTiling                     imageTiling)
  {
-       const std::vector<VkSparseImageFormatProperties> sparseImageFormatPropVec =
-               getPhysicalDeviceSparseImageFormatProperties(instance, physicalDevice, imageCreateInfo.format, imageCreateInfo.imageType, imageCreateInfo.samples, imageCreateInfo.usage, imageCreateInfo.tiling);
+       const auto propVec = getPhysicalDeviceSparseImageFormatProperties(instance, physicalDevice, format, imageType, sampleCount, usageFlags, imageTiling);
+       return (propVec.size() != 0);
+ }
  
-       return (sparseImageFormatPropVec.size() != 0);
+ bool checkSparseImageFormatSupport (const VkPhysicalDevice            physicalDevice,
+                                                                       const InstanceInterface&        instance,
+                                                                       const VkImageCreateInfo&        imageCreateInfo)
+ {
+       return checkSparseImageFormatSupport(physicalDevice, instance, imageCreateInfo.format, imageCreateInfo.imageType, imageCreateInfo.samples, imageCreateInfo.usage, imageCreateInfo.tiling);
  }
  
++#endif // CTS_USES_VULKANSC
++
  } // vk
@@@ -323,6 -337,6 +337,8 @@@ void       initDepthStencilImageChessboardPat
                                                                                                 vk::VkImageLayout                                                              newLayout,
                                                                                                 vk::VkPipelineStageFlags                                               dstStageFlags);
  
++#ifndef CTS_USES_VULKANSC
++
  /*--------------------------------------------------------------------*//*!
   * Checks if the physical device supports creation of the specified
   * image format.
@@@ -346,6 -368,6 +370,8 @@@ void       allocateAndBindSparseImage                              (con
                                                                                                 tcu::TextureFormat                                                             format,
                                                                                                 vk::VkImage                                                                    destImage);
  
++#endif // CTS_USES_VULKANSC
++
  } // vk
  
  #endif // _VKIMAGEUTIL_HPP
@@@ -266,8 -257,21 +266,23 @@@ public
                                                                                DebugReportCallbackEXT  (VkInstance, const VkDebugReportCallbackCreateInfoEXT*) {}
                                                                                ~DebugReportCallbackEXT (void) {}
  };
+ class CuModuleNVX
+ {
+ public:
+                                                                               CuModuleNVX     (VkDevice, const VkCuModuleCreateInfoNVX*) {}
+                                                                               ~CuModuleNVX(void) {}
+ };
+ class CuFunctionNVX
+ {
+ public:
+                                                                               CuFunctionNVX(VkDevice, const VkCuFunctionCreateInfoNVX*) {}
+                                                                               ~CuFunctionNVX(void) {}
+ };
 +#endif // CTS_USES_VULKANSC
 +
  class Device
  {
  public:
@@@ -531,6 -531,6 +546,8 @@@ public
                                                {}
  };
  
++#endif // CTS_USES_VULKANSC
++
  class DebugUtilsMessengerEXT
  {
  public:
                                                {}
  };
  
++#ifndef CTS_USES_VULKANSC
++
  class AccelerationStructureNV
  {
  public:
@@@ -561,8 -559,20 +580,22 @@@ public
                                                {}
  };
  
 +#ifndef CTS_USES_VULKANSC
 +
+ class VideoSessionKHR
+ {
+ public:
+                                               VideoSessionKHR                         (VkDevice, const VkVideoSessionCreateInfoKHR*)
+                                               {}
+ };
+ class VideoSessionParametersKHR
+ {
+ public:
+                                               VideoSessionParametersKHR       (VkDevice, const VkVideoSessionParametersCreateInfoKHR*)
+                                               {}
+ };
  class ValidationCacheEXT
  {
  public:
@@@ -266,6 -266,6 +266,7 @@@ VkImageFormatProperties getPhysicalDevi
        return properties;
  }
  
++#ifndef CTS_USES_VULKANSC
  std::vector<VkSparseImageFormatProperties> getPhysicalDeviceSparseImageFormatProperties(const InstanceInterface& vk, VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling)
  {
        deUint32                                                                numProp = 0;
@@@ -303,6 -303,6 +304,7 @@@ std::vector<VkSparseImageMemoryRequirem
  
        return requirements;
  }
++#endif // CTS_USES_VULKANSC
  
  VkMemoryRequirements getBufferMemoryRequirements (const DeviceInterface& vk, VkDevice device, VkBuffer buffer)
  {
@@@ -55,12 -55,12 +55,17 @@@ VkPhysicalDeviceProperties                                         getPhys
  VkPhysicalDeviceMemoryProperties                              getPhysicalDeviceMemoryProperties                               (const InstanceInterface& vk, VkPhysicalDevice physicalDevice);
  VkFormatProperties                                                            getPhysicalDeviceFormatProperties                               (const InstanceInterface& vk, VkPhysicalDevice physicalDevice, VkFormat format);
  VkImageFormatProperties                                                       getPhysicalDeviceImageFormatProperties                  (const InstanceInterface& vk, VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags);
++
++#ifndef CTS_USES_VULKANSC
  std::vector<VkSparseImageFormatProperties>            getPhysicalDeviceSparseImageFormatProperties    (const InstanceInterface& vk, VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling);
++#endif // CTS_USES_VULKANSC
  
  VkMemoryRequirements                                                  getBufferMemoryRequirements                                             (const DeviceInterface& vk, VkDevice device, VkBuffer buffer);
  VkMemoryRequirements                                                  getImageMemoryRequirements                                              (const DeviceInterface& vk, VkDevice device, VkImage image);
  VkMemoryRequirements                                                  getImagePlaneMemoryRequirements                                 (const DeviceInterface& vk, VkDevice device, VkImage image, VkImageAspectFlagBits planeAspect);
++#ifndef CTS_USES_VULKANSC
  std::vector<VkSparseImageMemoryRequirements>  getImageSparseMemoryRequirements                                (const DeviceInterface& vk, VkDevice device, VkImage image);
++#endif // CTS_USES_VULKANSC
  
  std::vector<VkLayerProperties>                                        enumerateInstanceLayerProperties                                (const PlatformInterface& vkp);
  std::vector<VkExtensionProperties>                            enumerateInstanceExtensionProperties                    (const PlatformInterface& vkp, const char* layerName);
  
  namespace vk
  {
 +
 +#ifndef CTS_USES_VULKANSC
 +
+ constexpr VkShaderStageFlags  SHADER_STAGE_ALL_RAY_TRACING    = VK_SHADER_STAGE_RAYGEN_BIT_KHR
+                                                                                                                               | VK_SHADER_STAGE_ANY_HIT_BIT_KHR
+                                                                                                                               | VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR
+                                                                                                                               | VK_SHADER_STAGE_MISS_BIT_KHR
+                                                                                                                               | VK_SHADER_STAGE_INTERSECTION_BIT_KHR
+                                                                                                                               | VK_SHADER_STAGE_CALLABLE_BIT_KHR;
  const VkTransformMatrixKHR identityMatrix3x4 = { { { 1.0f, 0.0f, 0.0f, 0.0f }, { 0.0f, 1.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 1.0f, 0.0f } } };
  
  template<typename T>
@@@ -183,6 -181,6 +183,8 @@@ private
        const VkAllocationCallbacks*    m_allocator;
  };
  
++#endif // CTS_USES_VULKANSC
++
  template<>
  class Deleter<VkDebugUtilsMessengerEXT>
  {
@@@ -180,6 -180,74 +180,76 @@@ inline VkViewport makeViewport(const de
        return makeViewport(0.0f, 0.0f, (float)width, (float)height, 0.0f, 1.0f);
  }
  
+ inline VkPrimitiveTopology primitiveTopologyCastToList (const VkPrimitiveTopology primitiveTopology)
+ {
+       DE_STATIC_ASSERT(static_cast<deUint64>(VK_PRIMITIVE_TOPOLOGY_PATCH_LIST) + 1 == static_cast<deUint64>(VK_PRIMITIVE_TOPOLOGY_LAST));
+       switch (primitiveTopology)
+       {
+               case VK_PRIMITIVE_TOPOLOGY_POINT_LIST:                                          return VK_PRIMITIVE_TOPOLOGY_POINT_LIST;
+               case VK_PRIMITIVE_TOPOLOGY_LINE_LIST:                                           return VK_PRIMITIVE_TOPOLOGY_LINE_LIST;
+               case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP:                                          return VK_PRIMITIVE_TOPOLOGY_LINE_LIST;
+               case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST:                                       return VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST;
+               case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP:                                      return VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST;
+               case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN:                                        return VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST;
+               case VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY:            return VK_PRIMITIVE_TOPOLOGY_LINE_LIST;
+               case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY:           return VK_PRIMITIVE_TOPOLOGY_LINE_LIST;
+               case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY:        return VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST;
+               case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY:       return VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST;
+               case VK_PRIMITIVE_TOPOLOGY_PATCH_LIST:                                          return VK_PRIMITIVE_TOPOLOGY_PATCH_LIST;
+               default: TCU_THROW(InternalError, "Unknown primitive topology.");
+       }
+ }
+ inline bool isPrimitiveTopologyPoint (const VkPrimitiveTopology primitiveTopology)
+ {
+       return primitiveTopologyCastToList(primitiveTopology) == VK_PRIMITIVE_TOPOLOGY_POINT_LIST;
+ }
+ inline bool isPrimitiveTopologyLine (const VkPrimitiveTopology primitiveTopology)
+ {
+       return primitiveTopologyCastToList(primitiveTopology) == VK_PRIMITIVE_TOPOLOGY_LINE_LIST;
+ }
+ inline bool isPrimitiveTopologyTriangle (const VkPrimitiveTopology primitiveTopology)
+ {
+       return primitiveTopologyCastToList(primitiveTopology) == VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST;
+ }
+ inline bool isPrimitiveTopologyPatch (const VkPrimitiveTopology primitiveTopology)
+ {
+       return primitiveTopologyCastToList(primitiveTopology) == VK_PRIMITIVE_TOPOLOGY_PATCH_LIST;
+ }
+ inline bool isAllInStage (const VkShaderStageFlags shaderStageFlags, const VkShaderStageFlags stageMask)
+ {
+       return (shaderStageFlags & stageMask) != 0 && ((shaderStageFlags & ~stageMask) == 0);
+ }
+ inline bool isAllComputeStages (const VkShaderStageFlags shaderStageFlags)
+ {
+       return isAllInStage(shaderStageFlags, VK_SHADER_STAGE_COMPUTE_BIT);
+ }
+ inline bool isAllGraphicsStages (const VkShaderStageFlags shaderStageFlags)
+ {
+       return isAllInStage(shaderStageFlags, VK_SHADER_STAGE_ALL_GRAPHICS);
+ }
++#ifndef CTS_USES_VULKANSC
+ inline bool isAllRayTracingStages (const VkShaderStageFlags shaderStageFlags)
+ {
+       const VkShaderStageFlags        rayTracingStageFlags    = VK_SHADER_STAGE_RAYGEN_BIT_KHR
+                                                                                                               | VK_SHADER_STAGE_ANY_HIT_BIT_KHR
+                                                                                                               | VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR
+                                                                                                               | VK_SHADER_STAGE_MISS_BIT_KHR
+                                                                                                               | VK_SHADER_STAGE_INTERSECTION_BIT_KHR
+                                                                                                               | VK_SHADER_STAGE_CALLABLE_BIT_KHR;
+       return isAllInStage(shaderStageFlags, rayTracingStageFlags);
+ }
++#endif // CTS_USES_VULKANSC
  } // vk
  
  #endif // _VKTYPEUTIL_HPP
@@@ -157,19 -166,8 +166,19 @@@ VkResult createSurface (const InstanceI
                                                VkSurfaceKHR*                                   pSurface)
  {
        // Update this function if you add more WSI implementations
-       DE_STATIC_ASSERT(TYPE_LAST == 6);
+       DE_STATIC_ASSERT(TYPE_LAST == 7);
  
 +#ifdef CTS_USES_VULKANSC
 +      DE_UNREF(vki);
 +      DE_UNREF(instance);
 +      DE_UNREF(wsiType);
 +      DE_UNREF(nativeDisplay);
 +      DE_UNREF(nativeWindow);
 +      DE_UNREF(pAllocator);
 +      DE_UNREF(pSurface);
 +
 +      TCU_THROW(NotSupportedError, "Vulkan SC does not support createSurface");
 +#else // CTS_USES_VULKANSC
        switch (wsiType)
        {
                case TYPE_XLIB:
@@@ -211,13 -163,21 +211,25 @@@ endif (
  
  PCH(DEQP_VK_SRCS pch.cpp)
  
 -add_deqp_module(deqp-vk "${DEQP_VK_SRCS}" "${DEQP_VK_LIBS}" vktTestPackageEntry.cpp)
 +add_deqp_module(deqp-vk "${DEQP_VK_SRCS}" "${DEQP_VK_LIBS}" "tcutil-platform" vktTestPackageEntry.cpp )
 +
 +add_deqp_module(deqp-vksc "${DEQP_VK_SRCS}" "${DEQP_VKSC_LIBS}" "tcutil-sc-platform" vktTestPackageEntrySC.cpp)
 +target_include_directories(deqp-vksc-package BEFORE PUBLIC ${CMAKE_SOURCE_DIR}/external/vulkancts/framework/vulkan/generated/vulkansc)
 +target_include_directories(deqp-vksc BEFORE PUBLIC ${CMAKE_SOURCE_DIR}/external/vulkancts/framework/vulkan/generated/vulkansc)
  
- add_data_dir(deqp-vk ../../data/vulkan        vulkan)
+ add_data_dir(deqp-vk ../../data/vulkan vulkan)
+ add_data_dir(deqp-vk ../../mustpass/master/vk-default vk-default)
+ # add all directories containing android mustpass
+ file(GLOB PATHS_MATCHING_PATTERN ${CMAKE_SOURCE_DIR}/android/cts/master/vk-*/)
+ FOREACH(FOUND_PATH ${PATHS_MATCHING_PATTERN})
+       IF(IS_DIRECTORY ${FOUND_PATH})
+               SET(LAST_DIRECTORY "")
+               file(RELATIVE_PATH LAST_DIRECTORY ${CMAKE_SOURCE_DIR}/android/cts/master ${FOUND_PATH})
+               add_data_dir(deqp-vk ../../../../android/cts/master/${LAST_DIRECTORY} ${LAST_DIRECTORY})
+       ENDIF()
+ ENDFOREACH()
  
  if (DE_OS_IS_WIN32 OR DE_OS_IS_UNIX OR DE_OS_IS_OSX)
        add_executable(vk-build-programs vktBuildPrograms.cpp)
@@@ -7,11 -7,13 +7,12 @@@ set(DEQP_VK_UTIL_SRC
        vktDrawUtil.hpp
        vktExternalMemoryUtil.cpp
        vktExternalMemoryUtil.hpp
+       vktConstexprVectorUtil.hpp
  )
  
 -set(DEQP_VK_UTIL_LIBS
 -      tcutil
 -      vkutil
 -)
 -
  add_library(deqp-vk-util STATIC ${DEQP_VK_UTIL_SRCS})
 -target_link_libraries(deqp-vk-util ${DEQP_VK_UTIL_LIBS})
 +target_link_libraries(deqp-vk-util PUBLIC tcutil vkutil)
 +
 +add_library(deqp-vksc-util STATIC ${DEQP_VK_UTIL_SRCS})
 +target_include_directories(deqp-vksc-util BEFORE PUBLIC ${CMAKE_SOURCE_DIR}/external/vulkancts/framework/vulkan/generated/vulkansc)
 +target_link_libraries(deqp-vksc-util PUBLIC tcutil vkscutil)
@@@ -372,10 -369,9 +374,10 @@@ namespac
  
  deUint32 sanitizeApiVersion(deUint32 v)
  {
-       return VK_MAKE_VERSION( VK_VERSION_MAJOR(v), VK_VERSION_MINOR(v), 0 );
+       return VK_MAKE_VERSION(VK_API_VERSION_MAJOR(v), VK_API_VERSION_MINOR(v), 0 );
  }
  
 +#ifndef CTS_USES_VULKANSC
  de::MovePtr<vk::DebugReportRecorder> createDebugReportRecorder (const vk::PlatformInterface& vkp, const vk::InstanceInterface& vki, vk::VkInstance instance, bool printValidationErrors)
  {
        if (isDebugReportSupported(vkp))
@@@ -540,6 -538,8 +546,10 @@@ bool Context::isDeviceFunctionalitySupp
                        return !!getExtendedDynamicStateFeaturesEXT().extendedDynamicState;
                if (extension == "VK_EXT_shader_demote_to_helper_invocation")
                        return !!getShaderDemoteToHelperInvocationFeaturesEXT().shaderDemoteToHelperInvocation;
++#ifndef CTS_USES_VULKANSC
+               if (extension == "VK_KHR_workgroup_memory_explicit_layout")
+                       return !!getWorkgroupMemoryExplicitLayoutFeatures().workgroupMemoryExplicitLayout;
++#endif // CTS_USES_VULKANSC
  
                return true;
        }
@@@ -87,43 -91,41 +91,43 @@@ public
  
  #include "vkDevicePropertiesForContextDecl.inl"
  
-       const std::vector<std::string>&                         getDeviceExtensions                                     (void) const;
-       vk::VkDevice                                                            getDevice                                                       (void) const;
-       const vk::DeviceInterface&                                      getDeviceInterface                                      (void) const;
-       deUint32                                                                        getUniversalQueueFamilyIndex            (void) const;
-       vk::VkQueue                                                                     getUniversalQueue                                       (void) const;
-       deUint32                                                                        getUsedApiVersion                                       (void) const;
-       deUint32                                                                        getSparseQueueFamilyIndex                       (void) const;
-       vk::VkQueue                                                                     getSparseQueue                                          (void) const;
-       vk::Allocator&                                                          getDefaultAllocator                                     (void) const;
-       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) 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;      }
+       const std::vector<std::string>&                                 getDeviceExtensions                                     (void) const;
+       vk::VkDevice                                                                    getDevice                                                       (void) const;
+       const vk::DeviceInterface&                                              getDeviceInterface                                      (void) const;
+       deUint32                                                                                getUniversalQueueFamilyIndex            (void) const;
+       vk::VkQueue                                                                             getUniversalQueue                                       (void) const;
+       deUint32                                                                                getUsedApiVersion                                       (void) const;
+       deUint32                                                                                getSparseQueueFamilyIndex                       (void) const;
+       vk::VkQueue                                                                             getSparseQueue                                          (void) const;
+       vk::Allocator&                                                                  getDefaultAllocator                                     (void) const;
+       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) 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;      }
  
 -      bool                                                                                    hasDebugReportRecorder                          () const;
 -      vk::DebugReportRecorder&                                                getDebugReportRecorder                          () const;
 +#ifndef CTS_USES_VULKANSC
 +      bool                                                                            hasDebugReportRecorder                  () const;
 +      vk::DebugReportRecorder&                                        getDebugReportRecorder                  () const;
 +#endif // CTS_USES_VULKANSC
  
  protected:
-       tcu::TestContext&                                                       m_testCtx;
-       const vk::PlatformInterface&                            m_platformInterface;
-       vk::BinaryCollection&                                           m_progCollection;
+       tcu::TestContext&                                                               m_testCtx;
+       const vk::PlatformInterface&                                    m_platformInterface;
+       vk::BinaryCollection&                                                   m_progCollection;
  
-       const de::UniquePtr<DefaultDevice>                      m_device;
-       const de::UniquePtr<vk::Allocator>                      m_allocator;
+       const de::UniquePtr<DefaultDevice>                              m_device;
+       const de::UniquePtr<vk::Allocator>                              m_allocator;
  
-       bool                                                                            m_resultSetOnValidation;
+       bool                                                                                    m_resultSetOnValidation;
  
  private:
                                                                                                Context                                                         (const Context&); // Not allowed
@@@ -348,10 -348,48 +348,50 @@@ void TestCaseExecutor::deinit (tcu::Tes
        if (m_renderDoc) m_renderDoc->endFrame(m_context.getInstance());
  
        // Collect and report any debug messages
 +#ifndef CTS_USES_VULKANSC
        if (m_context.hasDebugReportRecorder())
                collectAndReportDebugMessages(m_context.getDebugReportRecorder(), m_context);
 +#endif // CTS_USES_VULKANSC
+       if (testCase != DE_NULL)
+               logUnusedShaders(testCase);
+ }
+ void TestCaseExecutor::logUnusedShaders (tcu::TestCase* testCase)
+ {
+       const qpTestResult      testResult      = testCase->getTestContext().getTestResult();
+       if (testResult == QP_TEST_RESULT_PASS || testResult == QP_TEST_RESULT_QUALITY_WARNING || testResult == QP_TEST_RESULT_COMPATIBILITY_WARNING)
+       {
+               bool    unusedShaders   = false;
+               for (vk::BinaryCollection::Iterator it = m_progCollection.begin(); it != m_progCollection.end(); ++it)
+               {
+                       if (!it.getProgram().getUsed())
+                       {
+                               unusedShaders = true;
+                               break;
+                       }
+               }
+               if (unusedShaders)
+               {
+                       std::string message;
+                       for (vk::BinaryCollection::Iterator it = m_progCollection.begin(); it != m_progCollection.end(); ++it)
+                       {
+                               if (!it.getProgram().getUsed())
+                                       message += it.getName() + ",";
+                       }
+                       message.resize(message.size() - 1);
+                       message = std::string("Unused shaders: ") + message;
+                       m_context.getTestContext().getLog() << TestLog::Message << message << TestLog::EndMessage;
+               }
+       }
  }
  
  tcu::TestNode::IterateResult TestCaseExecutor::iterate (tcu::TestCase*)
index 264d26d,0000000..36b2ee7
mode 100644,000000..100644
--- /dev/null
@@@ -1,2 -1,0 +1,1 @@@
- dEQP-VKSC.api.version_check.version
- dEQP-VKSC.api.version_check.entry_points
++vksc-default/api.txt
index 0000000,0000000..264d26d
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,2 @@@
++dEQP-VKSC.api.version_check.version
++dEQP-VKSC.api.version_check.entry_points
@@@ -54,23 -53,18 +54,25 @@@ BUILD_CONFIG               = getBuildConfig(DEFAULT_
  
  VULKAN_MASTER_PKG     = Package(module = VULKAN_MODULE, configurations = [
                  # Master
-                 Configuration(name            = "default",
-                                               filters         = [include("master.txt"),
-                                                                          exclude("test-issues.txt"),
-                                                                          exclude("excluded-tests.txt"),
-                                                                          exclude("android-tests.txt")]),
-                 Configuration(name            = "fraction-mandatory-tests",
-                                               filters         = [include("fraction-mandatory-tests.txt")]),
+                 Configuration(name                                    = "default",
+                                               filters                                 = [include("master.txt"),
+                                                                                                  exclude("test-issues.txt"),
+                                                                                                  exclude("excluded-tests.txt"),
+                                                                                                  exclude("android-tests.txt")],
+                                               splitToMultipleFiles    = True),
+                 Configuration(name                                    = "fraction-mandatory-tests",
+                                               filters                                 = [include("fraction-mandatory-tests.txt")]),
         ])
  
-                                               filters         = [include("master_sc.txt"),]),
-        ])
 +VULKAN_SC_MASTER_PKG  = Package(module = VULKAN_SC_MODULE, configurations = [
 +                # Master
 +                Configuration(name            = "default",
++                                              filters                                 = [include("master_sc.txt"),],
++                                              splitToMultipleFiles    = True),
++      ])
 +
  MUSTPASS_LISTS                = [
 -                Mustpass(project = PROJECT,   version = "master",     packages = [VULKAN_MASTER_PKG]),
 +                Mustpass(project = PROJECT,   version = "master",     packages = [VULKAN_MASTER_PKG, VULKAN_SC_MASTER_PKG]),
        ]
  
  if __name__ == "__main__":
@@@ -155,10 -153,10 +155,12 @@@ def prefixName (prefix, name)
        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("VULKAN_SC_10_FEATURES", "VULKAN_SC_1_0_FEATURES")
 +      name = name.replace("VULKAN_SC_10_PROPERTIES", "VULKAN_SC_1_0_PROPERTIES")
        name = name.replace("INT_8_", "INT8_")
        name = name.replace("AABBNV", "AABB_NV")
+       name = name.replace("_H_264_", "_H264_")
+       name = name.replace("_H_265_", "_H265_")
  
        return prefix + name
  
@@@ -732,20 -729,38 +739,38 @@@ def parseBitfieldNames (src)
  
        return matches
  
+ def parse64bitBitfieldNames (src):
+       ptrn            = r'typedef\s+VkFlags64\s(' + IDENT_PTRN + r')\s*;'
+       matches         = re.findall(ptrn, src)
+       return matches
+ def parse64bitBitfieldValues (src, bitfieldNamesList):
+       bitfields64 = []
+       for bitfieldName in bitfieldNamesList:
+               ptrn            = r'static const ' + bitfieldName + r'\s*(' + IDENT_PTRN + r')\s*=\s*([a-zA-Z0-9_]+)\s*;'
+               matches         = re.findall(ptrn, src)
+               bitfields64.append(Bitfield(bitfieldName, matches))
+       return bitfields64
  def parseAPI (src):
 -      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] +\
 -                                        [Definition(type, name, parsePreprocDefinedValue(src, name)) for name, type in DEFINITIONS]
 +      versionsData = parseVersions(src)
 +      versions     = [Version((v[2], v[3], v[4], 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)
-       enums                   = []
-       bitfields               = []
-       bitfieldEnums   = set([getBitEnumNameForBitfield(n) for n in bitfieldNames if getBitEnumNameForBitfield(n) in [enum.name for enum in rawEnums]])
-       compositeTypes  = parseCompositeTypesByVersion(src, versionsData)
-       allFunctions    = parseFunctionsByVersion(src, versionsData)
+       handles                         = parseHandles(src)
+       rawEnums                        = parseEnums(src)
+       bitfieldNames           = parseBitfieldNames(src)
+       bitfieldEnums           = set([getBitEnumNameForBitfield(n) for n in bitfieldNames if getBitEnumNameForBitfield(n) in [enum.name for enum in rawEnums]])
+       bitfield64Names         = parse64bitBitfieldNames(src)
+       bitfields64                     = parse64bitBitfieldValues(src, bitfield64Names)
+       enums                           = []
+       bitfields                       = []
+       compositeTypes          = parseCompositeTypesByVersion(src, versionsData)
+       allFunctions            = parseFunctionsByVersion(src, versionsData)
  
        for enum in rawEnums:
                if enum.name in bitfieldEnums:
@@@ -2332,31 -2364,28 +2396,46 @@@ def writeExtensionList(filename, patter
        stream.append('};\n')
        writeInlFile(filename, INL_HEADER, stream)
  
 +def parseCmdLineArgs():
 +      parser = argparse.ArgumentParser(description = "Generate Vulkan INL files",
 +                                                                       formatter_class=argparse.ArgumentDefaultsHelpFormatter)
 +      parser.add_argument("-a",
 +                                              "--api",
 +                                              dest="api",
 +                                              default="",
 +                                              help="Choose between Vulkan and Vulkan SC")
 +      return parser.parse_args()
 +
+ def preprocessTopInclude(src, dir):
+       pattern = r'#include\s+"([^\n]+)"'
+       while True:
+               inc = re.search(pattern, src)
+               if inc is None:
+                       return src
+               incFileName = inc.string[inc.start(1):inc.end(1)]
+               patternIncNamed = r'#include\s+"' + incFileName + '"'
+               incBody = readFile(os.path.join(dir, incFileName)) if incFileName != 'vk_platform.h' else ''
+               incBodySanitized = re.sub(pattern, '', incBody)
+               bodyEndSanitized = re.sub(patternIncNamed, '', src[inc.end(0):])
+               src = src[0:inc.start(0)] + incBodySanitized + bodyEndSanitized
+       return src
  if __name__ == "__main__":
 -      # Read all .h files, with vulkan_core.h first
 -      files                   = os.listdir(VULKAN_H_DIR)
 -      files                   = [f for f in files if f.endswith(".h")]
 -      files.sort()
 -      files.remove("vulkan_core.h")
 -      first = ["vk_video/vulkan_video_codecs_common.h", "vulkan_core.h"]
 -      files = first + files
 +      args = parseCmdLineArgs()
 +
 +      files = []
 +      if args.api=='':
-               # Read all .h files, with vulkan_core.h first, skip vulkan_sc_core.h
-               files                   = os.listdir(VULKAN_H_DIR)
-               files                   = [f for f in files if f.endswith(".h")]
++              # Read all .h files, with vulkan_core.h and vk_video/vulkan_video_codecs_common.h first, skip vulkan_sc_core.h
++              files = os.listdir(VULKAN_H_DIR)
++              files = [f for f in files if f.endswith(".h")]
 +              files.sort()
 +              files.remove("vulkan_core.h")
 +              files.remove("vulkan_sc_core.h")
-               files.insert(0, "vulkan_core.h")
++              first = ["vk_video/vulkan_video_codecs_common.h", "vulkan_core.h"]
++              files = first + files
 +      elif args.api=='SC':
 +              # Read only vulkan_sc_core.h
 +              files.insert(0, "vulkan_sc_core.h")
  
        src                             = ""
        for file in files:
  
  import os
  import sys
 +import argparse
+ import re
  
  sys.path.append(os.path.join(os.path.dirname(__file__), "..", "..", "..", "scripts"))
  
  from build.common import DEQP_DIR
  from khr_util.format import writeInlFile
  
- VK_API_NAMES                                  = { "" :        "Vulkan API",
-                                                                       "SC" :  "Vulkan SC API"}
- VULKAN_H      = { "" :        os.path.join(os.path.dirname(__file__), "src", "vulkan_core.h"),
-                               "SC" :  os.path.join(os.path.dirname(__file__), "src", "vulkan_sc_core.h") }
 -VULKAN_H      = [
 -      os.path.join(os.path.dirname(__file__), "src", "vk_video", "vulkan_video_codecs_common.h"),
 -      os.path.join(os.path.dirname(__file__), "src", "vk_video", "vulkan_video_codec_h264std.h"),
 -      os.path.join(os.path.dirname(__file__), "src", "vk_video", "vulkan_video_codec_h264std_encode.h"),
 -      os.path.join(os.path.dirname(__file__), "src", "vk_video", "vulkan_video_codec_h265std.h"),
 -      os.path.join(os.path.dirname(__file__), "src", "vk_video", "vulkan_video_codec_h264std_decode.h"),
 -      os.path.join(os.path.dirname(__file__), "src", "vk_video", "vulkan_video_codec_h265std_decode.h"),
 -      os.path.join(os.path.dirname(__file__), "src", "vulkan_core.h"),
 -      ]
 -#VULKAN_H     = os.path.join(os.path.dirname(__file__), "src", "vulkan_core.h")
 -VULKAN_DIR    = os.path.join(os.path.dirname(__file__), "..", "framework", "vulkan")
++VULKAN_H      = { "" : [
++                                              os.path.join(os.path.dirname(__file__), "src", "vk_video", "vulkan_video_codecs_common.h"),
++                                              os.path.join(os.path.dirname(__file__), "src", "vk_video", "vulkan_video_codec_h264std.h"),
++                                              os.path.join(os.path.dirname(__file__), "src", "vk_video", "vulkan_video_codec_h264std_encode.h"),
++                                              os.path.join(os.path.dirname(__file__), "src", "vk_video", "vulkan_video_codec_h265std.h"),
++                                              os.path.join(os.path.dirname(__file__), "src", "vk_video", "vulkan_video_codec_h264std_decode.h"),
++                                              os.path.join(os.path.dirname(__file__), "src", "vk_video", "vulkan_video_codec_h265std_decode.h"),
++                                              os.path.join(os.path.dirname(__file__), "src", "vulkan_core.h") ],
++                              "SC" : [ os.path.join(os.path.dirname(__file__), "src", "vulkan_sc_core.h") ] }
 +VULKAN_DIR    = { "" :        os.path.join(os.path.dirname(__file__), "..", "framework", "vulkan"),
 +                              "SC" :  os.path.join(os.path.dirname(__file__), "..", "framework", "vulkan", "generated", "vulkansc") }
  
  INL_HEADER = """\
  /* WARNING: This is auto-generated file. Do not modify, since changes will
@@@ -70,22 -73,9 +74,25 @@@ def writeVulkanCHeader (src, filename)
                yield dst
        writeInlFile(filename, INL_HEADER, gen())
  
 +def parseCmdLineArgs():
 +      parser = argparse.ArgumentParser(description = "Generate Vulkan INL files",
 +                                                                       formatter_class=argparse.ArgumentDefaultsHelpFormatter)
 +      parser.add_argument("-a",
 +                                              "--api",
 +                                              dest="api",
 +                                              default="",
 +                                              help="Choose between Vulkan and Vulkan SC")
 +      return parser.parse_args()
 +
 +def getApiName (args):
 +      if len(args)<2:
 +              return ''
 +      return args[1]
 +
  if __name__ == "__main__":
-       src                                             = readFile(VULKAN_H[args.api])
-       writeVulkanCHeader              (src, os.path.join(VULKAN_DIR[args.api], "vkVulkan_c.inl"))
 +      args                                    = parseCmdLineArgs()
 -      for file in VULKAN_H:
+       src = ""
 -      writeVulkanCHeader                              (src, os.path.join(VULKAN_DIR, "vkVulkan_c.inl"))
++      for file in VULKAN_H[args.api]:
+               src += readFile(file)
++      writeVulkanCHeader                              (src, os.path.join(VULKAN_DIR[args.api], "vkVulkan_c.inl"))
@@@ -35,17 -35,20 +35,20 @@@ VkPhysicalDevicePipelineExecutablePrope
  VkPhysicalDeviceSubgroupSizeControlFeaturesEXT                                FEATURES ( subgroupSizeControl )                                                                REQUIREMENTS ( VK_EXT_subgroup_size_control )
  VkPhysicalDeviceSubgroupSizeControlFeaturesEXT                                FEATURES ( computeFullSubgroups )                                                               REQUIREMENTS ( VK_EXT_subgroup_size_control )
  VkPhysicalDeviceVulkan12Features                                                      FEATURES ( subgroupBroadcastDynamicId )                                                 REQUIREMENTS ( "ApiVersion(1, 2, 0)" )
 -VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR                FEATURES ( shaderSubgroupExtendedTypes )                                                REQUIREMENTS ( VK_KHR_shader_subgroup_extended_types )
 +VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures                   FEATURES ( shaderSubgroupExtendedTypes )                                                REQUIREMENTS ( VK_KHR_shader_subgroup_extended_types )
  VkPhysicalDeviceVulkan12Features                                                      FEATURES ( shaderSubgroupExtendedTypes )                                                REQUIREMENTS ( "ApiVersion(1, 2, 0)" )
 -VkPhysicalDeviceImagelessFramebufferFeaturesKHR                       FEATURES ( imagelessFramebuffer )                                                               REQUIREMENTS ( VK_KHR_imageless_framebuffer )
 +VkPhysicalDeviceImagelessFramebufferFeatures                          FEATURES ( imagelessFramebuffer )                                                               REQUIREMENTS ( VK_KHR_imageless_framebuffer )
  VkPhysicalDeviceVulkan12Features                                                      FEATURES ( imagelessFramebuffer )                                                               REQUIREMENTS ( "ApiVersion(1, 2, 0)" )
  VkPhysicalDeviceVulkan12Features                                                      FEATURES ( uniformBufferStandardLayout )                                                REQUIREMENTS ( "ApiVersion(1, 2, 0)" )
 -VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR                FEATURES ( separateDepthStencilLayouts )                                                REQUIREMENTS ( VK_KHR_separate_depth_stencil_layouts )
 +VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures                   FEATURES ( separateDepthStencilLayouts )                                                REQUIREMENTS ( VK_KHR_separate_depth_stencil_layouts )
+ VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT               FEATURES ( pipelineCreationCacheControl )                                               REQUIREMENTS ( VK_EXT_pipeline_creation_cache_control )
  VkPhysicalDeviceVulkan12Features                                                      FEATURES ( separateDepthStencilLayouts )                                                REQUIREMENTS ( "ApiVersion(1, 2, 0)" )
 -VkPhysicalDeviceHostQueryResetFeaturesEXT                                     FEATURES ( hostQueryReset )                                                                             REQUIREMENTS ( VK_EXT_host_query_reset )
 +VkPhysicalDeviceHostQueryResetFeatures                                                FEATURES ( hostQueryReset )                                                                             REQUIREMENTS ( VK_EXT_host_query_reset )
  VkPhysicalDeviceVulkan12Features                                                      FEATURES ( hostQueryReset )                                                                             REQUIREMENTS ( "ApiVersion(1, 2, 0)" )
 -VkPhysicalDeviceTimelineSemaphoreFeaturesKHR                          FEATURES ( timelineSemaphore )                                                                  REQUIREMENTS ( VK_KHR_timeline_semaphore )
 +VkPhysicalDeviceTimelineSemaphoreFeatures                                     FEATURES ( timelineSemaphore )                                                                  REQUIREMENTS ( VK_KHR_timeline_semaphore )
  VkPhysicalDeviceVulkan12Features                                                      FEATURES ( timelineSemaphore )                                                                  REQUIREMENTS ( "ApiVersion(1, 2, 0)" )
+ VkPhysicalDeviceFeatures                                                                      FEATURES ( shaderSampledImageArrayDynamicIndexing )                             REQUIREMENTS ( "ApiVersion(1, 2, 0)" physicalDeviceVulkan12Features.descriptorIndexing )
+ VkPhysicalDeviceFeatures                                                                      FEATURES ( shaderStorageBufferArrayDynamicIndexing )                    REQUIREMENTS ( "ApiVersion(1, 2, 0)" physicalDeviceVulkan12Features.descriptorIndexing )
  VkPhysicalDeviceVulkan12Features                                                      FEATURES ( shaderUniformTexelBufferArrayDynamicIndexing )               REQUIREMENTS ( "ApiVersion(1, 2, 0)" physicalDeviceVulkan12Features.descriptorIndexing )
  VkPhysicalDeviceVulkan12Features                                                      FEATURES ( shaderStorageTexelBufferArrayDynamicIndexing )               REQUIREMENTS ( "ApiVersion(1, 2, 0)" physicalDeviceVulkan12Features.descriptorIndexing )
  VkPhysicalDeviceVulkan12Features                                                      FEATURES ( shaderSampledImageArrayNonUniformIndexing )                  REQUIREMENTS ( "ApiVersion(1, 2, 0)" physicalDeviceVulkan12Features.descriptorIndexing )
index 3b7f30d,0000000..a4c5ec8
mode 100644,000000..100644
--- /dev/null
@@@ -1,7161 -1,0 +1,7686 @@@
- #if !defined(VK_DEFINE_NON_DISPATCHABLE_HANDLE)
- #if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__) ) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__)
-         #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object;
- #else
-         #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object;
 +#ifndef VULKAN_SC_CORE_H_
 +#define VULKAN_SC_CORE_H_ 1
 +
 +/*
 +** Copyright 2015-2021 The Khronos Group Inc.
 +**
 +** SPDX-License-Identifier: Apache-2.0
 +*/
 +
 +/*
 +** This header is generated from the Khronos Vulkan XML API Registry.
 +**
 +*/
 +
 +
 +#ifdef __cplusplus
 +extern "C" {
 +#endif
 +
 +
 +
 +#define VK_VERSION_1_0 1
 +#include "vk_platform.h"
 +
 +#define VK_DEFINE_HANDLE(object) typedef struct object##_T* object;
 +
 +
- #define VK_MAKE_VERSION(major, minor, patch) \
-     ((((uint32_t)(major)) << 22) | (((uint32_t)(minor)) << 12) | ((uint32_t)(patch)))
++#ifndef VK_USE_64_BIT_PTR_DEFINES
++    #if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__) ) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__)
++        #define VK_USE_64_BIT_PTR_DEFINES 1
++    #else
++        #define VK_USE_64_BIT_PTR_DEFINES 0
++    #endif
++#endif
++
++
++#ifndef VK_DEFINE_NON_DISPATCHABLE_HANDLE
++    #if (VK_USE_64_BIT_PTR_DEFINES==1)
++        #if (defined(__cplusplus) && (__cplusplus >= 201103L)) || (defined(_MSVC_LANG) && (_MSVC_LANG >= 201103L))
++            #define VK_NULL_HANDLE nullptr
++        #else
++            #define VK_NULL_HANDLE ((void*)0)
++        #endif
++    #else
++        #define VK_NULL_HANDLE 0ULL
++    #endif
 +#endif
++#ifndef VK_NULL_HANDLE
++    #define VK_NULL_HANDLE 0
 +#endif
 +
- // DEPRECATED: This define has been removed. Specific version defines (e.g. VK_API_VERSION_1_0), or the VK_MAKE_VERSION macro, should be used instead.
- //#define VK_API_VERSION VK_MAKE_VERSION(1, 0, 0) // Patch version should always be set to 0
 +
- #define VK_API_VERSION_1_0 VK_MAKE_VERSION(1, 0, 0)// Patch version should always be set to 0
++#ifndef VK_DEFINE_NON_DISPATCHABLE_HANDLE
++    #if (VK_USE_64_BIT_PTR_DEFINES==1)
++        #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object;
++    #else
++        #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object;
++    #endif
++#endif
++
++#define VK_MAKE_API_VERSION(variant, major, minor, patch) \
++    ((((uint32_t)(variant)) << 29) | (((uint32_t)(major)) << 22) | (((uint32_t)(minor)) << 12) | ((uint32_t)(patch)))
 +
 +// Vulkan 1.0 version number
- #define VK_HEADER_VERSION 0
- // Complete version of this file
- #define VK_HEADER_VERSION_COMPLETE VK_MAKE_VERSION(1, 2, VK_HEADER_VERSION)
++#define VK_API_VERSION_1_0 VK_MAKE_API_VERSION(0, 1, 0, 0)// Patch version should always be set to 0
 +
 +// Version of this file
- #define VK_VERSION_MAJOR(version) ((uint32_t)(version) >> 22)
- #define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff)
- #define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff)
++#define VK_HEADER_VERSION 1
 +
- #define VK_NULL_HANDLE 0
++// Vulkan SC variant number
++#define VKSC_API_VARIANT 1
 +
- #define VK_FALSE                          0
- #define VK_LOD_CLAMP_NONE                 1000.0f
++// Complete version of this file
++#define VK_HEADER_VERSION_COMPLETE VK_MAKE_API_VERSION(VKSC_API_VARIANT, 1, 0, VK_HEADER_VERSION)
 +
++#define VK_API_VERSION_VARIANT(version) ((uint32_t)(version) >> 29)
++#define VK_API_VERSION_MAJOR(version) (((uint32_t)(version) >> 22) & 0x7FU)
++#define VK_API_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3FFU)
++#define VK_API_VERSION_PATCH(version) ((uint32_t)(version) & 0xFFFU)
 +typedef uint32_t VkBool32;
 +typedef uint64_t VkDeviceAddress;
 +typedef uint64_t VkDeviceSize;
 +typedef uint32_t VkFlags;
 +typedef uint32_t VkSampleMask;
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBuffer)
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImage)
 +VK_DEFINE_HANDLE(VkInstance)
 +VK_DEFINE_HANDLE(VkPhysicalDevice)
 +VK_DEFINE_HANDLE(VkDevice)
 +VK_DEFINE_HANDLE(VkQueue)
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSemaphore)
 +VK_DEFINE_HANDLE(VkCommandBuffer)
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFence)
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDeviceMemory)
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkEvent)
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkQueryPool)
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBufferView)
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImageView)
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkShaderModule)
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineCache)
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineLayout)
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipeline)
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkRenderPass)
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSetLayout)
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSampler)
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSet)
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorPool)
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFramebuffer)
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCommandPool)
 +#define VK_ATTACHMENT_UNUSED              (~0U)
- #define VK_TRUE                           1
++#define VK_FALSE                          0U
++#define VK_LOD_CLAMP_NONE                 1000.0F
 +#define VK_QUEUE_FAMILY_IGNORED           (~0U)
 +#define VK_REMAINING_ARRAY_LAYERS         (~0U)
 +#define VK_REMAINING_MIP_LEVELS           (~0U)
 +#define VK_SUBPASS_EXTERNAL               (~0U)
- #define VK_MAX_MEMORY_TYPES               32
- #define VK_MAX_MEMORY_HEAPS               16
- #define VK_MAX_PHYSICAL_DEVICE_NAME_SIZE  256
- #define VK_UUID_SIZE                      16
- #define VK_MAX_EXTENSION_NAME_SIZE        256
- #define VK_MAX_DESCRIPTION_SIZE           256
++#define VK_TRUE                           1U
 +#define VK_WHOLE_SIZE                     (~0ULL)
-     VK_ERROR_INVALID_PIPELINE_CACHE_DATA = -1000349000,
-     VK_ERROR_NO_PIPELINE_MATCH = -1000349001,
++#define VK_MAX_MEMORY_TYPES               32U
++#define VK_MAX_MEMORY_HEAPS               16U
++#define VK_MAX_PHYSICAL_DEVICE_NAME_SIZE  256U
++#define VK_UUID_SIZE                      16U
++#define VK_MAX_EXTENSION_NAME_SIZE        256U
++#define VK_MAX_DESCRIPTION_SIZE           256U
 +
 +typedef enum VkResult {
 +    VK_SUCCESS = 0,
 +    VK_NOT_READY = 1,
 +    VK_TIMEOUT = 2,
 +    VK_EVENT_SET = 3,
 +    VK_EVENT_RESET = 4,
 +    VK_INCOMPLETE = 5,
 +    VK_ERROR_OUT_OF_HOST_MEMORY = -1,
 +    VK_ERROR_OUT_OF_DEVICE_MEMORY = -2,
 +    VK_ERROR_INITIALIZATION_FAILED = -3,
 +    VK_ERROR_DEVICE_LOST = -4,
 +    VK_ERROR_MEMORY_MAP_FAILED = -5,
 +    VK_ERROR_LAYER_NOT_PRESENT = -6,
 +    VK_ERROR_EXTENSION_NOT_PRESENT = -7,
 +    VK_ERROR_FEATURE_NOT_PRESENT = -8,
 +    VK_ERROR_INCOMPATIBLE_DRIVER = -9,
 +    VK_ERROR_TOO_MANY_OBJECTS = -10,
 +    VK_ERROR_FORMAT_NOT_SUPPORTED = -11,
 +    VK_ERROR_FRAGMENTED_POOL = -12,
 +    VK_ERROR_UNKNOWN = -13,
 +    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_INVALID_PIPELINE_CACHE_DATA_KHR = VK_ERROR_INVALID_PIPELINE_CACHE_DATA,
-     VK_ERROR_NO_PIPELINE_MATCH_KHR = VK_ERROR_NO_PIPELINE_MATCH,
++    VK_ERROR_INVALID_PIPELINE_CACHE_DATA = -1000298000,
++    VK_ERROR_NO_PIPELINE_MATCH = -1000298001,
 +    VK_ERROR_SURFACE_LOST_KHR = -1000000000,
 +    VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001,
 +    VK_SUBOPTIMAL_KHR = 1000001003,
 +    VK_ERROR_OUT_OF_DATE_KHR = -1000001004,
 +    VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001,
 +    VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000,
 +    VK_ERROR_NOT_PERMITTED_EXT = -1000174001,
-     VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = 1000060006,
 +    VK_RESULT_MAX_ENUM = 0x7FFFFFFF
 +} VkResult;
 +
 +typedef enum VkStructureType {
 +    VK_STRUCTURE_TYPE_APPLICATION_INFO = 0,
 +    VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1,
 +    VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2,
 +    VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3,
 +    VK_STRUCTURE_TYPE_SUBMIT_INFO = 4,
 +    VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5,
 +    VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6,
 +    VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7,
 +    VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8,
 +    VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9,
 +    VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10,
 +    VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11,
 +    VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12,
 +    VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13,
 +    VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14,
 +    VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15,
 +    VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16,
 +    VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17,
 +    VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18,
 +    VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19,
 +    VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20,
 +    VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21,
 +    VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22,
 +    VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23,
 +    VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24,
 +    VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25,
 +    VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26,
 +    VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27,
 +    VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28,
 +    VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29,
 +    VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30,
 +    VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31,
 +    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32,
 +    VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33,
 +    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34,
 +    VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35,
 +    VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36,
 +    VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37,
 +    VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38,
 +    VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39,
 +    VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40,
 +    VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41,
 +    VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42,
 +    VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43,
 +    VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44,
 +    VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45,
 +    VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46,
 +    VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47,
 +    VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000,
 +    VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = 1000157000,
 +    VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = 1000157001,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = 1000083000,
 +    VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = 1000127000,
 +    VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = 1000127001,
 +    VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = 1000060000,
 +    VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = 1000060003,
 +    VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = 1000060004,
 +    VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = 1000060005,
-     VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = 1000146002,
 +    VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = 1000060013,
 +    VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = 1000060014,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = 1000070000,
 +    VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = 1000070001,
 +    VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = 1000146000,
 +    VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = 1000146001,
-     VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = 1000146004,
 +    VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = 1000146003,
-     VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = 1000059007,
-     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = 1000059008,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = 1000059000,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = 1000059001,
 +    VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = 1000059002,
 +    VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = 1000059003,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = 1000059004,
 +    VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = 1000059005,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = 1000059006,
-     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_PROPERTIES = 1000357000,
-     VK_STRUCTURE_TYPE_DEVICE_MEMORY_RESERVATION_CREATE_INFO = 1000357001,
-     VK_STRUCTURE_TYPE_COMMAND_POOL_MEMORY_RESERVATION_CREATE_INFO = 1000357002,
-     VK_STRUCTURE_TYPE_COMMAND_POOL_MEMORY_CONSUMPTION = 1000357003,
-     VK_STRUCTURE_TYPE_PIPELINE_POOL_SIZE = 1000357004,
-     VK_STRUCTURE_TYPE_PIPELINE_POOL_ENTRY_SIZE_CREATE_INFO = 1000357005,
-     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_FEATURES = 1000357006,
-     VK_STRUCTURE_TYPE_FAULT_DATA = 1000298000,
-     VK_STRUCTURE_TYPE_FAULT_CALLBACK_INFO = 1000298001,
-     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_HANDLING_PROPERTIES = 1000298002,
-     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_IDENTIFIER_FEATURES = 1000334000,
-     VK_STRUCTURE_TYPE_PIPELINE_IDENTIFIER_INFO = 1000334001,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = 1000117000,
 +    VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = 1000117001,
 +    VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = 1000117002,
 +    VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = 1000117003,
 +    VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = 1000053000,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = 1000053001,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = 1000053002,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES = 1000120000,
 +    VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = 1000145000,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = 1000145001,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = 1000145002,
 +    VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = 1000145003,
 +    VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = 1000156000,
 +    VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = 1000156001,
 +    VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = 1000156002,
 +    VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = 1000156003,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = 1000156004,
 +    VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = 1000156005,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = 1000071000,
 +    VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = 1000071001,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = 1000071002,
 +    VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = 1000071003,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = 1000071004,
 +    VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = 1000072000,
 +    VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = 1000072001,
 +    VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = 1000072002,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = 1000112000,
 +    VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = 1000112001,
 +    VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = 1000113000,
 +    VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = 1000077000,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = 1000076000,
 +    VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = 1000076001,
 +    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_REFRESH_OBJECT_LIST_KHR = 1000299000,
++    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_FEATURES = 1000298000,
++    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_PROPERTIES = 1000298001,
++    VK_STRUCTURE_TYPE_DEVICE_OBJECT_RESERVATION_CREATE_INFO = 1000298002,
++    VK_STRUCTURE_TYPE_COMMAND_POOL_MEMORY_RESERVATION_CREATE_INFO = 1000298003,
++    VK_STRUCTURE_TYPE_COMMAND_POOL_MEMORY_CONSUMPTION = 1000298004,
++    VK_STRUCTURE_TYPE_PIPELINE_POOL_SIZE = 1000298005,
++    VK_STRUCTURE_TYPE_PIPELINE_POOL_ENTRY_SIZE_CREATE_INFO = 1000298006,
++    VK_STRUCTURE_TYPE_FAULT_DATA = 1000298007,
++    VK_STRUCTURE_TYPE_FAULT_CALLBACK_INFO = 1000298008,
++    VK_STRUCTURE_TYPE_PIPELINE_IDENTIFIER_INFO = 1000298009,
 +    VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000,
 +    VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001,
 +    VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007,
 +    VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR = 1000060008,
 +    VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR = 1000060009,
 +    VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR = 1000060010,
 +    VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR = 1000060011,
 +    VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR = 1000060012,
 +    VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 1000002000,
 +    VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = 1000002001,
 +    VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR = 1000003000,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000,
 +    VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001,
 +    VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR = 1000074000,
 +    VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR = 1000074001,
 +    VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR = 1000074002,
 +    VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR = 1000079000,
 +    VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR = 1000079001,
 +    VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000,
 +    VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT = 1000090000,
 +    VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT = 1000091000,
 +    VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT = 1000091001,
 +    VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT = 1000091002,
 +    VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT = 1000091003,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT = 1000099000,
 +    VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = 1000099001,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT = 1000101000,
 +    VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT = 1000101001,
 +    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_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = 1000111000,
 +    VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR = 1000115000,
 +    VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR = 1000115001,
++    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR = 1000116000,
++    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR = 1000116001,
++    VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR = 1000116002,
++    VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR = 1000116003,
++    VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR = 1000116004,
++    VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR = 1000116005,
++    VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR = 1000116006,
++    VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_RESERVATION_INFO_KHR = 1000116007,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = 1000119000,
 +    VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR = 1000119001,
 +    VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR = 1000119002,
 +    VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR = 1000121000,
 +    VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR = 1000121001,
 +    VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR = 1000121002,
 +    VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR = 1000121003,
 +    VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR = 1000121004,
++    VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT = 1000128000,
++    VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT = 1000128001,
++    VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT = 1000128002,
++    VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT = 1000128003,
++    VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT = 1000128004,
 +    VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT = 1000143000,
 +    VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT = 1000143001,
 +    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_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,
 +    VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT = 1000158000,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT = 1000158002,
 +    VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT = 1000158003,
 +    VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT = 1000158004,
 +    VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158005,
 +    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_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_CLOCK_FEATURES_KHR = 1000181000,
 +    VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT = 1000190000,
 +    VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT = 1000190001,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR = 1000215000,
 +    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,
 +    VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000226000,
 +    VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR = 1000226001,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR = 1000226002,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR = 1000226003,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR = 1000226004,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT = 1000234000,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = 1000237000,
++    VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000,
 +    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_HEADLESS_SURFACE_CREATE_INFO_EXT = 1000256000,
 +    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_SHADER_ATOMIC_FLOAT_FEATURES_EXT = 1000260000,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT = 1000267000,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001,
 +    VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT = 1000287000,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT = 1000287001,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT = 1000287002,
-     VK_STRUCTURE_TYPE_FAULT_DATA_KHR = VK_STRUCTURE_TYPE_FAULT_DATA,
-     VK_STRUCTURE_TYPE_FAULT_CALLBACK_INFO_KHR = VK_STRUCTURE_TYPE_FAULT_CALLBACK_INFO,
-     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_HANDLING_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_HANDLING_PROPERTIES,
-     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_IDENTIFIER_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_IDENTIFIER_FEATURES,
-     VK_STRUCTURE_TYPE_PIPELINE_IDENTIFIER_INFO_KHR = VK_STRUCTURE_TYPE_PIPELINE_IDENTIFIER_INFO,
++    VK_STRUCTURE_TYPE_REFRESH_OBJECT_LIST_KHR = 1000308000,
++    VK_STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR = 1000314000,
++    VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2_KHR = 1000314001,
++    VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2_KHR = 1000314002,
++    VK_STRUCTURE_TYPE_DEPENDENCY_INFO_KHR = 1000314003,
++    VK_STRUCTURE_TYPE_SUBMIT_INFO_2_KHR = 1000314004,
++    VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO_KHR = 1000314005,
++    VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO_KHR = 1000314006,
++    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR = 1000314007,
++    VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV = 1000314008,
++    VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV = 1000314009,
++    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT = 1000330000,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT = 1000335000,
 +    VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR = 1000337000,
 +    VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR = 1000337001,
 +    VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR = 1000337002,
 +    VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR = 1000337003,
 +    VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR = 1000337004,
 +    VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR = 1000337005,
 +    VK_STRUCTURE_TYPE_BUFFER_COPY_2_KHR = 1000337006,
 +    VK_STRUCTURE_TYPE_IMAGE_COPY_2_KHR = 1000337007,
 +    VK_STRUCTURE_TYPE_IMAGE_BLIT_2_KHR = 1000337008,
 +    VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR = 1000337009,
 +    VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR = 1000337010,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000,
++    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT = 1000352000,
++    VK_STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT = 1000352001,
++    VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT = 1000352002,
++    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT = 1000377000,
++    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT = 1000381000,
++    VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT = 1000381001,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES,
 +    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES,
 +    VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT,
-     VK_MEMORY_HEAP_SEU_SAFE_BIT_KHR = 0x00000004,
 +    VK_STRUCTURE_TYPE_MAX_ENUM = 0x7FFFFFFF
 +} VkStructureType;
 +
 +typedef enum VkImageLayout {
 +    VK_IMAGE_LAYOUT_UNDEFINED = 0,
 +    VK_IMAGE_LAYOUT_GENERAL = 1,
 +    VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2,
 +    VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3,
 +    VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4,
 +    VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5,
 +    VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6,
 +    VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7,
 +    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_READ_ONLY_OPTIMAL_KHR = 1000314000,
++    VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR = 1000314001,
 +    VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV,
 +    VK_IMAGE_LAYOUT_MAX_ENUM = 0x7FFFFFFF
 +} VkImageLayout;
 +
 +typedef enum VkObjectType {
 +    VK_OBJECT_TYPE_UNKNOWN = 0,
 +    VK_OBJECT_TYPE_INSTANCE = 1,
 +    VK_OBJECT_TYPE_PHYSICAL_DEVICE = 2,
 +    VK_OBJECT_TYPE_DEVICE = 3,
 +    VK_OBJECT_TYPE_QUEUE = 4,
 +    VK_OBJECT_TYPE_SEMAPHORE = 5,
 +    VK_OBJECT_TYPE_COMMAND_BUFFER = 6,
 +    VK_OBJECT_TYPE_FENCE = 7,
 +    VK_OBJECT_TYPE_DEVICE_MEMORY = 8,
 +    VK_OBJECT_TYPE_BUFFER = 9,
 +    VK_OBJECT_TYPE_IMAGE = 10,
 +    VK_OBJECT_TYPE_EVENT = 11,
 +    VK_OBJECT_TYPE_QUERY_POOL = 12,
 +    VK_OBJECT_TYPE_BUFFER_VIEW = 13,
 +    VK_OBJECT_TYPE_IMAGE_VIEW = 14,
 +    VK_OBJECT_TYPE_SHADER_MODULE = 15,
 +    VK_OBJECT_TYPE_PIPELINE_CACHE = 16,
 +    VK_OBJECT_TYPE_PIPELINE_LAYOUT = 17,
 +    VK_OBJECT_TYPE_RENDER_PASS = 18,
 +    VK_OBJECT_TYPE_PIPELINE = 19,
 +    VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = 20,
 +    VK_OBJECT_TYPE_SAMPLER = 21,
 +    VK_OBJECT_TYPE_DESCRIPTOR_POOL = 22,
 +    VK_OBJECT_TYPE_DESCRIPTOR_SET = 23,
 +    VK_OBJECT_TYPE_FRAMEBUFFER = 24,
 +    VK_OBJECT_TYPE_COMMAND_POOL = 25,
 +    VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION = 1000156000,
 +    VK_OBJECT_TYPE_SURFACE_KHR = 1000000000,
 +    VK_OBJECT_TYPE_SWAPCHAIN_KHR = 1000001000,
 +    VK_OBJECT_TYPE_DISPLAY_KHR = 1000002000,
 +    VK_OBJECT_TYPE_DISPLAY_MODE_KHR = 1000002001,
++    VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT = 1000128000,
 +    VK_OBJECT_TYPE_MAX_ENUM = 0x7FFFFFFF
 +} VkObjectType;
 +
 +typedef enum VkVendorId {
 +    VK_VENDOR_ID_VIV = 0x10001,
 +    VK_VENDOR_ID_VSI = 0x10002,
 +    VK_VENDOR_ID_KAZAN = 0x10003,
 +    VK_VENDOR_ID_CODEPLAY = 0x10004,
 +    VK_VENDOR_ID_MESA = 0x10005,
 +    VK_VENDOR_ID_POCL = 0x10006,
 +    VK_VENDOR_ID_MAX_ENUM = 0x7FFFFFFF
 +} VkVendorId;
 +
 +typedef enum VkPipelineCacheHeaderVersion {
 +    VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1,
 +    VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 0x7FFFFFFF
 +} VkPipelineCacheHeaderVersion;
 +
 +typedef enum VkSystemAllocationScope {
 +    VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0,
 +    VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1,
 +    VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2,
 +    VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3,
 +    VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4,
 +    VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 0x7FFFFFFF
 +} VkSystemAllocationScope;
 +
 +typedef enum VkInternalAllocationType {
 +    VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0,
 +    VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 0x7FFFFFFF
 +} VkInternalAllocationType;
 +
 +typedef enum VkFormat {
 +    VK_FORMAT_UNDEFINED = 0,
 +    VK_FORMAT_R4G4_UNORM_PACK8 = 1,
 +    VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2,
 +    VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3,
 +    VK_FORMAT_R5G6B5_UNORM_PACK16 = 4,
 +    VK_FORMAT_B5G6R5_UNORM_PACK16 = 5,
 +    VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6,
 +    VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7,
 +    VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8,
 +    VK_FORMAT_R8_UNORM = 9,
 +    VK_FORMAT_R8_SNORM = 10,
 +    VK_FORMAT_R8_USCALED = 11,
 +    VK_FORMAT_R8_SSCALED = 12,
 +    VK_FORMAT_R8_UINT = 13,
 +    VK_FORMAT_R8_SINT = 14,
 +    VK_FORMAT_R8_SRGB = 15,
 +    VK_FORMAT_R8G8_UNORM = 16,
 +    VK_FORMAT_R8G8_SNORM = 17,
 +    VK_FORMAT_R8G8_USCALED = 18,
 +    VK_FORMAT_R8G8_SSCALED = 19,
 +    VK_FORMAT_R8G8_UINT = 20,
 +    VK_FORMAT_R8G8_SINT = 21,
 +    VK_FORMAT_R8G8_SRGB = 22,
 +    VK_FORMAT_R8G8B8_UNORM = 23,
 +    VK_FORMAT_R8G8B8_SNORM = 24,
 +    VK_FORMAT_R8G8B8_USCALED = 25,
 +    VK_FORMAT_R8G8B8_SSCALED = 26,
 +    VK_FORMAT_R8G8B8_UINT = 27,
 +    VK_FORMAT_R8G8B8_SINT = 28,
 +    VK_FORMAT_R8G8B8_SRGB = 29,
 +    VK_FORMAT_B8G8R8_UNORM = 30,
 +    VK_FORMAT_B8G8R8_SNORM = 31,
 +    VK_FORMAT_B8G8R8_USCALED = 32,
 +    VK_FORMAT_B8G8R8_SSCALED = 33,
 +    VK_FORMAT_B8G8R8_UINT = 34,
 +    VK_FORMAT_B8G8R8_SINT = 35,
 +    VK_FORMAT_B8G8R8_SRGB = 36,
 +    VK_FORMAT_R8G8B8A8_UNORM = 37,
 +    VK_FORMAT_R8G8B8A8_SNORM = 38,
 +    VK_FORMAT_R8G8B8A8_USCALED = 39,
 +    VK_FORMAT_R8G8B8A8_SSCALED = 40,
 +    VK_FORMAT_R8G8B8A8_UINT = 41,
 +    VK_FORMAT_R8G8B8A8_SINT = 42,
 +    VK_FORMAT_R8G8B8A8_SRGB = 43,
 +    VK_FORMAT_B8G8R8A8_UNORM = 44,
 +    VK_FORMAT_B8G8R8A8_SNORM = 45,
 +    VK_FORMAT_B8G8R8A8_USCALED = 46,
 +    VK_FORMAT_B8G8R8A8_SSCALED = 47,
 +    VK_FORMAT_B8G8R8A8_UINT = 48,
 +    VK_FORMAT_B8G8R8A8_SINT = 49,
 +    VK_FORMAT_B8G8R8A8_SRGB = 50,
 +    VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51,
 +    VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52,
 +    VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53,
 +    VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54,
 +    VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55,
 +    VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56,
 +    VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57,
 +    VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58,
 +    VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59,
 +    VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60,
 +    VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61,
 +    VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62,
 +    VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63,
 +    VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64,
 +    VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65,
 +    VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66,
 +    VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67,
 +    VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68,
 +    VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69,
 +    VK_FORMAT_R16_UNORM = 70,
 +    VK_FORMAT_R16_SNORM = 71,
 +    VK_FORMAT_R16_USCALED = 72,
 +    VK_FORMAT_R16_SSCALED = 73,
 +    VK_FORMAT_R16_UINT = 74,
 +    VK_FORMAT_R16_SINT = 75,
 +    VK_FORMAT_R16_SFLOAT = 76,
 +    VK_FORMAT_R16G16_UNORM = 77,
 +    VK_FORMAT_R16G16_SNORM = 78,
 +    VK_FORMAT_R16G16_USCALED = 79,
 +    VK_FORMAT_R16G16_SSCALED = 80,
 +    VK_FORMAT_R16G16_UINT = 81,
 +    VK_FORMAT_R16G16_SINT = 82,
 +    VK_FORMAT_R16G16_SFLOAT = 83,
 +    VK_FORMAT_R16G16B16_UNORM = 84,
 +    VK_FORMAT_R16G16B16_SNORM = 85,
 +    VK_FORMAT_R16G16B16_USCALED = 86,
 +    VK_FORMAT_R16G16B16_SSCALED = 87,
 +    VK_FORMAT_R16G16B16_UINT = 88,
 +    VK_FORMAT_R16G16B16_SINT = 89,
 +    VK_FORMAT_R16G16B16_SFLOAT = 90,
 +    VK_FORMAT_R16G16B16A16_UNORM = 91,
 +    VK_FORMAT_R16G16B16A16_SNORM = 92,
 +    VK_FORMAT_R16G16B16A16_USCALED = 93,
 +    VK_FORMAT_R16G16B16A16_SSCALED = 94,
 +    VK_FORMAT_R16G16B16A16_UINT = 95,
 +    VK_FORMAT_R16G16B16A16_SINT = 96,
 +    VK_FORMAT_R16G16B16A16_SFLOAT = 97,
 +    VK_FORMAT_R32_UINT = 98,
 +    VK_FORMAT_R32_SINT = 99,
 +    VK_FORMAT_R32_SFLOAT = 100,
 +    VK_FORMAT_R32G32_UINT = 101,
 +    VK_FORMAT_R32G32_SINT = 102,
 +    VK_FORMAT_R32G32_SFLOAT = 103,
 +    VK_FORMAT_R32G32B32_UINT = 104,
 +    VK_FORMAT_R32G32B32_SINT = 105,
 +    VK_FORMAT_R32G32B32_SFLOAT = 106,
 +    VK_FORMAT_R32G32B32A32_UINT = 107,
 +    VK_FORMAT_R32G32B32A32_SINT = 108,
 +    VK_FORMAT_R32G32B32A32_SFLOAT = 109,
 +    VK_FORMAT_R64_UINT = 110,
 +    VK_FORMAT_R64_SINT = 111,
 +    VK_FORMAT_R64_SFLOAT = 112,
 +    VK_FORMAT_R64G64_UINT = 113,
 +    VK_FORMAT_R64G64_SINT = 114,
 +    VK_FORMAT_R64G64_SFLOAT = 115,
 +    VK_FORMAT_R64G64B64_UINT = 116,
 +    VK_FORMAT_R64G64B64_SINT = 117,
 +    VK_FORMAT_R64G64B64_SFLOAT = 118,
 +    VK_FORMAT_R64G64B64A64_UINT = 119,
 +    VK_FORMAT_R64G64B64A64_SINT = 120,
 +    VK_FORMAT_R64G64B64A64_SFLOAT = 121,
 +    VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122,
 +    VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123,
 +    VK_FORMAT_D16_UNORM = 124,
 +    VK_FORMAT_X8_D24_UNORM_PACK32 = 125,
 +    VK_FORMAT_D32_SFLOAT = 126,
 +    VK_FORMAT_S8_UINT = 127,
 +    VK_FORMAT_D16_UNORM_S8_UINT = 128,
 +    VK_FORMAT_D24_UNORM_S8_UINT = 129,
 +    VK_FORMAT_D32_SFLOAT_S8_UINT = 130,
 +    VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131,
 +    VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132,
 +    VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133,
 +    VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134,
 +    VK_FORMAT_BC2_UNORM_BLOCK = 135,
 +    VK_FORMAT_BC2_SRGB_BLOCK = 136,
 +    VK_FORMAT_BC3_UNORM_BLOCK = 137,
 +    VK_FORMAT_BC3_SRGB_BLOCK = 138,
 +    VK_FORMAT_BC4_UNORM_BLOCK = 139,
 +    VK_FORMAT_BC4_SNORM_BLOCK = 140,
 +    VK_FORMAT_BC5_UNORM_BLOCK = 141,
 +    VK_FORMAT_BC5_SNORM_BLOCK = 142,
 +    VK_FORMAT_BC6H_UFLOAT_BLOCK = 143,
 +    VK_FORMAT_BC6H_SFLOAT_BLOCK = 144,
 +    VK_FORMAT_BC7_UNORM_BLOCK = 145,
 +    VK_FORMAT_BC7_SRGB_BLOCK = 146,
 +    VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147,
 +    VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148,
 +    VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149,
 +    VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150,
 +    VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151,
 +    VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152,
 +    VK_FORMAT_EAC_R11_UNORM_BLOCK = 153,
 +    VK_FORMAT_EAC_R11_SNORM_BLOCK = 154,
 +    VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155,
 +    VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156,
 +    VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157,
 +    VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158,
 +    VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159,
 +    VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160,
 +    VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161,
 +    VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162,
 +    VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163,
 +    VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164,
 +    VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165,
 +    VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166,
 +    VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167,
 +    VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168,
 +    VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169,
 +    VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170,
 +    VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171,
 +    VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172,
 +    VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173,
 +    VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174,
 +    VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175,
 +    VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176,
 +    VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177,
 +    VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178,
 +    VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179,
 +    VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180,
 +    VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181,
 +    VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182,
 +    VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183,
 +    VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184,
 +    VK_FORMAT_G8B8G8R8_422_UNORM = 1000156000,
 +    VK_FORMAT_B8G8R8G8_422_UNORM = 1000156001,
 +    VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM = 1000156002,
 +    VK_FORMAT_G8_B8R8_2PLANE_420_UNORM = 1000156003,
 +    VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM = 1000156004,
 +    VK_FORMAT_G8_B8R8_2PLANE_422_UNORM = 1000156005,
 +    VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM = 1000156006,
 +    VK_FORMAT_R10X6_UNORM_PACK16 = 1000156007,
 +    VK_FORMAT_R10X6G10X6_UNORM_2PACK16 = 1000156008,
 +    VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 = 1000156009,
 +    VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 = 1000156010,
 +    VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 = 1000156011,
 +    VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 = 1000156012,
 +    VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 = 1000156013,
 +    VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 = 1000156014,
 +    VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 = 1000156015,
 +    VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 = 1000156016,
 +    VK_FORMAT_R12X4_UNORM_PACK16 = 1000156017,
 +    VK_FORMAT_R12X4G12X4_UNORM_2PACK16 = 1000156018,
 +    VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 = 1000156019,
 +    VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 = 1000156020,
 +    VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 = 1000156021,
 +    VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 = 1000156022,
 +    VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 = 1000156023,
 +    VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 = 1000156024,
 +    VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 = 1000156025,
 +    VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 = 1000156026,
 +    VK_FORMAT_G16B16G16R16_422_UNORM = 1000156027,
 +    VK_FORMAT_B16G16R16G16_422_UNORM = 1000156028,
 +    VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM = 1000156029,
 +    VK_FORMAT_G16_B16R16_2PLANE_420_UNORM = 1000156030,
 +    VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM = 1000156031,
 +    VK_FORMAT_G16_B16R16_2PLANE_422_UNORM = 1000156032,
 +    VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM = 1000156033,
 +    VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000,
 +    VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001,
 +    VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002,
 +    VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = 1000066003,
 +    VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = 1000066004,
 +    VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = 1000066005,
 +    VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = 1000066006,
 +    VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = 1000066007,
 +    VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = 1000066008,
 +    VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = 1000066009,
 +    VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = 1000066010,
 +    VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = 1000066011,
 +    VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = 1000066012,
 +    VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = 1000066013,
++    VK_FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT = 1000330000,
++    VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT = 1000330001,
++    VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT = 1000330002,
++    VK_FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT = 1000330003,
 +    VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT = 1000340000,
 +    VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT = 1000340001,
 +    VK_FORMAT_MAX_ENUM = 0x7FFFFFFF
 +} VkFormat;
 +
 +typedef enum VkImageTiling {
 +    VK_IMAGE_TILING_OPTIMAL = 0,
 +    VK_IMAGE_TILING_LINEAR = 1,
 +    VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT = 1000158000,
 +    VK_IMAGE_TILING_MAX_ENUM = 0x7FFFFFFF
 +} VkImageTiling;
 +
 +typedef enum VkImageType {
 +    VK_IMAGE_TYPE_1D = 0,
 +    VK_IMAGE_TYPE_2D = 1,
 +    VK_IMAGE_TYPE_3D = 2,
 +    VK_IMAGE_TYPE_MAX_ENUM = 0x7FFFFFFF
 +} VkImageType;
 +
 +typedef enum VkPhysicalDeviceType {
 +    VK_PHYSICAL_DEVICE_TYPE_OTHER = 0,
 +    VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1,
 +    VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2,
 +    VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3,
 +    VK_PHYSICAL_DEVICE_TYPE_CPU = 4,
 +    VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 0x7FFFFFFF
 +} VkPhysicalDeviceType;
 +
 +typedef enum VkQueryType {
 +    VK_QUERY_TYPE_OCCLUSION = 0,
 +    VK_QUERY_TYPE_PIPELINE_STATISTICS = 1,
 +    VK_QUERY_TYPE_TIMESTAMP = 2,
++    VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000,
 +    VK_QUERY_TYPE_MAX_ENUM = 0x7FFFFFFF
 +} VkQueryType;
 +
 +typedef enum VkSharingMode {
 +    VK_SHARING_MODE_EXCLUSIVE = 0,
 +    VK_SHARING_MODE_CONCURRENT = 1,
 +    VK_SHARING_MODE_MAX_ENUM = 0x7FFFFFFF
 +} VkSharingMode;
 +
 +typedef enum VkComponentSwizzle {
 +    VK_COMPONENT_SWIZZLE_IDENTITY = 0,
 +    VK_COMPONENT_SWIZZLE_ZERO = 1,
 +    VK_COMPONENT_SWIZZLE_ONE = 2,
 +    VK_COMPONENT_SWIZZLE_R = 3,
 +    VK_COMPONENT_SWIZZLE_G = 4,
 +    VK_COMPONENT_SWIZZLE_B = 5,
 +    VK_COMPONENT_SWIZZLE_A = 6,
 +    VK_COMPONENT_SWIZZLE_MAX_ENUM = 0x7FFFFFFF
 +} VkComponentSwizzle;
 +
 +typedef enum VkImageViewType {
 +    VK_IMAGE_VIEW_TYPE_1D = 0,
 +    VK_IMAGE_VIEW_TYPE_2D = 1,
 +    VK_IMAGE_VIEW_TYPE_3D = 2,
 +    VK_IMAGE_VIEW_TYPE_CUBE = 3,
 +    VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4,
 +    VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5,
 +    VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6,
 +    VK_IMAGE_VIEW_TYPE_MAX_ENUM = 0x7FFFFFFF
 +} VkImageViewType;
 +
 +typedef enum VkBlendFactor {
 +    VK_BLEND_FACTOR_ZERO = 0,
 +    VK_BLEND_FACTOR_ONE = 1,
 +    VK_BLEND_FACTOR_SRC_COLOR = 2,
 +    VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3,
 +    VK_BLEND_FACTOR_DST_COLOR = 4,
 +    VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5,
 +    VK_BLEND_FACTOR_SRC_ALPHA = 6,
 +    VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7,
 +    VK_BLEND_FACTOR_DST_ALPHA = 8,
 +    VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9,
 +    VK_BLEND_FACTOR_CONSTANT_COLOR = 10,
 +    VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11,
 +    VK_BLEND_FACTOR_CONSTANT_ALPHA = 12,
 +    VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13,
 +    VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14,
 +    VK_BLEND_FACTOR_SRC1_COLOR = 15,
 +    VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16,
 +    VK_BLEND_FACTOR_SRC1_ALPHA = 17,
 +    VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18,
 +    VK_BLEND_FACTOR_MAX_ENUM = 0x7FFFFFFF
 +} VkBlendFactor;
 +
 +typedef enum VkBlendOp {
 +    VK_BLEND_OP_ADD = 0,
 +    VK_BLEND_OP_SUBTRACT = 1,
 +    VK_BLEND_OP_REVERSE_SUBTRACT = 2,
 +    VK_BLEND_OP_MIN = 3,
 +    VK_BLEND_OP_MAX = 4,
 +    VK_BLEND_OP_ZERO_EXT = 1000148000,
 +    VK_BLEND_OP_SRC_EXT = 1000148001,
 +    VK_BLEND_OP_DST_EXT = 1000148002,
 +    VK_BLEND_OP_SRC_OVER_EXT = 1000148003,
 +    VK_BLEND_OP_DST_OVER_EXT = 1000148004,
 +    VK_BLEND_OP_SRC_IN_EXT = 1000148005,
 +    VK_BLEND_OP_DST_IN_EXT = 1000148006,
 +    VK_BLEND_OP_SRC_OUT_EXT = 1000148007,
 +    VK_BLEND_OP_DST_OUT_EXT = 1000148008,
 +    VK_BLEND_OP_SRC_ATOP_EXT = 1000148009,
 +    VK_BLEND_OP_DST_ATOP_EXT = 1000148010,
 +    VK_BLEND_OP_XOR_EXT = 1000148011,
 +    VK_BLEND_OP_MULTIPLY_EXT = 1000148012,
 +    VK_BLEND_OP_SCREEN_EXT = 1000148013,
 +    VK_BLEND_OP_OVERLAY_EXT = 1000148014,
 +    VK_BLEND_OP_DARKEN_EXT = 1000148015,
 +    VK_BLEND_OP_LIGHTEN_EXT = 1000148016,
 +    VK_BLEND_OP_COLORDODGE_EXT = 1000148017,
 +    VK_BLEND_OP_COLORBURN_EXT = 1000148018,
 +    VK_BLEND_OP_HARDLIGHT_EXT = 1000148019,
 +    VK_BLEND_OP_SOFTLIGHT_EXT = 1000148020,
 +    VK_BLEND_OP_DIFFERENCE_EXT = 1000148021,
 +    VK_BLEND_OP_EXCLUSION_EXT = 1000148022,
 +    VK_BLEND_OP_INVERT_EXT = 1000148023,
 +    VK_BLEND_OP_INVERT_RGB_EXT = 1000148024,
 +    VK_BLEND_OP_LINEARDODGE_EXT = 1000148025,
 +    VK_BLEND_OP_LINEARBURN_EXT = 1000148026,
 +    VK_BLEND_OP_VIVIDLIGHT_EXT = 1000148027,
 +    VK_BLEND_OP_LINEARLIGHT_EXT = 1000148028,
 +    VK_BLEND_OP_PINLIGHT_EXT = 1000148029,
 +    VK_BLEND_OP_HARDMIX_EXT = 1000148030,
 +    VK_BLEND_OP_HSL_HUE_EXT = 1000148031,
 +    VK_BLEND_OP_HSL_SATURATION_EXT = 1000148032,
 +    VK_BLEND_OP_HSL_COLOR_EXT = 1000148033,
 +    VK_BLEND_OP_HSL_LUMINOSITY_EXT = 1000148034,
 +    VK_BLEND_OP_PLUS_EXT = 1000148035,
 +    VK_BLEND_OP_PLUS_CLAMPED_EXT = 1000148036,
 +    VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT = 1000148037,
 +    VK_BLEND_OP_PLUS_DARKER_EXT = 1000148038,
 +    VK_BLEND_OP_MINUS_EXT = 1000148039,
 +    VK_BLEND_OP_MINUS_CLAMPED_EXT = 1000148040,
 +    VK_BLEND_OP_CONTRAST_EXT = 1000148041,
 +    VK_BLEND_OP_INVERT_OVG_EXT = 1000148042,
 +    VK_BLEND_OP_RED_EXT = 1000148043,
 +    VK_BLEND_OP_GREEN_EXT = 1000148044,
 +    VK_BLEND_OP_BLUE_EXT = 1000148045,
 +    VK_BLEND_OP_MAX_ENUM = 0x7FFFFFFF
 +} VkBlendOp;
 +
 +typedef enum VkCompareOp {
 +    VK_COMPARE_OP_NEVER = 0,
 +    VK_COMPARE_OP_LESS = 1,
 +    VK_COMPARE_OP_EQUAL = 2,
 +    VK_COMPARE_OP_LESS_OR_EQUAL = 3,
 +    VK_COMPARE_OP_GREATER = 4,
 +    VK_COMPARE_OP_NOT_EQUAL = 5,
 +    VK_COMPARE_OP_GREATER_OR_EQUAL = 6,
 +    VK_COMPARE_OP_ALWAYS = 7,
 +    VK_COMPARE_OP_MAX_ENUM = 0x7FFFFFFF
 +} VkCompareOp;
 +
 +typedef enum VkDynamicState {
 +    VK_DYNAMIC_STATE_VIEWPORT = 0,
 +    VK_DYNAMIC_STATE_SCISSOR = 1,
 +    VK_DYNAMIC_STATE_LINE_WIDTH = 2,
 +    VK_DYNAMIC_STATE_DEPTH_BIAS = 3,
 +    VK_DYNAMIC_STATE_BLEND_CONSTANTS = 4,
 +    VK_DYNAMIC_STATE_DEPTH_BOUNDS = 5,
 +    VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 6,
 +    VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 7,
 +    VK_DYNAMIC_STATE_STENCIL_REFERENCE = 8,
 +    VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000,
 +    VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT = 1000143000,
 +    VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR = 1000226000,
 +    VK_DYNAMIC_STATE_LINE_STIPPLE_EXT = 1000259000,
 +    VK_DYNAMIC_STATE_CULL_MODE_EXT = 1000267000,
 +    VK_DYNAMIC_STATE_FRONT_FACE_EXT = 1000267001,
 +    VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT = 1000267002,
 +    VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT = 1000267003,
 +    VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT = 1000267004,
 +    VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT = 1000267005,
 +    VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT = 1000267006,
 +    VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT = 1000267007,
 +    VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT = 1000267008,
 +    VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT = 1000267009,
 +    VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT = 1000267010,
 +    VK_DYNAMIC_STATE_STENCIL_OP_EXT = 1000267011,
++    VK_DYNAMIC_STATE_VERTEX_INPUT_EXT = 1000352000,
++    VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT = 1000377000,
++    VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT = 1000377001,
++    VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT = 1000377002,
++    VK_DYNAMIC_STATE_LOGIC_OP_EXT = 1000377003,
++    VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT = 1000377004,
++    VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT = 1000381000,
 +    VK_DYNAMIC_STATE_MAX_ENUM = 0x7FFFFFFF
 +} VkDynamicState;
 +
 +typedef enum VkFrontFace {
 +    VK_FRONT_FACE_COUNTER_CLOCKWISE = 0,
 +    VK_FRONT_FACE_CLOCKWISE = 1,
 +    VK_FRONT_FACE_MAX_ENUM = 0x7FFFFFFF
 +} VkFrontFace;
 +
 +typedef enum VkVertexInputRate {
 +    VK_VERTEX_INPUT_RATE_VERTEX = 0,
 +    VK_VERTEX_INPUT_RATE_INSTANCE = 1,
 +    VK_VERTEX_INPUT_RATE_MAX_ENUM = 0x7FFFFFFF
 +} VkVertexInputRate;
 +
 +typedef enum VkPrimitiveTopology {
 +    VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0,
 +    VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1,
 +    VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2,
 +    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3,
 +    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4,
 +    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5,
 +    VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6,
 +    VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7,
 +    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8,
 +    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9,
 +    VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10,
 +    VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 0x7FFFFFFF
 +} VkPrimitiveTopology;
 +
 +typedef enum VkPolygonMode {
 +    VK_POLYGON_MODE_FILL = 0,
 +    VK_POLYGON_MODE_LINE = 1,
 +    VK_POLYGON_MODE_POINT = 2,
 +    VK_POLYGON_MODE_MAX_ENUM = 0x7FFFFFFF
 +} VkPolygonMode;
 +
 +typedef enum VkStencilOp {
 +    VK_STENCIL_OP_KEEP = 0,
 +    VK_STENCIL_OP_ZERO = 1,
 +    VK_STENCIL_OP_REPLACE = 2,
 +    VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3,
 +    VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4,
 +    VK_STENCIL_OP_INVERT = 5,
 +    VK_STENCIL_OP_INCREMENT_AND_WRAP = 6,
 +    VK_STENCIL_OP_DECREMENT_AND_WRAP = 7,
 +    VK_STENCIL_OP_MAX_ENUM = 0x7FFFFFFF
 +} VkStencilOp;
 +
 +typedef enum VkLogicOp {
 +    VK_LOGIC_OP_CLEAR = 0,
 +    VK_LOGIC_OP_AND = 1,
 +    VK_LOGIC_OP_AND_REVERSE = 2,
 +    VK_LOGIC_OP_COPY = 3,
 +    VK_LOGIC_OP_AND_INVERTED = 4,
 +    VK_LOGIC_OP_NO_OP = 5,
 +    VK_LOGIC_OP_XOR = 6,
 +    VK_LOGIC_OP_OR = 7,
 +    VK_LOGIC_OP_NOR = 8,
 +    VK_LOGIC_OP_EQUIVALENT = 9,
 +    VK_LOGIC_OP_INVERT = 10,
 +    VK_LOGIC_OP_OR_REVERSE = 11,
 +    VK_LOGIC_OP_COPY_INVERTED = 12,
 +    VK_LOGIC_OP_OR_INVERTED = 13,
 +    VK_LOGIC_OP_NAND = 14,
 +    VK_LOGIC_OP_SET = 15,
 +    VK_LOGIC_OP_MAX_ENUM = 0x7FFFFFFF
 +} VkLogicOp;
 +
 +typedef enum VkBorderColor {
 +    VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0,
 +    VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 1,
 +    VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 2,
 +    VK_BORDER_COLOR_INT_OPAQUE_BLACK = 3,
 +    VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 4,
 +    VK_BORDER_COLOR_INT_OPAQUE_WHITE = 5,
 +    VK_BORDER_COLOR_FLOAT_CUSTOM_EXT = 1000287003,
 +    VK_BORDER_COLOR_INT_CUSTOM_EXT = 1000287004,
 +    VK_BORDER_COLOR_MAX_ENUM = 0x7FFFFFFF
 +} VkBorderColor;
 +
 +typedef enum VkFilter {
 +    VK_FILTER_NEAREST = 0,
 +    VK_FILTER_LINEAR = 1,
 +    VK_FILTER_CUBIC_IMG = 1000015000,
 +    VK_FILTER_CUBIC_EXT = VK_FILTER_CUBIC_IMG,
 +    VK_FILTER_MAX_ENUM = 0x7FFFFFFF
 +} VkFilter;
 +
 +typedef enum VkSamplerAddressMode {
 +    VK_SAMPLER_ADDRESS_MODE_REPEAT = 0,
 +    VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 1,
 +    VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 2,
 +    VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 3,
 +    VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 4,
 +    VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 0x7FFFFFFF
 +} VkSamplerAddressMode;
 +
 +typedef enum VkSamplerMipmapMode {
 +    VK_SAMPLER_MIPMAP_MODE_NEAREST = 0,
 +    VK_SAMPLER_MIPMAP_MODE_LINEAR = 1,
 +    VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 0x7FFFFFFF
 +} VkSamplerMipmapMode;
 +
 +typedef enum VkDescriptorType {
 +    VK_DESCRIPTOR_TYPE_SAMPLER = 0,
 +    VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1,
 +    VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2,
 +    VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3,
 +    VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4,
 +    VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5,
 +    VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6,
 +    VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7,
 +    VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8,
 +    VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9,
 +    VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10,
 +    VK_DESCRIPTOR_TYPE_MAX_ENUM = 0x7FFFFFFF
 +} VkDescriptorType;
 +
 +typedef enum VkAttachmentLoadOp {
 +    VK_ATTACHMENT_LOAD_OP_LOAD = 0,
 +    VK_ATTACHMENT_LOAD_OP_CLEAR = 1,
 +    VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2,
 +    VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 0x7FFFFFFF
 +} VkAttachmentLoadOp;
 +
 +typedef enum VkAttachmentStoreOp {
 +    VK_ATTACHMENT_STORE_OP_STORE = 0,
 +    VK_ATTACHMENT_STORE_OP_DONT_CARE = 1,
 +    VK_ATTACHMENT_STORE_OP_MAX_ENUM = 0x7FFFFFFF
 +} VkAttachmentStoreOp;
 +
 +typedef enum VkPipelineBindPoint {
 +    VK_PIPELINE_BIND_POINT_GRAPHICS = 0,
 +    VK_PIPELINE_BIND_POINT_COMPUTE = 1,
 +    VK_PIPELINE_BIND_POINT_MAX_ENUM = 0x7FFFFFFF
 +} VkPipelineBindPoint;
 +
 +typedef enum VkCommandBufferLevel {
 +    VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0,
 +    VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1,
 +    VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 0x7FFFFFFF
 +} VkCommandBufferLevel;
 +
 +typedef enum VkIndexType {
 +    VK_INDEX_TYPE_UINT16 = 0,
 +    VK_INDEX_TYPE_UINT32 = 1,
 +    VK_INDEX_TYPE_UINT8_EXT = 1000265000,
 +    VK_INDEX_TYPE_MAX_ENUM = 0x7FFFFFFF
 +} VkIndexType;
 +
 +typedef enum VkSubpassContents {
 +    VK_SUBPASS_CONTENTS_INLINE = 0,
 +    VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1,
 +    VK_SUBPASS_CONTENTS_MAX_ENUM = 0x7FFFFFFF
 +} VkSubpassContents;
 +
 +typedef enum VkAccessFlagBits {
 +    VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 0x00000001,
 +    VK_ACCESS_INDEX_READ_BIT = 0x00000002,
 +    VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 0x00000004,
 +    VK_ACCESS_UNIFORM_READ_BIT = 0x00000008,
 +    VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 0x00000010,
 +    VK_ACCESS_SHADER_READ_BIT = 0x00000020,
 +    VK_ACCESS_SHADER_WRITE_BIT = 0x00000040,
 +    VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 0x00000080,
 +    VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 0x00000100,
 +    VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 0x00000200,
 +    VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 0x00000400,
 +    VK_ACCESS_TRANSFER_READ_BIT = 0x00000800,
 +    VK_ACCESS_TRANSFER_WRITE_BIT = 0x00001000,
 +    VK_ACCESS_HOST_READ_BIT = 0x00002000,
 +    VK_ACCESS_HOST_WRITE_BIT = 0x00004000,
 +    VK_ACCESS_MEMORY_READ_BIT = 0x00008000,
 +    VK_ACCESS_MEMORY_WRITE_BIT = 0x00010000,
 +    VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 0x00080000,
 +    VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = 0x00800000,
++    VK_ACCESS_NONE_KHR = 0,
 +    VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV,
 +    VK_ACCESS_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkAccessFlagBits;
 +typedef VkFlags VkAccessFlags;
 +
 +typedef enum VkImageAspectFlagBits {
 +    VK_IMAGE_ASPECT_COLOR_BIT = 0x00000001,
 +    VK_IMAGE_ASPECT_DEPTH_BIT = 0x00000002,
 +    VK_IMAGE_ASPECT_STENCIL_BIT = 0x00000004,
 +    VK_IMAGE_ASPECT_METADATA_BIT = 0x00000008,
 +    VK_IMAGE_ASPECT_PLANE_0_BIT = 0x00000010,
 +    VK_IMAGE_ASPECT_PLANE_1_BIT = 0x00000020,
 +    VK_IMAGE_ASPECT_PLANE_2_BIT = 0x00000040,
 +    VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT = 0x00000080,
 +    VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT = 0x00000100,
 +    VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT = 0x00000200,
 +    VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT = 0x00000400,
 +    VK_IMAGE_ASPECT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkImageAspectFlagBits;
 +typedef VkFlags VkImageAspectFlags;
 +
 +typedef enum VkFormatFeatureFlagBits {
 +    VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 0x00000001,
 +    VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 0x00000002,
 +    VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 0x00000004,
 +    VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000008,
 +    VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 0x00000010,
 +    VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 0x00000020,
 +    VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 0x00000040,
 +    VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 0x00000080,
 +    VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 0x00000100,
 +    VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000200,
 +    VK_FORMAT_FEATURE_BLIT_SRC_BIT = 0x00000400,
 +    VK_FORMAT_FEATURE_BLIT_DST_BIT = 0x00000800,
 +    VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 0x00001000,
 +    VK_FORMAT_FEATURE_TRANSFER_SRC_BIT = 0x00004000,
 +    VK_FORMAT_FEATURE_TRANSFER_DST_BIT = 0x00008000,
 +    VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = 0x00020000,
 +    VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 0x00040000,
 +    VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 0x00080000,
 +    VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 0x00100000,
 +    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_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x40000000,
 +    VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG,
 +    VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkFormatFeatureFlagBits;
 +typedef VkFlags VkFormatFeatureFlags;
 +
 +typedef enum VkImageCreateFlagBits {
 +    VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 0x00000001,
 +    VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002,
 +    VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = 0x00000004,
 +    VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 0x00000008,
 +    VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 0x00000010,
 +    VK_IMAGE_CREATE_ALIAS_BIT = 0x00000400,
 +    VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT = 0x00000040,
 +    VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT = 0x00000020,
 +    VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT = 0x00000080,
 +    VK_IMAGE_CREATE_EXTENDED_USAGE_BIT = 0x00000100,
 +    VK_IMAGE_CREATE_PROTECTED_BIT = 0x00000800,
 +    VK_IMAGE_CREATE_DISJOINT_BIT = 0x00000200,
 +    VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 0x00001000,
 +    VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkImageCreateFlagBits;
 +typedef VkFlags VkImageCreateFlags;
 +
 +typedef enum VkSampleCountFlagBits {
 +    VK_SAMPLE_COUNT_1_BIT = 0x00000001,
 +    VK_SAMPLE_COUNT_2_BIT = 0x00000002,
 +    VK_SAMPLE_COUNT_4_BIT = 0x00000004,
 +    VK_SAMPLE_COUNT_8_BIT = 0x00000008,
 +    VK_SAMPLE_COUNT_16_BIT = 0x00000010,
 +    VK_SAMPLE_COUNT_32_BIT = 0x00000020,
 +    VK_SAMPLE_COUNT_64_BIT = 0x00000040,
 +    VK_SAMPLE_COUNT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkSampleCountFlagBits;
 +typedef VkFlags VkSampleCountFlags;
 +
 +typedef enum VkImageUsageFlagBits {
 +    VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 0x00000001,
 +    VK_IMAGE_USAGE_TRANSFER_DST_BIT = 0x00000002,
 +    VK_IMAGE_USAGE_SAMPLED_BIT = 0x00000004,
 +    VK_IMAGE_USAGE_STORAGE_BIT = 0x00000008,
 +    VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 0x00000010,
 +    VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000020,
 +    VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 0x00000040,
 +    VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 0x00000080,
 +    VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV = 0x00000100,
 +    VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV,
 +    VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkImageUsageFlagBits;
 +typedef VkFlags VkImageUsageFlags;
 +typedef VkFlags VkInstanceCreateFlags;
 +
 +typedef enum VkMemoryHeapFlagBits {
 +    VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 0x00000001,
 +    VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 0x00000002,
- typedef enum VkSparseMemoryBindFlagBits {
-     VK_SPARSE_MEMORY_BIND_METADATA_BIT = 0x00000001,
-     VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
- } VkSparseMemoryBindFlagBits;
- typedef VkFlags VkSparseMemoryBindFlags;
- typedef enum VkSparseImageFormatFlagBits {
-     VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 0x00000001,
-     VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = 0x00000002,
-     VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 0x00000004,
-     VK_SPARSE_IMAGE_FORMAT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
- } VkSparseImageFormatFlagBits;
- typedef VkFlags VkSparseImageFormatFlags;
++    VK_MEMORY_HEAP_SEU_SAFE_BIT = 0x00000004,
 +    VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkMemoryHeapFlagBits;
 +typedef VkFlags VkMemoryHeapFlags;
 +
 +typedef enum VkMemoryPropertyFlagBits {
 +    VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 0x00000001,
 +    VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 0x00000002,
 +    VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 0x00000004,
 +    VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 0x00000008,
 +    VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 0x00000010,
 +    VK_MEMORY_PROPERTY_PROTECTED_BIT = 0x00000020,
 +    VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkMemoryPropertyFlagBits;
 +typedef VkFlags VkMemoryPropertyFlags;
 +
 +typedef enum VkQueueFlagBits {
 +    VK_QUEUE_GRAPHICS_BIT = 0x00000001,
 +    VK_QUEUE_COMPUTE_BIT = 0x00000002,
 +    VK_QUEUE_TRANSFER_BIT = 0x00000004,
 +    VK_QUEUE_SPARSE_BINDING_BIT = 0x00000008,
 +    VK_QUEUE_PROTECTED_BIT = 0x00000010,
 +    VK_QUEUE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkQueueFlagBits;
 +typedef VkFlags VkQueueFlags;
 +typedef VkFlags VkDeviceCreateFlags;
 +
 +typedef enum VkDeviceQueueCreateFlagBits {
 +    VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = 0x00000001,
 +    VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkDeviceQueueCreateFlagBits;
 +typedef VkFlags VkDeviceQueueCreateFlags;
 +
 +typedef enum VkPipelineStageFlagBits {
 +    VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 0x00000001,
 +    VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 0x00000002,
 +    VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 0x00000004,
 +    VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 0x00000008,
 +    VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 0x00000010,
 +    VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 0x00000020,
 +    VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 0x00000040,
 +    VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 0x00000080,
 +    VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 0x00000100,
 +    VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 0x00000200,
 +    VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 0x00000400,
 +    VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 0x00000800,
 +    VK_PIPELINE_STAGE_TRANSFER_BIT = 0x00001000,
 +    VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 0x00002000,
 +    VK_PIPELINE_STAGE_HOST_BIT = 0x00004000,
 +    VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 0x00008000,
 +    VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 0x00010000,
 +    VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = 0x00400000,
++    VK_PIPELINE_STAGE_NONE_KHR = 0,
 +    VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV,
 +    VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkPipelineStageFlagBits;
 +typedef VkFlags VkPipelineStageFlags;
 +typedef VkFlags VkMemoryMapFlags;
 +
-     VK_PIPELINE_CACHE_CREATE_READ_ONLY_BIT_KHR = VK_PIPELINE_CACHE_CREATE_READ_ONLY_BIT,
-     VK_PIPELINE_CACHE_CREATE_USE_APPLICATION_STORAGE_BIT_KHR = VK_PIPELINE_CACHE_CREATE_USE_APPLICATION_STORAGE_BIT,
 +typedef enum VkFenceCreateFlagBits {
 +    VK_FENCE_CREATE_SIGNALED_BIT = 0x00000001,
 +    VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkFenceCreateFlagBits;
 +typedef VkFlags VkFenceCreateFlags;
 +typedef VkFlags VkSemaphoreCreateFlags;
++
++typedef enum VkEventCreateFlagBits {
++    VK_EVENT_CREATE_DEVICE_ONLY_BIT_KHR = 0x00000001,
++    VK_EVENT_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
++} VkEventCreateFlagBits;
 +typedef VkFlags VkEventCreateFlags;
 +
 +typedef enum VkQueryPipelineStatisticFlagBits {
 +    VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 0x00000001,
 +    VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 0x00000002,
 +    VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 0x00000004,
 +    VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 0x00000008,
 +    VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 0x00000010,
 +    VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 0x00000020,
 +    VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 0x00000040,
 +    VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 0x00000080,
 +    VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 0x00000100,
 +    VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 0x00000200,
 +    VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 0x00000400,
 +    VK_QUERY_PIPELINE_STATISTIC_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkQueryPipelineStatisticFlagBits;
 +typedef VkFlags VkQueryPipelineStatisticFlags;
 +typedef VkFlags VkQueryPoolCreateFlags;
 +
 +typedef enum VkQueryResultFlagBits {
 +    VK_QUERY_RESULT_64_BIT = 0x00000001,
 +    VK_QUERY_RESULT_WAIT_BIT = 0x00000002,
 +    VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 0x00000004,
 +    VK_QUERY_RESULT_PARTIAL_BIT = 0x00000008,
 +    VK_QUERY_RESULT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkQueryResultFlagBits;
 +typedef VkFlags VkQueryResultFlags;
 +
 +typedef enum VkBufferCreateFlagBits {
 +    VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 0x00000001,
 +    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 = 0x00000010,
 +    VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkBufferCreateFlagBits;
 +typedef VkFlags VkBufferCreateFlags;
 +
 +typedef enum VkBufferUsageFlagBits {
 +    VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 0x00000001,
 +    VK_BUFFER_USAGE_TRANSFER_DST_BIT = 0x00000002,
 +    VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000004,
 +    VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 0x00000008,
 +    VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 0x00000010,
 +    VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 0x00000020,
 +    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_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkBufferUsageFlagBits;
 +typedef VkFlags VkBufferUsageFlags;
 +typedef VkFlags VkBufferViewCreateFlags;
 +
 +typedef enum VkImageViewCreateFlagBits {
 +    VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkImageViewCreateFlagBits;
 +typedef VkFlags VkImageViewCreateFlags;
 +
 +typedef enum VkPipelineCacheCreateFlagBits {
 +    VK_PIPELINE_CACHE_CREATE_USE_APPLICATION_STORAGE_BIT = 0x00000004,
 +    VK_PIPELINE_CACHE_CREATE_RESERVED_1_BIT_EXT = 0x00000002,
 +    VK_PIPELINE_CACHE_CREATE_READ_ONLY_BIT = VK_PIPELINE_CACHE_CREATE_RESERVED_1_BIT_EXT,
- typedef struct VkSparseMemoryBind {
-     VkDeviceSize               resourceOffset;
-     VkDeviceSize               size;
-     VkDeviceMemory             memory;
-     VkDeviceSize               memoryOffset;
-     VkSparseMemoryBindFlags    flags;
- } VkSparseMemoryBind;
- typedef struct VkSparseBufferMemoryBindInfo {
-     VkBuffer                     buffer;
-     uint32_t                     bindCount;
-     const VkSparseMemoryBind*    pBinds;
- } VkSparseBufferMemoryBindInfo;
- typedef struct VkSparseImageOpaqueMemoryBindInfo {
-     VkImage                      image;
-     uint32_t                     bindCount;
-     const VkSparseMemoryBind*    pBinds;
- } VkSparseImageOpaqueMemoryBindInfo;
 +    VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkPipelineCacheCreateFlagBits;
 +typedef VkFlags VkPipelineCacheCreateFlags;
 +
 +typedef enum VkColorComponentFlagBits {
 +    VK_COLOR_COMPONENT_R_BIT = 0x00000001,
 +    VK_COLOR_COMPONENT_G_BIT = 0x00000002,
 +    VK_COLOR_COMPONENT_B_BIT = 0x00000004,
 +    VK_COLOR_COMPONENT_A_BIT = 0x00000008,
 +    VK_COLOR_COMPONENT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkColorComponentFlagBits;
 +typedef VkFlags VkColorComponentFlags;
 +
 +typedef enum VkPipelineCreateFlagBits {
 +    VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 0x00000001,
 +    VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 0x00000002,
 +    VK_PIPELINE_CREATE_DERIVATIVE_BIT = 0x00000004,
 +    VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 0x00000008,
 +    VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 0x00000010,
 +    VK_PIPELINE_CREATE_DISPATCH_BASE = VK_PIPELINE_CREATE_DISPATCH_BASE_BIT,
 +    VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkPipelineCreateFlagBits;
 +typedef VkFlags VkPipelineCreateFlags;
 +
 +typedef enum VkPipelineShaderStageCreateFlagBits {
 +    VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 0x00000001,
 +    VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 0x00000002,
 +    VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkPipelineShaderStageCreateFlagBits;
 +typedef VkFlags VkPipelineShaderStageCreateFlags;
 +
 +typedef enum VkShaderStageFlagBits {
 +    VK_SHADER_STAGE_VERTEX_BIT = 0x00000001,
 +    VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 0x00000002,
 +    VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 0x00000004,
 +    VK_SHADER_STAGE_GEOMETRY_BIT = 0x00000008,
 +    VK_SHADER_STAGE_FRAGMENT_BIT = 0x00000010,
 +    VK_SHADER_STAGE_COMPUTE_BIT = 0x00000020,
 +    VK_SHADER_STAGE_ALL_GRAPHICS = 0x0000001F,
 +    VK_SHADER_STAGE_ALL = 0x7FFFFFFF,
 +    VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkShaderStageFlagBits;
 +
 +typedef enum VkCullModeFlagBits {
 +    VK_CULL_MODE_NONE = 0,
 +    VK_CULL_MODE_FRONT_BIT = 0x00000001,
 +    VK_CULL_MODE_BACK_BIT = 0x00000002,
 +    VK_CULL_MODE_FRONT_AND_BACK = 0x00000003,
 +    VK_CULL_MODE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkCullModeFlagBits;
 +typedef VkFlags VkCullModeFlags;
 +typedef VkFlags VkPipelineVertexInputStateCreateFlags;
 +typedef VkFlags VkPipelineInputAssemblyStateCreateFlags;
 +typedef VkFlags VkPipelineTessellationStateCreateFlags;
 +typedef VkFlags VkPipelineViewportStateCreateFlags;
 +typedef VkFlags VkPipelineRasterizationStateCreateFlags;
 +typedef VkFlags VkPipelineMultisampleStateCreateFlags;
 +typedef VkFlags VkPipelineDepthStencilStateCreateFlags;
 +typedef VkFlags VkPipelineColorBlendStateCreateFlags;
 +typedef VkFlags VkPipelineDynamicStateCreateFlags;
 +typedef VkFlags VkPipelineLayoutCreateFlags;
 +typedef VkFlags VkShaderStageFlags;
 +
 +typedef enum VkSamplerCreateFlagBits {
 +    VK_SAMPLER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkSamplerCreateFlagBits;
 +typedef VkFlags VkSamplerCreateFlags;
 +
 +typedef enum VkDescriptorPoolCreateFlagBits {
 +    VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 0x00000001,
 +    VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = 0x00000002,
 +    VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkDescriptorPoolCreateFlagBits;
 +typedef VkFlags VkDescriptorPoolCreateFlags;
 +typedef VkFlags VkDescriptorPoolResetFlags;
 +
 +typedef enum VkDescriptorSetLayoutCreateFlagBits {
 +    VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = 0x00000002,
 +    VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkDescriptorSetLayoutCreateFlagBits;
 +typedef VkFlags VkDescriptorSetLayoutCreateFlags;
 +
 +typedef enum VkAttachmentDescriptionFlagBits {
 +    VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 0x00000001,
 +    VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkAttachmentDescriptionFlagBits;
 +typedef VkFlags VkAttachmentDescriptionFlags;
 +
 +typedef enum VkDependencyFlagBits {
 +    VK_DEPENDENCY_BY_REGION_BIT = 0x00000001,
 +    VK_DEPENDENCY_DEVICE_GROUP_BIT = 0x00000004,
 +    VK_DEPENDENCY_VIEW_LOCAL_BIT = 0x00000002,
 +    VK_DEPENDENCY_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkDependencyFlagBits;
 +typedef VkFlags VkDependencyFlags;
 +
 +typedef enum VkFramebufferCreateFlagBits {
 +    VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT = 0x00000001,
 +    VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkFramebufferCreateFlagBits;
 +typedef VkFlags VkFramebufferCreateFlags;
 +
 +typedef enum VkRenderPassCreateFlagBits {
 +    VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkRenderPassCreateFlagBits;
 +typedef VkFlags VkRenderPassCreateFlags;
 +
 +typedef enum VkSubpassDescriptionFlagBits {
 +    VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkSubpassDescriptionFlagBits;
 +typedef VkFlags VkSubpassDescriptionFlags;
 +
 +typedef enum VkCommandPoolCreateFlagBits {
 +    VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 0x00000001,
 +    VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 0x00000002,
 +    VK_COMMAND_POOL_CREATE_PROTECTED_BIT = 0x00000004,
 +    VK_COMMAND_POOL_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkCommandPoolCreateFlagBits;
 +typedef VkFlags VkCommandPoolCreateFlags;
 +
 +typedef enum VkCommandPoolResetFlagBits {
 +    VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 0x00000001,
 +    VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkCommandPoolResetFlagBits;
 +typedef VkFlags VkCommandPoolResetFlags;
 +
 +typedef enum VkCommandBufferUsageFlagBits {
 +    VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 0x00000001,
 +    VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 0x00000002,
 +    VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 0x00000004,
 +    VK_COMMAND_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkCommandBufferUsageFlagBits;
 +typedef VkFlags VkCommandBufferUsageFlags;
 +
 +typedef enum VkQueryControlFlagBits {
 +    VK_QUERY_CONTROL_PRECISE_BIT = 0x00000001,
 +    VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkQueryControlFlagBits;
 +typedef VkFlags VkQueryControlFlags;
 +
 +typedef enum VkCommandBufferResetFlagBits {
 +    VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 0x00000001,
 +    VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkCommandBufferResetFlagBits;
 +typedef VkFlags VkCommandBufferResetFlags;
 +
 +typedef enum VkStencilFaceFlagBits {
 +    VK_STENCIL_FACE_FRONT_BIT = 0x00000001,
 +    VK_STENCIL_FACE_BACK_BIT = 0x00000002,
 +    VK_STENCIL_FACE_FRONT_AND_BACK = 0x00000003,
 +    VK_STENCIL_FRONT_AND_BACK = VK_STENCIL_FACE_FRONT_AND_BACK,
 +    VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkStencilFaceFlagBits;
 +typedef VkFlags VkStencilFaceFlags;
 +typedef struct VkExtent2D {
 +    uint32_t    width;
 +    uint32_t    height;
 +} VkExtent2D;
 +
 +typedef struct VkExtent3D {
 +    uint32_t    width;
 +    uint32_t    height;
 +    uint32_t    depth;
 +} VkExtent3D;
 +
 +typedef struct VkOffset2D {
 +    int32_t    x;
 +    int32_t    y;
 +} VkOffset2D;
 +
 +typedef struct VkOffset3D {
 +    int32_t    x;
 +    int32_t    y;
 +    int32_t    z;
 +} VkOffset3D;
 +
 +typedef struct VkRect2D {
 +    VkOffset2D    offset;
 +    VkExtent2D    extent;
 +} VkRect2D;
 +
 +typedef struct VkBaseInStructure {
 +    VkStructureType                    sType;
 +    const struct VkBaseInStructure*    pNext;
 +} VkBaseInStructure;
 +
 +typedef struct VkBaseOutStructure {
 +    VkStructureType               sType;
 +    struct VkBaseOutStructure*    pNext;
 +} VkBaseOutStructure;
 +
 +typedef struct VkBufferMemoryBarrier {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    VkAccessFlags      srcAccessMask;
 +    VkAccessFlags      dstAccessMask;
 +    uint32_t           srcQueueFamilyIndex;
 +    uint32_t           dstQueueFamilyIndex;
 +    VkBuffer           buffer;
 +    VkDeviceSize       offset;
 +    VkDeviceSize       size;
 +} VkBufferMemoryBarrier;
 +
 +typedef struct VkDispatchIndirectCommand {
 +    uint32_t    x;
 +    uint32_t    y;
 +    uint32_t    z;
 +} VkDispatchIndirectCommand;
 +
 +typedef struct VkDrawIndexedIndirectCommand {
 +    uint32_t    indexCount;
 +    uint32_t    instanceCount;
 +    uint32_t    firstIndex;
 +    int32_t     vertexOffset;
 +    uint32_t    firstInstance;
 +} VkDrawIndexedIndirectCommand;
 +
 +typedef struct VkDrawIndirectCommand {
 +    uint32_t    vertexCount;
 +    uint32_t    instanceCount;
 +    uint32_t    firstVertex;
 +    uint32_t    firstInstance;
 +} VkDrawIndirectCommand;
 +
 +typedef struct VkImageSubresourceRange {
 +    VkImageAspectFlags    aspectMask;
 +    uint32_t              baseMipLevel;
 +    uint32_t              levelCount;
 +    uint32_t              baseArrayLayer;
 +    uint32_t              layerCount;
 +} VkImageSubresourceRange;
 +
 +typedef struct VkImageMemoryBarrier {
 +    VkStructureType            sType;
 +    const void*                pNext;
 +    VkAccessFlags              srcAccessMask;
 +    VkAccessFlags              dstAccessMask;
 +    VkImageLayout              oldLayout;
 +    VkImageLayout              newLayout;
 +    uint32_t                   srcQueueFamilyIndex;
 +    uint32_t                   dstQueueFamilyIndex;
 +    VkImage                    image;
 +    VkImageSubresourceRange    subresourceRange;
 +} VkImageMemoryBarrier;
 +
 +typedef struct VkMemoryBarrier {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    VkAccessFlags      srcAccessMask;
 +    VkAccessFlags      dstAccessMask;
 +} VkMemoryBarrier;
 +
 +typedef void* (VKAPI_PTR *PFN_vkAllocationFunction)(
 +    void*                                       pUserData,
 +    size_t                                      size,
 +    size_t                                      alignment,
 +    VkSystemAllocationScope                     allocationScope);
 +
 +typedef void (VKAPI_PTR *PFN_vkFreeFunction)(
 +    void*                                       pUserData,
 +    void*                                       pMemory);
 +
 +typedef void (VKAPI_PTR *PFN_vkInternalAllocationNotification)(
 +    void*                                       pUserData,
 +    size_t                                      size,
 +    VkInternalAllocationType                    allocationType,
 +    VkSystemAllocationScope                     allocationScope);
 +
 +typedef void (VKAPI_PTR *PFN_vkInternalFreeNotification)(
 +    void*                                       pUserData,
 +    size_t                                      size,
 +    VkInternalAllocationType                    allocationType,
 +    VkSystemAllocationScope                     allocationScope);
 +
 +typedef void* (VKAPI_PTR *PFN_vkReallocationFunction)(
 +    void*                                       pUserData,
 +    void*                                       pOriginal,
 +    size_t                                      size,
 +    size_t                                      alignment,
 +    VkSystemAllocationScope                     allocationScope);
 +
 +typedef void (VKAPI_PTR *PFN_vkVoidFunction)(void);
 +typedef struct VkAllocationCallbacks {
 +    void*                                   pUserData;
 +    PFN_vkAllocationFunction                pfnAllocation;
 +    PFN_vkReallocationFunction              pfnReallocation;
 +    PFN_vkFreeFunction                      pfnFree;
 +    PFN_vkInternalAllocationNotification    pfnInternalAllocation;
 +    PFN_vkInternalFreeNotification          pfnInternalFree;
 +} VkAllocationCallbacks;
 +
 +typedef struct VkApplicationInfo {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    const char*        pApplicationName;
 +    uint32_t           applicationVersion;
 +    const char*        pEngineName;
 +    uint32_t           engineVersion;
 +    uint32_t           apiVersion;
 +} VkApplicationInfo;
 +
 +typedef struct VkFormatProperties {
 +    VkFormatFeatureFlags    linearTilingFeatures;
 +    VkFormatFeatureFlags    optimalTilingFeatures;
 +    VkFormatFeatureFlags    bufferFeatures;
 +} VkFormatProperties;
 +
 +typedef struct VkImageFormatProperties {
 +    VkExtent3D            maxExtent;
 +    uint32_t              maxMipLevels;
 +    uint32_t              maxArrayLayers;
 +    VkSampleCountFlags    sampleCounts;
 +    VkDeviceSize          maxResourceSize;
 +} VkImageFormatProperties;
 +
 +typedef struct VkInstanceCreateInfo {
 +    VkStructureType             sType;
 +    const void*                 pNext;
 +    VkInstanceCreateFlags       flags;
 +    const VkApplicationInfo*    pApplicationInfo;
 +    uint32_t                    enabledLayerCount;
 +    const char* const*          ppEnabledLayerNames;
 +    uint32_t                    enabledExtensionCount;
 +    const char* const*          ppEnabledExtensionNames;
 +} VkInstanceCreateInfo;
 +
 +typedef struct VkMemoryHeap {
 +    VkDeviceSize         size;
 +    VkMemoryHeapFlags    flags;
 +} VkMemoryHeap;
 +
 +typedef struct VkMemoryType {
 +    VkMemoryPropertyFlags    propertyFlags;
 +    uint32_t                 heapIndex;
 +} VkMemoryType;
 +
 +typedef struct VkPhysicalDeviceFeatures {
 +    VkBool32    robustBufferAccess;
 +    VkBool32    fullDrawIndexUint32;
 +    VkBool32    imageCubeArray;
 +    VkBool32    independentBlend;
 +    VkBool32    geometryShader;
 +    VkBool32    tessellationShader;
 +    VkBool32    sampleRateShading;
 +    VkBool32    dualSrcBlend;
 +    VkBool32    logicOp;
 +    VkBool32    multiDrawIndirect;
 +    VkBool32    drawIndirectFirstInstance;
 +    VkBool32    depthClamp;
 +    VkBool32    depthBiasClamp;
 +    VkBool32    fillModeNonSolid;
 +    VkBool32    depthBounds;
 +    VkBool32    wideLines;
 +    VkBool32    largePoints;
 +    VkBool32    alphaToOne;
 +    VkBool32    multiViewport;
 +    VkBool32    samplerAnisotropy;
 +    VkBool32    textureCompressionETC2;
 +    VkBool32    textureCompressionASTC_LDR;
 +    VkBool32    textureCompressionBC;
 +    VkBool32    occlusionQueryPrecise;
 +    VkBool32    pipelineStatisticsQuery;
 +    VkBool32    vertexPipelineStoresAndAtomics;
 +    VkBool32    fragmentStoresAndAtomics;
 +    VkBool32    shaderTessellationAndGeometryPointSize;
 +    VkBool32    shaderImageGatherExtended;
 +    VkBool32    shaderStorageImageExtendedFormats;
 +    VkBool32    shaderStorageImageMultisample;
 +    VkBool32    shaderStorageImageReadWithoutFormat;
 +    VkBool32    shaderStorageImageWriteWithoutFormat;
 +    VkBool32    shaderUniformBufferArrayDynamicIndexing;
 +    VkBool32    shaderSampledImageArrayDynamicIndexing;
 +    VkBool32    shaderStorageBufferArrayDynamicIndexing;
 +    VkBool32    shaderStorageImageArrayDynamicIndexing;
 +    VkBool32    shaderClipDistance;
 +    VkBool32    shaderCullDistance;
 +    VkBool32    shaderFloat64;
 +    VkBool32    shaderInt64;
 +    VkBool32    shaderInt16;
 +    VkBool32    shaderResourceResidency;
 +    VkBool32    shaderResourceMinLod;
 +    VkBool32    sparseBinding;
 +    VkBool32    sparseResidencyBuffer;
 +    VkBool32    sparseResidencyImage2D;
 +    VkBool32    sparseResidencyImage3D;
 +    VkBool32    sparseResidency2Samples;
 +    VkBool32    sparseResidency4Samples;
 +    VkBool32    sparseResidency8Samples;
 +    VkBool32    sparseResidency16Samples;
 +    VkBool32    sparseResidencyAliased;
 +    VkBool32    variableMultisampleRate;
 +    VkBool32    inheritedQueries;
 +} VkPhysicalDeviceFeatures;
 +
 +typedef struct VkPhysicalDeviceLimits {
 +    uint32_t              maxImageDimension1D;
 +    uint32_t              maxImageDimension2D;
 +    uint32_t              maxImageDimension3D;
 +    uint32_t              maxImageDimensionCube;
 +    uint32_t              maxImageArrayLayers;
 +    uint32_t              maxTexelBufferElements;
 +    uint32_t              maxUniformBufferRange;
 +    uint32_t              maxStorageBufferRange;
 +    uint32_t              maxPushConstantsSize;
 +    uint32_t              maxMemoryAllocationCount;
 +    uint32_t              maxSamplerAllocationCount;
 +    VkDeviceSize          bufferImageGranularity;
 +    VkDeviceSize          sparseAddressSpaceSize;
 +    uint32_t              maxBoundDescriptorSets;
 +    uint32_t              maxPerStageDescriptorSamplers;
 +    uint32_t              maxPerStageDescriptorUniformBuffers;
 +    uint32_t              maxPerStageDescriptorStorageBuffers;
 +    uint32_t              maxPerStageDescriptorSampledImages;
 +    uint32_t              maxPerStageDescriptorStorageImages;
 +    uint32_t              maxPerStageDescriptorInputAttachments;
 +    uint32_t              maxPerStageResources;
 +    uint32_t              maxDescriptorSetSamplers;
 +    uint32_t              maxDescriptorSetUniformBuffers;
 +    uint32_t              maxDescriptorSetUniformBuffersDynamic;
 +    uint32_t              maxDescriptorSetStorageBuffers;
 +    uint32_t              maxDescriptorSetStorageBuffersDynamic;
 +    uint32_t              maxDescriptorSetSampledImages;
 +    uint32_t              maxDescriptorSetStorageImages;
 +    uint32_t              maxDescriptorSetInputAttachments;
 +    uint32_t              maxVertexInputAttributes;
 +    uint32_t              maxVertexInputBindings;
 +    uint32_t              maxVertexInputAttributeOffset;
 +    uint32_t              maxVertexInputBindingStride;
 +    uint32_t              maxVertexOutputComponents;
 +    uint32_t              maxTessellationGenerationLevel;
 +    uint32_t              maxTessellationPatchSize;
 +    uint32_t              maxTessellationControlPerVertexInputComponents;
 +    uint32_t              maxTessellationControlPerVertexOutputComponents;
 +    uint32_t              maxTessellationControlPerPatchOutputComponents;
 +    uint32_t              maxTessellationControlTotalOutputComponents;
 +    uint32_t              maxTessellationEvaluationInputComponents;
 +    uint32_t              maxTessellationEvaluationOutputComponents;
 +    uint32_t              maxGeometryShaderInvocations;
 +    uint32_t              maxGeometryInputComponents;
 +    uint32_t              maxGeometryOutputComponents;
 +    uint32_t              maxGeometryOutputVertices;
 +    uint32_t              maxGeometryTotalOutputComponents;
 +    uint32_t              maxFragmentInputComponents;
 +    uint32_t              maxFragmentOutputAttachments;
 +    uint32_t              maxFragmentDualSrcAttachments;
 +    uint32_t              maxFragmentCombinedOutputResources;
 +    uint32_t              maxComputeSharedMemorySize;
 +    uint32_t              maxComputeWorkGroupCount[3];
 +    uint32_t              maxComputeWorkGroupInvocations;
 +    uint32_t              maxComputeWorkGroupSize[3];
 +    uint32_t              subPixelPrecisionBits;
 +    uint32_t              subTexelPrecisionBits;
 +    uint32_t              mipmapPrecisionBits;
 +    uint32_t              maxDrawIndexedIndexValue;
 +    uint32_t              maxDrawIndirectCount;
 +    float                 maxSamplerLodBias;
 +    float                 maxSamplerAnisotropy;
 +    uint32_t              maxViewports;
 +    uint32_t              maxViewportDimensions[2];
 +    float                 viewportBoundsRange[2];
 +    uint32_t              viewportSubPixelBits;
 +    size_t                minMemoryMapAlignment;
 +    VkDeviceSize          minTexelBufferOffsetAlignment;
 +    VkDeviceSize          minUniformBufferOffsetAlignment;
 +    VkDeviceSize          minStorageBufferOffsetAlignment;
 +    int32_t               minTexelOffset;
 +    uint32_t              maxTexelOffset;
 +    int32_t               minTexelGatherOffset;
 +    uint32_t              maxTexelGatherOffset;
 +    float                 minInterpolationOffset;
 +    float                 maxInterpolationOffset;
 +    uint32_t              subPixelInterpolationOffsetBits;
 +    uint32_t              maxFramebufferWidth;
 +    uint32_t              maxFramebufferHeight;
 +    uint32_t              maxFramebufferLayers;
 +    VkSampleCountFlags    framebufferColorSampleCounts;
 +    VkSampleCountFlags    framebufferDepthSampleCounts;
 +    VkSampleCountFlags    framebufferStencilSampleCounts;
 +    VkSampleCountFlags    framebufferNoAttachmentsSampleCounts;
 +    uint32_t              maxColorAttachments;
 +    VkSampleCountFlags    sampledImageColorSampleCounts;
 +    VkSampleCountFlags    sampledImageIntegerSampleCounts;
 +    VkSampleCountFlags    sampledImageDepthSampleCounts;
 +    VkSampleCountFlags    sampledImageStencilSampleCounts;
 +    VkSampleCountFlags    storageImageSampleCounts;
 +    uint32_t              maxSampleMaskWords;
 +    VkBool32              timestampComputeAndGraphics;
 +    float                 timestampPeriod;
 +    uint32_t              maxClipDistances;
 +    uint32_t              maxCullDistances;
 +    uint32_t              maxCombinedClipAndCullDistances;
 +    uint32_t              discreteQueuePriorities;
 +    float                 pointSizeRange[2];
 +    float                 lineWidthRange[2];
 +    float                 pointSizeGranularity;
 +    float                 lineWidthGranularity;
 +    VkBool32              strictLines;
 +    VkBool32              standardSampleLocations;
 +    VkDeviceSize          optimalBufferCopyOffsetAlignment;
 +    VkDeviceSize          optimalBufferCopyRowPitchAlignment;
 +    VkDeviceSize          nonCoherentAtomSize;
 +} VkPhysicalDeviceLimits;
 +
 +typedef struct VkPhysicalDeviceMemoryProperties {
 +    uint32_t        memoryTypeCount;
 +    VkMemoryType    memoryTypes[VK_MAX_MEMORY_TYPES];
 +    uint32_t        memoryHeapCount;
 +    VkMemoryHeap    memoryHeaps[VK_MAX_MEMORY_HEAPS];
 +} VkPhysicalDeviceMemoryProperties;
 +
 +typedef struct VkPhysicalDeviceSparseProperties {
 +    VkBool32    residencyStandard2DBlockShape;
 +    VkBool32    residencyStandard2DMultisampleBlockShape;
 +    VkBool32    residencyStandard3DBlockShape;
 +    VkBool32    residencyAlignedMipSize;
 +    VkBool32    residencyNonResidentStrict;
 +} VkPhysicalDeviceSparseProperties;
 +
 +typedef struct VkPhysicalDeviceProperties {
 +    uint32_t                            apiVersion;
 +    uint32_t                            driverVersion;
 +    uint32_t                            vendorID;
 +    uint32_t                            deviceID;
 +    VkPhysicalDeviceType                deviceType;
 +    char                                deviceName[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE];
 +    uint8_t                             pipelineCacheUUID[VK_UUID_SIZE];
 +    VkPhysicalDeviceLimits              limits;
 +    VkPhysicalDeviceSparseProperties    sparseProperties;
 +} VkPhysicalDeviceProperties;
 +
 +typedef struct VkQueueFamilyProperties {
 +    VkQueueFlags    queueFlags;
 +    uint32_t        queueCount;
 +    uint32_t        timestampValidBits;
 +    VkExtent3D      minImageTransferGranularity;
 +} VkQueueFamilyProperties;
 +
 +typedef struct VkDeviceQueueCreateInfo {
 +    VkStructureType             sType;
 +    const void*                 pNext;
 +    VkDeviceQueueCreateFlags    flags;
 +    uint32_t                    queueFamilyIndex;
 +    uint32_t                    queueCount;
 +    const float*                pQueuePriorities;
 +} VkDeviceQueueCreateInfo;
 +
 +typedef struct VkDeviceCreateInfo {
 +    VkStructureType                    sType;
 +    const void*                        pNext;
 +    VkDeviceCreateFlags                flags;
 +    uint32_t                           queueCreateInfoCount;
 +    const VkDeviceQueueCreateInfo*     pQueueCreateInfos;
 +    uint32_t                           enabledLayerCount;
 +    const char* const*                 ppEnabledLayerNames;
 +    uint32_t                           enabledExtensionCount;
 +    const char* const*                 ppEnabledExtensionNames;
 +    const VkPhysicalDeviceFeatures*    pEnabledFeatures;
 +} VkDeviceCreateInfo;
 +
 +typedef struct VkExtensionProperties {
 +    char        extensionName[VK_MAX_EXTENSION_NAME_SIZE];
 +    uint32_t    specVersion;
 +} VkExtensionProperties;
 +
 +typedef struct VkLayerProperties {
 +    char        layerName[VK_MAX_EXTENSION_NAME_SIZE];
 +    uint32_t    specVersion;
 +    uint32_t    implementationVersion;
 +    char        description[VK_MAX_DESCRIPTION_SIZE];
 +} VkLayerProperties;
 +
 +typedef struct VkSubmitInfo {
 +    VkStructureType                sType;
 +    const void*                    pNext;
 +    uint32_t                       waitSemaphoreCount;
 +    const VkSemaphore*             pWaitSemaphores;
 +    const VkPipelineStageFlags*    pWaitDstStageMask;
 +    uint32_t                       commandBufferCount;
 +    const VkCommandBuffer*         pCommandBuffers;
 +    uint32_t                       signalSemaphoreCount;
 +    const VkSemaphore*             pSignalSemaphores;
 +} VkSubmitInfo;
 +
 +typedef struct VkMappedMemoryRange {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    VkDeviceMemory     memory;
 +    VkDeviceSize       offset;
 +    VkDeviceSize       size;
 +} VkMappedMemoryRange;
 +
 +typedef struct VkMemoryAllocateInfo {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    VkDeviceSize       allocationSize;
 +    uint32_t           memoryTypeIndex;
 +} VkMemoryAllocateInfo;
 +
 +typedef struct VkMemoryRequirements {
 +    VkDeviceSize    size;
 +    VkDeviceSize    alignment;
 +    uint32_t        memoryTypeBits;
 +} VkMemoryRequirements;
 +
- typedef struct VkSparseImageMemoryBind {
-     VkImageSubresource         subresource;
-     VkOffset3D                 offset;
-     VkExtent3D                 extent;
-     VkDeviceMemory             memory;
-     VkDeviceSize               memoryOffset;
-     VkSparseMemoryBindFlags    flags;
- } VkSparseImageMemoryBind;
- typedef struct VkSparseImageMemoryBindInfo {
-     VkImage                           image;
-     uint32_t                          bindCount;
-     const VkSparseImageMemoryBind*    pBinds;
- } VkSparseImageMemoryBindInfo;
- typedef struct VkBindSparseInfo {
-     VkStructureType                             sType;
-     const void*                                 pNext;
-     uint32_t                                    waitSemaphoreCount;
-     const VkSemaphore*                          pWaitSemaphores;
-     uint32_t                                    bufferBindCount;
-     const VkSparseBufferMemoryBindInfo*         pBufferBinds;
-     uint32_t                                    imageOpaqueBindCount;
-     const VkSparseImageOpaqueMemoryBindInfo*    pImageOpaqueBinds;
-     uint32_t                                    imageBindCount;
-     const VkSparseImageMemoryBindInfo*          pImageBinds;
-     uint32_t                                    signalSemaphoreCount;
-     const VkSemaphore*                          pSignalSemaphores;
- } VkBindSparseInfo;
- typedef struct VkSparseImageFormatProperties {
-     VkImageAspectFlags          aspectMask;
-     VkExtent3D                  imageGranularity;
-     VkSparseImageFormatFlags    flags;
- } VkSparseImageFormatProperties;
- typedef struct VkSparseImageMemoryRequirements {
-     VkSparseImageFormatProperties    formatProperties;
-     uint32_t                         imageMipTailFirstLod;
-     VkDeviceSize                     imageMipTailSize;
-     VkDeviceSize                     imageMipTailOffset;
-     VkDeviceSize                     imageMipTailStride;
- } VkSparseImageMemoryRequirements;
 +typedef struct VkImageSubresource {
 +    VkImageAspectFlags    aspectMask;
 +    uint32_t              mipLevel;
 +    uint32_t              arrayLayer;
 +} VkImageSubresource;
 +
- typedef void (VKAPI_PTR *PFN_vkGetImageSparseMemoryRequirements)(VkDevice device, VkImage image, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements* pSparseMemoryRequirements);
- typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceSparseImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pPropertyCount, VkSparseImageFormatProperties* pProperties);
- typedef VkResult (VKAPI_PTR *PFN_vkQueueBindSparse)(VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence);
 +typedef struct VkFenceCreateInfo {
 +    VkStructureType       sType;
 +    const void*           pNext;
 +    VkFenceCreateFlags    flags;
 +} VkFenceCreateInfo;
 +
 +typedef struct VkSemaphoreCreateInfo {
 +    VkStructureType           sType;
 +    const void*               pNext;
 +    VkSemaphoreCreateFlags    flags;
 +} VkSemaphoreCreateInfo;
 +
 +typedef struct VkEventCreateInfo {
 +    VkStructureType       sType;
 +    const void*           pNext;
 +    VkEventCreateFlags    flags;
 +} VkEventCreateInfo;
 +
 +typedef struct VkQueryPoolCreateInfo {
 +    VkStructureType                  sType;
 +    const void*                      pNext;
 +    VkQueryPoolCreateFlags           flags;
 +    VkQueryType                      queryType;
 +    uint32_t                         queryCount;
 +    VkQueryPipelineStatisticFlags    pipelineStatistics;
 +} VkQueryPoolCreateInfo;
 +
 +typedef struct VkBufferCreateInfo {
 +    VkStructureType        sType;
 +    const void*            pNext;
 +    VkBufferCreateFlags    flags;
 +    VkDeviceSize           size;
 +    VkBufferUsageFlags     usage;
 +    VkSharingMode          sharingMode;
 +    uint32_t               queueFamilyIndexCount;
 +    const uint32_t*        pQueueFamilyIndices;
 +} VkBufferCreateInfo;
 +
 +typedef struct VkBufferViewCreateInfo {
 +    VkStructureType            sType;
 +    const void*                pNext;
 +    VkBufferViewCreateFlags    flags;
 +    VkBuffer                   buffer;
 +    VkFormat                   format;
 +    VkDeviceSize               offset;
 +    VkDeviceSize               range;
 +} VkBufferViewCreateInfo;
 +
 +typedef struct VkImageCreateInfo {
 +    VkStructureType          sType;
 +    const void*              pNext;
 +    VkImageCreateFlags       flags;
 +    VkImageType              imageType;
 +    VkFormat                 format;
 +    VkExtent3D               extent;
 +    uint32_t                 mipLevels;
 +    uint32_t                 arrayLayers;
 +    VkSampleCountFlagBits    samples;
 +    VkImageTiling            tiling;
 +    VkImageUsageFlags        usage;
 +    VkSharingMode            sharingMode;
 +    uint32_t                 queueFamilyIndexCount;
 +    const uint32_t*          pQueueFamilyIndices;
 +    VkImageLayout            initialLayout;
 +} VkImageCreateInfo;
 +
 +typedef struct VkSubresourceLayout {
 +    VkDeviceSize    offset;
 +    VkDeviceSize    size;
 +    VkDeviceSize    rowPitch;
 +    VkDeviceSize    arrayPitch;
 +    VkDeviceSize    depthPitch;
 +} VkSubresourceLayout;
 +
 +typedef struct VkComponentMapping {
 +    VkComponentSwizzle    r;
 +    VkComponentSwizzle    g;
 +    VkComponentSwizzle    b;
 +    VkComponentSwizzle    a;
 +} VkComponentMapping;
 +
 +typedef struct VkImageViewCreateInfo {
 +    VkStructureType            sType;
 +    const void*                pNext;
 +    VkImageViewCreateFlags     flags;
 +    VkImage                    image;
 +    VkImageViewType            viewType;
 +    VkFormat                   format;
 +    VkComponentMapping         components;
 +    VkImageSubresourceRange    subresourceRange;
 +} VkImageViewCreateInfo;
 +
 +typedef struct VkPipelineCacheCreateInfo {
 +    VkStructureType               sType;
 +    const void*                   pNext;
 +    VkPipelineCacheCreateFlags    flags;
 +    size_t                        initialDataSize;
 +    const void*                   pInitialData;
 +} VkPipelineCacheCreateInfo;
 +
 +typedef struct VkSpecializationMapEntry {
 +    uint32_t    constantID;
 +    uint32_t    offset;
 +    size_t      size;
 +} VkSpecializationMapEntry;
 +
 +typedef struct VkSpecializationInfo {
 +    uint32_t                           mapEntryCount;
 +    const VkSpecializationMapEntry*    pMapEntries;
 +    size_t                             dataSize;
 +    const void*                        pData;
 +} VkSpecializationInfo;
 +
 +typedef struct VkPipelineShaderStageCreateInfo {
 +    VkStructureType                     sType;
 +    const void*                         pNext;
 +    VkPipelineShaderStageCreateFlags    flags;
 +    VkShaderStageFlagBits               stage;
 +    VkShaderModule                      module;
 +    const char*                         pName;
 +    const VkSpecializationInfo*         pSpecializationInfo;
 +} VkPipelineShaderStageCreateInfo;
 +
 +typedef struct VkComputePipelineCreateInfo {
 +    VkStructureType                    sType;
 +    const void*                        pNext;
 +    VkPipelineCreateFlags              flags;
 +    VkPipelineShaderStageCreateInfo    stage;
 +    VkPipelineLayout                   layout;
 +    VkPipeline                         basePipelineHandle;
 +    int32_t                            basePipelineIndex;
 +} VkComputePipelineCreateInfo;
 +
 +typedef struct VkVertexInputBindingDescription {
 +    uint32_t             binding;
 +    uint32_t             stride;
 +    VkVertexInputRate    inputRate;
 +} VkVertexInputBindingDescription;
 +
 +typedef struct VkVertexInputAttributeDescription {
 +    uint32_t    location;
 +    uint32_t    binding;
 +    VkFormat    format;
 +    uint32_t    offset;
 +} VkVertexInputAttributeDescription;
 +
 +typedef struct VkPipelineVertexInputStateCreateInfo {
 +    VkStructureType                             sType;
 +    const void*                                 pNext;
 +    VkPipelineVertexInputStateCreateFlags       flags;
 +    uint32_t                                    vertexBindingDescriptionCount;
 +    const VkVertexInputBindingDescription*      pVertexBindingDescriptions;
 +    uint32_t                                    vertexAttributeDescriptionCount;
 +    const VkVertexInputAttributeDescription*    pVertexAttributeDescriptions;
 +} VkPipelineVertexInputStateCreateInfo;
 +
 +typedef struct VkPipelineInputAssemblyStateCreateInfo {
 +    VkStructureType                            sType;
 +    const void*                                pNext;
 +    VkPipelineInputAssemblyStateCreateFlags    flags;
 +    VkPrimitiveTopology                        topology;
 +    VkBool32                                   primitiveRestartEnable;
 +} VkPipelineInputAssemblyStateCreateInfo;
 +
 +typedef struct VkPipelineTessellationStateCreateInfo {
 +    VkStructureType                           sType;
 +    const void*                               pNext;
 +    VkPipelineTessellationStateCreateFlags    flags;
 +    uint32_t                                  patchControlPoints;
 +} VkPipelineTessellationStateCreateInfo;
 +
 +typedef struct VkViewport {
 +    float    x;
 +    float    y;
 +    float    width;
 +    float    height;
 +    float    minDepth;
 +    float    maxDepth;
 +} VkViewport;
 +
 +typedef struct VkPipelineViewportStateCreateInfo {
 +    VkStructureType                       sType;
 +    const void*                           pNext;
 +    VkPipelineViewportStateCreateFlags    flags;
 +    uint32_t                              viewportCount;
 +    const VkViewport*                     pViewports;
 +    uint32_t                              scissorCount;
 +    const VkRect2D*                       pScissors;
 +} VkPipelineViewportStateCreateInfo;
 +
 +typedef struct VkPipelineRasterizationStateCreateInfo {
 +    VkStructureType                            sType;
 +    const void*                                pNext;
 +    VkPipelineRasterizationStateCreateFlags    flags;
 +    VkBool32                                   depthClampEnable;
 +    VkBool32                                   rasterizerDiscardEnable;
 +    VkPolygonMode                              polygonMode;
 +    VkCullModeFlags                            cullMode;
 +    VkFrontFace                                frontFace;
 +    VkBool32                                   depthBiasEnable;
 +    float                                      depthBiasConstantFactor;
 +    float                                      depthBiasClamp;
 +    float                                      depthBiasSlopeFactor;
 +    float                                      lineWidth;
 +} VkPipelineRasterizationStateCreateInfo;
 +
 +typedef struct VkPipelineMultisampleStateCreateInfo {
 +    VkStructureType                          sType;
 +    const void*                              pNext;
 +    VkPipelineMultisampleStateCreateFlags    flags;
 +    VkSampleCountFlagBits                    rasterizationSamples;
 +    VkBool32                                 sampleShadingEnable;
 +    float                                    minSampleShading;
 +    const VkSampleMask*                      pSampleMask;
 +    VkBool32                                 alphaToCoverageEnable;
 +    VkBool32                                 alphaToOneEnable;
 +} VkPipelineMultisampleStateCreateInfo;
 +
 +typedef struct VkStencilOpState {
 +    VkStencilOp    failOp;
 +    VkStencilOp    passOp;
 +    VkStencilOp    depthFailOp;
 +    VkCompareOp    compareOp;
 +    uint32_t       compareMask;
 +    uint32_t       writeMask;
 +    uint32_t       reference;
 +} VkStencilOpState;
 +
 +typedef struct VkPipelineDepthStencilStateCreateInfo {
 +    VkStructureType                           sType;
 +    const void*                               pNext;
 +    VkPipelineDepthStencilStateCreateFlags    flags;
 +    VkBool32                                  depthTestEnable;
 +    VkBool32                                  depthWriteEnable;
 +    VkCompareOp                               depthCompareOp;
 +    VkBool32                                  depthBoundsTestEnable;
 +    VkBool32                                  stencilTestEnable;
 +    VkStencilOpState                          front;
 +    VkStencilOpState                          back;
 +    float                                     minDepthBounds;
 +    float                                     maxDepthBounds;
 +} VkPipelineDepthStencilStateCreateInfo;
 +
 +typedef struct VkPipelineColorBlendAttachmentState {
 +    VkBool32                 blendEnable;
 +    VkBlendFactor            srcColorBlendFactor;
 +    VkBlendFactor            dstColorBlendFactor;
 +    VkBlendOp                colorBlendOp;
 +    VkBlendFactor            srcAlphaBlendFactor;
 +    VkBlendFactor            dstAlphaBlendFactor;
 +    VkBlendOp                alphaBlendOp;
 +    VkColorComponentFlags    colorWriteMask;
 +} VkPipelineColorBlendAttachmentState;
 +
 +typedef struct VkPipelineColorBlendStateCreateInfo {
 +    VkStructureType                               sType;
 +    const void*                                   pNext;
 +    VkPipelineColorBlendStateCreateFlags          flags;
 +    VkBool32                                      logicOpEnable;
 +    VkLogicOp                                     logicOp;
 +    uint32_t                                      attachmentCount;
 +    const VkPipelineColorBlendAttachmentState*    pAttachments;
 +    float                                         blendConstants[4];
 +} VkPipelineColorBlendStateCreateInfo;
 +
 +typedef struct VkPipelineDynamicStateCreateInfo {
 +    VkStructureType                      sType;
 +    const void*                          pNext;
 +    VkPipelineDynamicStateCreateFlags    flags;
 +    uint32_t                             dynamicStateCount;
 +    const VkDynamicState*                pDynamicStates;
 +} VkPipelineDynamicStateCreateInfo;
 +
 +typedef struct VkGraphicsPipelineCreateInfo {
 +    VkStructureType                                  sType;
 +    const void*                                      pNext;
 +    VkPipelineCreateFlags                            flags;
 +    uint32_t                                         stageCount;
 +    const VkPipelineShaderStageCreateInfo*           pStages;
 +    const VkPipelineVertexInputStateCreateInfo*      pVertexInputState;
 +    const VkPipelineInputAssemblyStateCreateInfo*    pInputAssemblyState;
 +    const VkPipelineTessellationStateCreateInfo*     pTessellationState;
 +    const VkPipelineViewportStateCreateInfo*         pViewportState;
 +    const VkPipelineRasterizationStateCreateInfo*    pRasterizationState;
 +    const VkPipelineMultisampleStateCreateInfo*      pMultisampleState;
 +    const VkPipelineDepthStencilStateCreateInfo*     pDepthStencilState;
 +    const VkPipelineColorBlendStateCreateInfo*       pColorBlendState;
 +    const VkPipelineDynamicStateCreateInfo*          pDynamicState;
 +    VkPipelineLayout                                 layout;
 +    VkRenderPass                                     renderPass;
 +    uint32_t                                         subpass;
 +    VkPipeline                                       basePipelineHandle;
 +    int32_t                                          basePipelineIndex;
 +} VkGraphicsPipelineCreateInfo;
 +
 +typedef struct VkPushConstantRange {
 +    VkShaderStageFlags    stageFlags;
 +    uint32_t              offset;
 +    uint32_t              size;
 +} VkPushConstantRange;
 +
 +typedef struct VkPipelineLayoutCreateInfo {
 +    VkStructureType                 sType;
 +    const void*                     pNext;
 +    VkPipelineLayoutCreateFlags     flags;
 +    uint32_t                        setLayoutCount;
 +    const VkDescriptorSetLayout*    pSetLayouts;
 +    uint32_t                        pushConstantRangeCount;
 +    const VkPushConstantRange*      pPushConstantRanges;
 +} VkPipelineLayoutCreateInfo;
 +
 +typedef struct VkSamplerCreateInfo {
 +    VkStructureType         sType;
 +    const void*             pNext;
 +    VkSamplerCreateFlags    flags;
 +    VkFilter                magFilter;
 +    VkFilter                minFilter;
 +    VkSamplerMipmapMode     mipmapMode;
 +    VkSamplerAddressMode    addressModeU;
 +    VkSamplerAddressMode    addressModeV;
 +    VkSamplerAddressMode    addressModeW;
 +    float                   mipLodBias;
 +    VkBool32                anisotropyEnable;
 +    float                   maxAnisotropy;
 +    VkBool32                compareEnable;
 +    VkCompareOp             compareOp;
 +    float                   minLod;
 +    float                   maxLod;
 +    VkBorderColor           borderColor;
 +    VkBool32                unnormalizedCoordinates;
 +} VkSamplerCreateInfo;
 +
 +typedef struct VkCopyDescriptorSet {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    VkDescriptorSet    srcSet;
 +    uint32_t           srcBinding;
 +    uint32_t           srcArrayElement;
 +    VkDescriptorSet    dstSet;
 +    uint32_t           dstBinding;
 +    uint32_t           dstArrayElement;
 +    uint32_t           descriptorCount;
 +} VkCopyDescriptorSet;
 +
 +typedef struct VkDescriptorBufferInfo {
 +    VkBuffer        buffer;
 +    VkDeviceSize    offset;
 +    VkDeviceSize    range;
 +} VkDescriptorBufferInfo;
 +
 +typedef struct VkDescriptorImageInfo {
 +    VkSampler        sampler;
 +    VkImageView      imageView;
 +    VkImageLayout    imageLayout;
 +} VkDescriptorImageInfo;
 +
 +typedef struct VkDescriptorPoolSize {
 +    VkDescriptorType    type;
 +    uint32_t            descriptorCount;
 +} VkDescriptorPoolSize;
 +
 +typedef struct VkDescriptorPoolCreateInfo {
 +    VkStructureType                sType;
 +    const void*                    pNext;
 +    VkDescriptorPoolCreateFlags    flags;
 +    uint32_t                       maxSets;
 +    uint32_t                       poolSizeCount;
 +    const VkDescriptorPoolSize*    pPoolSizes;
 +} VkDescriptorPoolCreateInfo;
 +
 +typedef struct VkDescriptorSetAllocateInfo {
 +    VkStructureType                 sType;
 +    const void*                     pNext;
 +    VkDescriptorPool                descriptorPool;
 +    uint32_t                        descriptorSetCount;
 +    const VkDescriptorSetLayout*    pSetLayouts;
 +} VkDescriptorSetAllocateInfo;
 +
 +typedef struct VkDescriptorSetLayoutBinding {
 +    uint32_t              binding;
 +    VkDescriptorType      descriptorType;
 +    uint32_t              descriptorCount;
 +    VkShaderStageFlags    stageFlags;
 +    const VkSampler*      pImmutableSamplers;
 +} VkDescriptorSetLayoutBinding;
 +
 +typedef struct VkDescriptorSetLayoutCreateInfo {
 +    VkStructureType                        sType;
 +    const void*                            pNext;
 +    VkDescriptorSetLayoutCreateFlags       flags;
 +    uint32_t                               bindingCount;
 +    const VkDescriptorSetLayoutBinding*    pBindings;
 +} VkDescriptorSetLayoutCreateInfo;
 +
 +typedef struct VkWriteDescriptorSet {
 +    VkStructureType                  sType;
 +    const void*                      pNext;
 +    VkDescriptorSet                  dstSet;
 +    uint32_t                         dstBinding;
 +    uint32_t                         dstArrayElement;
 +    uint32_t                         descriptorCount;
 +    VkDescriptorType                 descriptorType;
 +    const VkDescriptorImageInfo*     pImageInfo;
 +    const VkDescriptorBufferInfo*    pBufferInfo;
 +    const VkBufferView*              pTexelBufferView;
 +} VkWriteDescriptorSet;
 +
 +typedef struct VkAttachmentDescription {
 +    VkAttachmentDescriptionFlags    flags;
 +    VkFormat                        format;
 +    VkSampleCountFlagBits           samples;
 +    VkAttachmentLoadOp              loadOp;
 +    VkAttachmentStoreOp             storeOp;
 +    VkAttachmentLoadOp              stencilLoadOp;
 +    VkAttachmentStoreOp             stencilStoreOp;
 +    VkImageLayout                   initialLayout;
 +    VkImageLayout                   finalLayout;
 +} VkAttachmentDescription;
 +
 +typedef struct VkAttachmentReference {
 +    uint32_t         attachment;
 +    VkImageLayout    layout;
 +} VkAttachmentReference;
 +
 +typedef struct VkFramebufferCreateInfo {
 +    VkStructureType             sType;
 +    const void*                 pNext;
 +    VkFramebufferCreateFlags    flags;
 +    VkRenderPass                renderPass;
 +    uint32_t                    attachmentCount;
 +    const VkImageView*          pAttachments;
 +    uint32_t                    width;
 +    uint32_t                    height;
 +    uint32_t                    layers;
 +} VkFramebufferCreateInfo;
 +
 +typedef struct VkSubpassDescription {
 +    VkSubpassDescriptionFlags       flags;
 +    VkPipelineBindPoint             pipelineBindPoint;
 +    uint32_t                        inputAttachmentCount;
 +    const VkAttachmentReference*    pInputAttachments;
 +    uint32_t                        colorAttachmentCount;
 +    const VkAttachmentReference*    pColorAttachments;
 +    const VkAttachmentReference*    pResolveAttachments;
 +    const VkAttachmentReference*    pDepthStencilAttachment;
 +    uint32_t                        preserveAttachmentCount;
 +    const uint32_t*                 pPreserveAttachments;
 +} VkSubpassDescription;
 +
 +typedef struct VkSubpassDependency {
 +    uint32_t                srcSubpass;
 +    uint32_t                dstSubpass;
 +    VkPipelineStageFlags    srcStageMask;
 +    VkPipelineStageFlags    dstStageMask;
 +    VkAccessFlags           srcAccessMask;
 +    VkAccessFlags           dstAccessMask;
 +    VkDependencyFlags       dependencyFlags;
 +} VkSubpassDependency;
 +
 +typedef struct VkRenderPassCreateInfo {
 +    VkStructureType                   sType;
 +    const void*                       pNext;
 +    VkRenderPassCreateFlags           flags;
 +    uint32_t                          attachmentCount;
 +    const VkAttachmentDescription*    pAttachments;
 +    uint32_t                          subpassCount;
 +    const VkSubpassDescription*       pSubpasses;
 +    uint32_t                          dependencyCount;
 +    const VkSubpassDependency*        pDependencies;
 +} VkRenderPassCreateInfo;
 +
 +typedef struct VkCommandPoolCreateInfo {
 +    VkStructureType             sType;
 +    const void*                 pNext;
 +    VkCommandPoolCreateFlags    flags;
 +    uint32_t                    queueFamilyIndex;
 +} VkCommandPoolCreateInfo;
 +
 +typedef struct VkCommandBufferAllocateInfo {
 +    VkStructureType         sType;
 +    const void*             pNext;
 +    VkCommandPool           commandPool;
 +    VkCommandBufferLevel    level;
 +    uint32_t                commandBufferCount;
 +} VkCommandBufferAllocateInfo;
 +
 +typedef struct VkCommandBufferInheritanceInfo {
 +    VkStructureType                  sType;
 +    const void*                      pNext;
 +    VkRenderPass                     renderPass;
 +    uint32_t                         subpass;
 +    VkFramebuffer                    framebuffer;
 +    VkBool32                         occlusionQueryEnable;
 +    VkQueryControlFlags              queryFlags;
 +    VkQueryPipelineStatisticFlags    pipelineStatistics;
 +} VkCommandBufferInheritanceInfo;
 +
 +typedef struct VkCommandBufferBeginInfo {
 +    VkStructureType                          sType;
 +    const void*                              pNext;
 +    VkCommandBufferUsageFlags                flags;
 +    const VkCommandBufferInheritanceInfo*    pInheritanceInfo;
 +} VkCommandBufferBeginInfo;
 +
 +typedef struct VkBufferCopy {
 +    VkDeviceSize    srcOffset;
 +    VkDeviceSize    dstOffset;
 +    VkDeviceSize    size;
 +} VkBufferCopy;
 +
 +typedef struct VkImageSubresourceLayers {
 +    VkImageAspectFlags    aspectMask;
 +    uint32_t              mipLevel;
 +    uint32_t              baseArrayLayer;
 +    uint32_t              layerCount;
 +} VkImageSubresourceLayers;
 +
 +typedef struct VkBufferImageCopy {
 +    VkDeviceSize                bufferOffset;
 +    uint32_t                    bufferRowLength;
 +    uint32_t                    bufferImageHeight;
 +    VkImageSubresourceLayers    imageSubresource;
 +    VkOffset3D                  imageOffset;
 +    VkExtent3D                  imageExtent;
 +} VkBufferImageCopy;
 +
 +typedef union VkClearColorValue {
 +    float       float32[4];
 +    int32_t     int32[4];
 +    uint32_t    uint32[4];
 +} VkClearColorValue;
 +
 +typedef struct VkClearDepthStencilValue {
 +    float       depth;
 +    uint32_t    stencil;
 +} VkClearDepthStencilValue;
 +
 +typedef union VkClearValue {
 +    VkClearColorValue           color;
 +    VkClearDepthStencilValue    depthStencil;
 +} VkClearValue;
 +
 +typedef struct VkClearAttachment {
 +    VkImageAspectFlags    aspectMask;
 +    uint32_t              colorAttachment;
 +    VkClearValue          clearValue;
 +} VkClearAttachment;
 +
 +typedef struct VkClearRect {
 +    VkRect2D    rect;
 +    uint32_t    baseArrayLayer;
 +    uint32_t    layerCount;
 +} VkClearRect;
 +
 +typedef struct VkImageBlit {
 +    VkImageSubresourceLayers    srcSubresource;
 +    VkOffset3D                  srcOffsets[2];
 +    VkImageSubresourceLayers    dstSubresource;
 +    VkOffset3D                  dstOffsets[2];
 +} VkImageBlit;
 +
 +typedef struct VkImageCopy {
 +    VkImageSubresourceLayers    srcSubresource;
 +    VkOffset3D                  srcOffset;
 +    VkImageSubresourceLayers    dstSubresource;
 +    VkOffset3D                  dstOffset;
 +    VkExtent3D                  extent;
 +} VkImageCopy;
 +
 +typedef struct VkImageResolve {
 +    VkImageSubresourceLayers    srcSubresource;
 +    VkOffset3D                  srcOffset;
 +    VkImageSubresourceLayers    dstSubresource;
 +    VkOffset3D                  dstOffset;
 +    VkExtent3D                  extent;
 +} VkImageResolve;
 +
 +typedef struct VkRenderPassBeginInfo {
 +    VkStructureType        sType;
 +    const void*            pNext;
 +    VkRenderPass           renderPass;
 +    VkFramebuffer          framebuffer;
 +    VkRect2D               renderArea;
 +    uint32_t               clearValueCount;
 +    const VkClearValue*    pClearValues;
 +} VkRenderPassBeginInfo;
 +
 +typedef VkResult (VKAPI_PTR *PFN_vkCreateInstance)(const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkInstance* pInstance);
 +typedef void (VKAPI_PTR *PFN_vkDestroyInstance)(VkInstance instance, const VkAllocationCallbacks* pAllocator);
 +typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDevices)(VkInstance instance, uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices);
 +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFeatures)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures);
 +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties);
 +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties);
 +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties);
 +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyProperties)(VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties* pQueueFamilyProperties);
 +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMemoryProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties);
 +typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_vkGetInstanceProcAddr)(VkInstance instance, const char* pName);
 +typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_vkGetDeviceProcAddr)(VkDevice device, const char* pName);
 +typedef VkResult (VKAPI_PTR *PFN_vkCreateDevice)(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice);
 +typedef void (VKAPI_PTR *PFN_vkDestroyDevice)(VkDevice device, const VkAllocationCallbacks* pAllocator);
 +typedef VkResult (VKAPI_PTR *PFN_vkEnumerateInstanceExtensionProperties)(const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties);
 +typedef VkResult (VKAPI_PTR *PFN_vkEnumerateDeviceExtensionProperties)(VkPhysicalDevice physicalDevice, const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties);
 +typedef VkResult (VKAPI_PTR *PFN_vkEnumerateInstanceLayerProperties)(uint32_t* pPropertyCount, VkLayerProperties* pProperties);
 +typedef VkResult (VKAPI_PTR *PFN_vkEnumerateDeviceLayerProperties)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkLayerProperties* pProperties);
 +typedef void (VKAPI_PTR *PFN_vkGetDeviceQueue)(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue* pQueue);
 +typedef VkResult (VKAPI_PTR *PFN_vkQueueSubmit)(VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence);
 +typedef VkResult (VKAPI_PTR *PFN_vkQueueWaitIdle)(VkQueue queue);
 +typedef VkResult (VKAPI_PTR *PFN_vkDeviceWaitIdle)(VkDevice device);
 +typedef VkResult (VKAPI_PTR *PFN_vkAllocateMemory)(VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory);
 +typedef VkResult (VKAPI_PTR *PFN_vkMapMemory)(VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData);
 +typedef void (VKAPI_PTR *PFN_vkUnmapMemory)(VkDevice device, VkDeviceMemory memory);
 +typedef VkResult (VKAPI_PTR *PFN_vkFlushMappedMemoryRanges)(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges);
 +typedef VkResult (VKAPI_PTR *PFN_vkInvalidateMappedMemoryRanges)(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges);
 +typedef void (VKAPI_PTR *PFN_vkGetDeviceMemoryCommitment)(VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes);
 +typedef VkResult (VKAPI_PTR *PFN_vkBindBufferMemory)(VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset);
 +typedef VkResult (VKAPI_PTR *PFN_vkBindImageMemory)(VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset);
 +typedef void (VKAPI_PTR *PFN_vkGetBufferMemoryRequirements)(VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements);
 +typedef void (VKAPI_PTR *PFN_vkGetImageMemoryRequirements)(VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements);
- VKAPI_ATTR void VKAPI_CALL vkGetImageSparseMemoryRequirements(
-     VkDevice                                    device,
-     VkImage                                     image,
-     uint32_t*                                   pSparseMemoryRequirementCount,
-     VkSparseImageMemoryRequirements*            pSparseMemoryRequirements);
- VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties(
-     VkPhysicalDevice                            physicalDevice,
-     VkFormat                                    format,
-     VkImageType                                 type,
-     VkSampleCountFlagBits                       samples,
-     VkImageUsageFlags                           usage,
-     VkImageTiling                               tiling,
-     uint32_t*                                   pPropertyCount,
-     VkSparseImageFormatProperties*              pProperties);
- VKAPI_ATTR VkResult VKAPI_CALL vkQueueBindSparse(
-     VkQueue                                     queue,
-     uint32_t                                    bindInfoCount,
-     const VkBindSparseInfo*                     pBindInfo,
-     VkFence                                     fence);
 +typedef VkResult (VKAPI_PTR *PFN_vkCreateFence)(VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);
 +typedef void (VKAPI_PTR *PFN_vkDestroyFence)(VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator);
 +typedef VkResult (VKAPI_PTR *PFN_vkResetFences)(VkDevice device, uint32_t fenceCount, const VkFence* pFences);
 +typedef VkResult (VKAPI_PTR *PFN_vkGetFenceStatus)(VkDevice device, VkFence fence);
 +typedef VkResult (VKAPI_PTR *PFN_vkWaitForFences)(VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout);
 +typedef VkResult (VKAPI_PTR *PFN_vkCreateSemaphore)(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore);
 +typedef void (VKAPI_PTR *PFN_vkDestroySemaphore)(VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator);
 +typedef VkResult (VKAPI_PTR *PFN_vkCreateEvent)(VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkEvent* pEvent);
 +typedef void (VKAPI_PTR *PFN_vkDestroyEvent)(VkDevice device, VkEvent event, const VkAllocationCallbacks* pAllocator);
 +typedef VkResult (VKAPI_PTR *PFN_vkGetEventStatus)(VkDevice device, VkEvent event);
 +typedef VkResult (VKAPI_PTR *PFN_vkSetEvent)(VkDevice device, VkEvent event);
 +typedef VkResult (VKAPI_PTR *PFN_vkResetEvent)(VkDevice device, VkEvent event);
 +typedef VkResult (VKAPI_PTR *PFN_vkCreateQueryPool)(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkQueryPool* pQueryPool);
 +typedef VkResult (VKAPI_PTR *PFN_vkGetQueryPoolResults)(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, size_t dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags);
 +typedef VkResult (VKAPI_PTR *PFN_vkCreateBuffer)(VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer);
 +typedef void (VKAPI_PTR *PFN_vkDestroyBuffer)(VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator);
 +typedef VkResult (VKAPI_PTR *PFN_vkCreateBufferView)(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView);
 +typedef void (VKAPI_PTR *PFN_vkDestroyBufferView)(VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* pAllocator);
 +typedef VkResult (VKAPI_PTR *PFN_vkCreateImage)(VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImage* pImage);
 +typedef void (VKAPI_PTR *PFN_vkDestroyImage)(VkDevice device, VkImage image, const VkAllocationCallbacks* pAllocator);
 +typedef void (VKAPI_PTR *PFN_vkGetImageSubresourceLayout)(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout);
 +typedef VkResult (VKAPI_PTR *PFN_vkCreateImageView)(VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImageView* pView);
 +typedef void (VKAPI_PTR *PFN_vkDestroyImageView)(VkDevice device, VkImageView imageView, const VkAllocationCallbacks* pAllocator);
 +typedef VkResult (VKAPI_PTR *PFN_vkCreatePipelineCache)(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache);
 +typedef void (VKAPI_PTR *PFN_vkDestroyPipelineCache)(VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator);
 +typedef VkResult (VKAPI_PTR *PFN_vkCreateGraphicsPipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
 +typedef VkResult (VKAPI_PTR *PFN_vkCreateComputePipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
 +typedef void (VKAPI_PTR *PFN_vkDestroyPipeline)(VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator);
 +typedef VkResult (VKAPI_PTR *PFN_vkCreatePipelineLayout)(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout);
 +typedef void (VKAPI_PTR *PFN_vkDestroyPipelineLayout)(VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* pAllocator);
 +typedef VkResult (VKAPI_PTR *PFN_vkCreateSampler)(VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler);
 +typedef void (VKAPI_PTR *PFN_vkDestroySampler)(VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator);
 +typedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorSetLayout)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout);
 +typedef void (VKAPI_PTR *PFN_vkDestroyDescriptorSetLayout)(VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* pAllocator);
 +typedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorPool)(VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool);
 +typedef VkResult (VKAPI_PTR *PFN_vkResetDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags);
 +typedef VkResult (VKAPI_PTR *PFN_vkAllocateDescriptorSets)(VkDevice device, const VkDescriptorSetAllocateInfo* pAllocateInfo, VkDescriptorSet* pDescriptorSets);
 +typedef VkResult (VKAPI_PTR *PFN_vkFreeDescriptorSets)(VkDevice device, VkDescriptorPool descriptorPool, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets);
 +typedef void (VKAPI_PTR *PFN_vkUpdateDescriptorSets)(VkDevice device, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const VkCopyDescriptorSet* pDescriptorCopies);
 +typedef VkResult (VKAPI_PTR *PFN_vkCreateFramebuffer)(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFramebuffer* pFramebuffer);
 +typedef void (VKAPI_PTR *PFN_vkDestroyFramebuffer)(VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator);
 +typedef VkResult (VKAPI_PTR *PFN_vkCreateRenderPass)(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
 +typedef void (VKAPI_PTR *PFN_vkDestroyRenderPass)(VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator);
 +typedef void (VKAPI_PTR *PFN_vkGetRenderAreaGranularity)(VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity);
 +typedef VkResult (VKAPI_PTR *PFN_vkCreateCommandPool)(VkDevice device, const VkCommandPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCommandPool* pCommandPool);
 +typedef VkResult (VKAPI_PTR *PFN_vkResetCommandPool)(VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags);
 +typedef VkResult (VKAPI_PTR *PFN_vkAllocateCommandBuffers)(VkDevice device, const VkCommandBufferAllocateInfo* pAllocateInfo, VkCommandBuffer* pCommandBuffers);
 +typedef void (VKAPI_PTR *PFN_vkFreeCommandBuffers)(VkDevice device, VkCommandPool commandPool, uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers);
 +typedef VkResult (VKAPI_PTR *PFN_vkBeginCommandBuffer)(VkCommandBuffer commandBuffer, const VkCommandBufferBeginInfo* pBeginInfo);
 +typedef VkResult (VKAPI_PTR *PFN_vkEndCommandBuffer)(VkCommandBuffer commandBuffer);
 +typedef VkResult (VKAPI_PTR *PFN_vkResetCommandBuffer)(VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags);
 +typedef void (VKAPI_PTR *PFN_vkCmdBindPipeline)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline);
 +typedef void (VKAPI_PTR *PFN_vkCmdSetViewport)(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewport* pViewports);
 +typedef void (VKAPI_PTR *PFN_vkCmdSetScissor)(VkCommandBuffer commandBuffer, uint32_t firstScissor, uint32_t scissorCount, const VkRect2D* pScissors);
 +typedef void (VKAPI_PTR *PFN_vkCmdSetLineWidth)(VkCommandBuffer commandBuffer, float lineWidth);
 +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBias)(VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor);
 +typedef void (VKAPI_PTR *PFN_vkCmdSetBlendConstants)(VkCommandBuffer commandBuffer, const float blendConstants[4]);
 +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBounds)(VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds);
 +typedef void (VKAPI_PTR *PFN_vkCmdSetStencilCompareMask)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t compareMask);
 +typedef void (VKAPI_PTR *PFN_vkCmdSetStencilWriteMask)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t writeMask);
 +typedef void (VKAPI_PTR *PFN_vkCmdSetStencilReference)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t reference);
 +typedef void (VKAPI_PTR *PFN_vkCmdBindDescriptorSets)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t firstSet, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets);
 +typedef void (VKAPI_PTR *PFN_vkCmdBindIndexBuffer)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType);
 +typedef void (VKAPI_PTR *PFN_vkCmdBindVertexBuffers)(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets);
 +typedef void (VKAPI_PTR *PFN_vkCmdDraw)(VkCommandBuffer commandBuffer, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance);
 +typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexed)(VkCommandBuffer commandBuffer, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance);
 +typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride);
 +typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride);
 +typedef void (VKAPI_PTR *PFN_vkCmdDispatch)(VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ);
 +typedef void (VKAPI_PTR *PFN_vkCmdDispatchIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset);
 +typedef void (VKAPI_PTR *PFN_vkCmdCopyBuffer)(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferCopy* pRegions);
 +typedef void (VKAPI_PTR *PFN_vkCmdCopyImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageCopy* pRegions);
 +typedef void (VKAPI_PTR *PFN_vkCmdBlitImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkFilter filter);
 +typedef void (VKAPI_PTR *PFN_vkCmdCopyBufferToImage)(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions);
 +typedef void (VKAPI_PTR *PFN_vkCmdCopyImageToBuffer)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions);
 +typedef void (VKAPI_PTR *PFN_vkCmdUpdateBuffer)(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const void* pData);
 +typedef void (VKAPI_PTR *PFN_vkCmdFillBuffer)(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, uint32_t data);
 +typedef void (VKAPI_PTR *PFN_vkCmdClearColorImage)(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
 +typedef void (VKAPI_PTR *PFN_vkCmdClearDepthStencilImage)(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
 +typedef void (VKAPI_PTR *PFN_vkCmdClearAttachments)(VkCommandBuffer commandBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkClearRect* pRects);
 +typedef void (VKAPI_PTR *PFN_vkCmdResolveImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageResolve* pRegions);
 +typedef void (VKAPI_PTR *PFN_vkCmdSetEvent)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask);
 +typedef void (VKAPI_PTR *PFN_vkCmdResetEvent)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask);
 +typedef void (VKAPI_PTR *PFN_vkCmdWaitEvents)(VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, uint32_t memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers);
 +typedef void (VKAPI_PTR *PFN_vkCmdPipelineBarrier)(VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, uint32_t memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers);
 +typedef void (VKAPI_PTR *PFN_vkCmdBeginQuery)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags);
 +typedef void (VKAPI_PTR *PFN_vkCmdEndQuery)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query);
 +typedef void (VKAPI_PTR *PFN_vkCmdResetQueryPool)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount);
 +typedef void (VKAPI_PTR *PFN_vkCmdWriteTimestamp)(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t query);
 +typedef void (VKAPI_PTR *PFN_vkCmdCopyQueryPoolResults)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags);
 +typedef void (VKAPI_PTR *PFN_vkCmdPushConstants)(VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues);
 +typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents);
 +typedef void (VKAPI_PTR *PFN_vkCmdNextSubpass)(VkCommandBuffer commandBuffer, VkSubpassContents contents);
 +typedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass)(VkCommandBuffer commandBuffer);
 +typedef void (VKAPI_PTR *PFN_vkCmdExecuteCommands)(VkCommandBuffer commandBuffer, uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers);
 +
 +#ifndef VK_NO_PROTOTYPES
 +VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance(
 +    const VkInstanceCreateInfo*                 pCreateInfo,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkInstance*                                 pInstance);
 +
 +VKAPI_ATTR void VKAPI_CALL vkDestroyInstance(
 +    VkInstance                                  instance,
 +    const VkAllocationCallbacks*                pAllocator);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDevices(
 +    VkInstance                                  instance,
 +    uint32_t*                                   pPhysicalDeviceCount,
 +    VkPhysicalDevice*                           pPhysicalDevices);
 +
 +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFeatures(
 +    VkPhysicalDevice                            physicalDevice,
 +    VkPhysicalDeviceFeatures*                   pFeatures);
 +
 +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFormatProperties(
 +    VkPhysicalDevice                            physicalDevice,
 +    VkFormat                                    format,
 +    VkFormatProperties*                         pFormatProperties);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceImageFormatProperties(
 +    VkPhysicalDevice                            physicalDevice,
 +    VkFormat                                    format,
 +    VkImageType                                 type,
 +    VkImageTiling                               tiling,
 +    VkImageUsageFlags                           usage,
 +    VkImageCreateFlags                          flags,
 +    VkImageFormatProperties*                    pImageFormatProperties);
 +
 +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceProperties(
 +    VkPhysicalDevice                            physicalDevice,
 +    VkPhysicalDeviceProperties*                 pProperties);
 +
 +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyProperties(
 +    VkPhysicalDevice                            physicalDevice,
 +    uint32_t*                                   pQueueFamilyPropertyCount,
 +    VkQueueFamilyProperties*                    pQueueFamilyProperties);
 +
 +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties(
 +    VkPhysicalDevice                            physicalDevice,
 +    VkPhysicalDeviceMemoryProperties*           pMemoryProperties);
 +
 +VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetInstanceProcAddr(
 +    VkInstance                                  instance,
 +    const char*                                 pName);
 +
 +VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetDeviceProcAddr(
 +    VkDevice                                    device,
 +    const char*                                 pName);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkCreateDevice(
 +    VkPhysicalDevice                            physicalDevice,
 +    const VkDeviceCreateInfo*                   pCreateInfo,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkDevice*                                   pDevice);
 +
 +VKAPI_ATTR void VKAPI_CALL vkDestroyDevice(
 +    VkDevice                                    device,
 +    const VkAllocationCallbacks*                pAllocator);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceExtensionProperties(
 +    const char*                                 pLayerName,
 +    uint32_t*                                   pPropertyCount,
 +    VkExtensionProperties*                      pProperties);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateDeviceExtensionProperties(
 +    VkPhysicalDevice                            physicalDevice,
 +    const char*                                 pLayerName,
 +    uint32_t*                                   pPropertyCount,
 +    VkExtensionProperties*                      pProperties);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceLayerProperties(
 +    uint32_t*                                   pPropertyCount,
 +    VkLayerProperties*                          pProperties);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateDeviceLayerProperties(
 +    VkPhysicalDevice                            physicalDevice,
 +    uint32_t*                                   pPropertyCount,
 +    VkLayerProperties*                          pProperties);
 +
 +VKAPI_ATTR void VKAPI_CALL vkGetDeviceQueue(
 +    VkDevice                                    device,
 +    uint32_t                                    queueFamilyIndex,
 +    uint32_t                                    queueIndex,
 +    VkQueue*                                    pQueue);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkQueueSubmit(
 +    VkQueue                                     queue,
 +    uint32_t                                    submitCount,
 +    const VkSubmitInfo*                         pSubmits,
 +    VkFence                                     fence);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkQueueWaitIdle(
 +    VkQueue                                     queue);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkDeviceWaitIdle(
 +    VkDevice                                    device);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkAllocateMemory(
 +    VkDevice                                    device,
 +    const VkMemoryAllocateInfo*                 pAllocateInfo,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkDeviceMemory*                             pMemory);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkMapMemory(
 +    VkDevice                                    device,
 +    VkDeviceMemory                              memory,
 +    VkDeviceSize                                offset,
 +    VkDeviceSize                                size,
 +    VkMemoryMapFlags                            flags,
 +    void**                                      ppData);
 +
 +VKAPI_ATTR void VKAPI_CALL vkUnmapMemory(
 +    VkDevice                                    device,
 +    VkDeviceMemory                              memory);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkFlushMappedMemoryRanges(
 +    VkDevice                                    device,
 +    uint32_t                                    memoryRangeCount,
 +    const VkMappedMemoryRange*                  pMemoryRanges);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkInvalidateMappedMemoryRanges(
 +    VkDevice                                    device,
 +    uint32_t                                    memoryRangeCount,
 +    const VkMappedMemoryRange*                  pMemoryRanges);
 +
 +VKAPI_ATTR void VKAPI_CALL vkGetDeviceMemoryCommitment(
 +    VkDevice                                    device,
 +    VkDeviceMemory                              memory,
 +    VkDeviceSize*                               pCommittedMemoryInBytes);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkBindBufferMemory(
 +    VkDevice                                    device,
 +    VkBuffer                                    buffer,
 +    VkDeviceMemory                              memory,
 +    VkDeviceSize                                memoryOffset);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory(
 +    VkDevice                                    device,
 +    VkImage                                     image,
 +    VkDeviceMemory                              memory,
 +    VkDeviceSize                                memoryOffset);
 +
 +VKAPI_ATTR void VKAPI_CALL vkGetBufferMemoryRequirements(
 +    VkDevice                                    device,
 +    VkBuffer                                    buffer,
 +    VkMemoryRequirements*                       pMemoryRequirements);
 +
 +VKAPI_ATTR void VKAPI_CALL vkGetImageMemoryRequirements(
 +    VkDevice                                    device,
 +    VkImage                                     image,
 +    VkMemoryRequirements*                       pMemoryRequirements);
 +
- #define VKSC_VERSION_1_0 1
- // Vulkan SC 1.0 version number
- #define VKSC_API_VERSION_1_0 VK_MAKE_VERSION(1, 0, 0)// Patch version should always be set to 0
- typedef enum VkFaultLevel {
-     VK_FAULT_LEVEL_UNASSIGNED = 0,
-     VK_FAULT_LEVEL_CRITICAL = 1,
-     VK_FAULT_LEVEL_RECOVERABLE = 2,
-     VK_FAULT_LEVEL_WARNING = 3,
-     VK_FAULT_LEVEL_UNASSIGNED_KHR = VK_FAULT_LEVEL_UNASSIGNED,
-     VK_FAULT_LEVEL_CRITICAL_KHR = VK_FAULT_LEVEL_CRITICAL,
-     VK_FAULT_LEVEL_RECOVERABLE_KHR = VK_FAULT_LEVEL_RECOVERABLE,
-     VK_FAULT_LEVEL_WARNING_KHR = VK_FAULT_LEVEL_WARNING,
-     VK_FAULT_LEVEL_MAX_ENUM = 0x7FFFFFFF
- } VkFaultLevel;
- typedef enum VkFaultType {
-     VK_FAULT_TYPE_INVALID = 0,
-     VK_FAULT_TYPE_UNASSIGNED = 1,
-     VK_FAULT_TYPE_IMPLEMENTATION = 2,
-     VK_FAULT_TYPE_SYSTEM = 3,
-     VK_FAULT_TYPE_PHYSICAL_DEVICE = 4,
-     VK_FAULT_TYPE_COMMAND_BUFFER_FULL = 5,
-     VK_FAULT_TYPE_INVALID_API_USAGE = 6,
-     VK_FAULT_TYPE_INVALID_KHR = VK_FAULT_TYPE_INVALID,
-     VK_FAULT_TYPE_UNASSIGNED_KHR = VK_FAULT_TYPE_UNASSIGNED,
-     VK_FAULT_TYPE_IMPLEMENTATION_KHR = VK_FAULT_TYPE_IMPLEMENTATION,
-     VK_FAULT_TYPE_SYSTEM_KHR = VK_FAULT_TYPE_SYSTEM,
-     VK_FAULT_TYPE_PHYSICAL_DEVICE_KHR = VK_FAULT_TYPE_PHYSICAL_DEVICE,
-     VK_FAULT_TYPE_COMMAND_BUFFER_FULL_KHR = VK_FAULT_TYPE_COMMAND_BUFFER_FULL,
-     VK_FAULT_TYPE_INVALID_API_USAGE_KHR = VK_FAULT_TYPE_INVALID_API_USAGE,
-     VK_FAULT_TYPE_MAX_ENUM = 0x7FFFFFFF
- } VkFaultType;
- typedef enum VkFaultQueryBehavior {
-     VK_FAULT_QUERY_BEHAVIOR_GET_AND_CLEAR_ALL_FAULTS = 0,
-     VK_FAULT_QUERY_BEHAVIOR_GET_AND_CLEAR_ALL_FAULTS_KHR = VK_FAULT_QUERY_BEHAVIOR_GET_AND_CLEAR_ALL_FAULTS,
-     VK_FAULT_QUERY_BEHAVIOR_MAX_ENUM = 0x7FFFFFFF
- } VkFaultQueryBehavior;
- typedef enum VkPipelineMatchControl {
-     VK_PIPELINE_MATCH_CONTROL_APPLICATION_UUID_EXACT_MATCH = 0,
-     VK_PIPELINE_MATCH_CONTROL_APPLICATION_UUID_EXACT_MATCH_KHR = VK_PIPELINE_MATCH_CONTROL_APPLICATION_UUID_EXACT_MATCH,
-     VK_PIPELINE_MATCH_CONTROL_MAX_ENUM = 0x7FFFFFFF
- } VkPipelineMatchControl;
- typedef struct VkPhysicalDeviceVulkanSC10Features {
-     VkStructureType    sType;
-     void*              pNext;
-     VkBool32           pipelineIdentifier;
-     VkBool32           shaderAtomicInstructions;
- } VkPhysicalDeviceVulkanSC10Features;
- typedef struct VkPhysicalDeviceVulkanSC10Properties {
-     VkStructureType    sType;
-     void*              pNext;
-     VkBool32           deviceDestroyFreesMemory;
-     VkBool32           commandPoolMultipleCommandBuffersRecording;
-     VkBool32           commandPoolResetCommandBuffer;
-     VkBool32           descriptorPoolFreeDescriptorSets;
-     VkBool32           externalSubpassDependencies;
-     VkBool32           recyclePipelineMemory;
-     uint32_t           maxSubpasses;
-     uint32_t           maxInputAttachments;
-     uint32_t           maxPreserveAttachments;
-     uint32_t           maxFramebufferAttachments;
-     uint32_t           maxQueryFaultCount;
-     uint32_t           maxCallbackFaultCount;
-     VkBool32           commandBufferSimultaneousUse;
-     VkBool32           secondaryCommandBufferNullFramebuffer;
- } VkPhysicalDeviceVulkanSC10Properties;
- typedef struct VkPipelinePoolSize {
-     VkStructureType    sType;
-     const void*        pNext;
-     VkDeviceSize       poolEntrySize;
-     uint32_t           poolEntryCount;
- } VkPipelinePoolSize;
- typedef struct VkDeviceMemoryReservationCreateInfo {
-     VkStructureType                     sType;
-     const void*                         pNext;
-     uint32_t                            pipelineCacheCreateInfoCount;
-     const VkPipelineCacheCreateInfo*    pPipelineCacheCreateInfos;
-     uint32_t                            pipelinePoolSizeCount;
-     const VkPipelinePoolSize*           pPipelinePoolSizes;
-     uint32_t                            descriptorSetLayoutBindingCount;
-     uint32_t                            imageViewMaxMipLevels;
-     uint32_t                            imageViewMaxArrayLayers;
-     uint32_t                            layeredImageViewMaxMipLevels;
-     uint32_t                            semaphoreRequestCount;
-     uint32_t                            commandBufferRequestCount;
-     uint32_t                            fenceRequestCount;
-     uint32_t                            deviceMemoryRequestCount;
-     uint32_t                            bufferRequestCount;
-     uint32_t                            imageRequestCount;
-     uint32_t                            eventRequestCount;
-     uint32_t                            queryPoolRequestCount;
-     uint32_t                            bufferViewRequestCount;
-     uint32_t                            imageViewRequestCount;
-     uint32_t                            layeredImageViewRequestCount;
-     uint32_t                            pipelineLayoutRequestCount;
-     uint32_t                            renderPassRequestCount;
-     uint32_t                            graphicsPipelineRequestCount;
-     uint32_t                            computePipelineRequestCount;
-     uint32_t                            descriptorSetLayoutRequestCount;
-     uint32_t                            samplerRequestCount;
-     uint32_t                            descriptorPoolRequestCount;
-     uint32_t                            descriptorSetRequestCount;
-     uint32_t                            framebufferRequestCount;
-     uint32_t                            commandPoolRequestCount;
-     uint32_t                            samplerYcbcrConversionRequestCount;
-     uint32_t                            surfaceRequestCount;
-     uint32_t                            swapchainRequestCount;
-     uint32_t                            displayModeRequestCount;
- } VkDeviceMemoryReservationCreateInfo;
- typedef struct VkCommandPoolMemoryReservationCreateInfo {
-     VkStructureType    sType;
-     const void*        pNext;
-     VkDeviceSize       commandPoolReservedSize;
-     uint32_t           commandPoolMaxCommandBuffers;
- } VkCommandPoolMemoryReservationCreateInfo;
- typedef struct VkCommandPoolMemoryConsumption {
-     VkStructureType    sType;
-     void*              pNext;
-     VkDeviceSize       commandPoolAllocated;
-     VkDeviceSize       commandPoolReservedSize;
-     VkDeviceSize       commandBufferAllocated;
- } VkCommandPoolMemoryConsumption;
- typedef struct VkPipelinePoolEntrySizeCreateInfo {
-     VkStructureType    sType;
-     const void*        pNext;
-     VkDeviceSize       poolEntrySize;
- } VkPipelinePoolEntrySizeCreateInfo;
- typedef struct VkFaultData {
-     VkStructureType    sType;
-     void*              pNext;
-     VkFaultLevel       faultLevel;
-     VkFaultType        faultType;
- } VkFaultData;
- typedef void (VKAPI_PTR *PFN_vkFaultCallbackFunction)(
-     VkBool32                                    unrecordedFaults,
-     uint32_t                                    faultCount,
-     const VkFaultData*                          pFaults);
- typedef struct VkFaultCallbackInfo {
-     VkStructureType                sType;
-     void*                          pNext;
-     VkFaultData*                   pFaults;
-     PFN_vkFaultCallbackFunction    pfnFaultCallback;
- } VkFaultCallbackInfo;
- typedef struct VkPhysicalDeviceFaultHandlingProperties {
-     VkStructureType    sType;
-     void*              pNext;
-     uint32_t           maxQueryFaultCount;
-     uint32_t           maxCallbackFaultCount;
- } VkPhysicalDeviceFaultHandlingProperties;
- typedef struct VkPhysicalDevicePipelineIdentifierFeatures {
-     VkStructureType    sType;
-     void*              pNext;
-     VkBool32           pipelineIdentifier;
- } VkPhysicalDevicePipelineIdentifierFeatures;
- typedef struct VkPipelineIdentifierInfo {
-     VkStructureType           sType;
-     const void*               pNext;
-     uint8_t                   pipelineIdentifier[VK_UUID_SIZE];
-     VkPipelineMatchControl    matchControl;
- } VkPipelineIdentifierInfo;
- typedef void (VKAPI_PTR *PFN_vkGetCommandPoolMemoryConsumption)(VkDevice device, VkCommandPool commandPool, VkCommandBuffer commandBuffer, VkCommandPoolMemoryConsumption* pConsumption);
- typedef VkResult (VKAPI_PTR *PFN_vkGetFaultData)(VkDevice device, VkFaultQueryBehavior faultQueryBehavior, VkBool32* pUnrecordedFaults, uint32_t* pFaultCount, VkFaultData* pFaults);
- #ifndef VK_NO_PROTOTYPES
- VKAPI_ATTR void VKAPI_CALL vkGetCommandPoolMemoryConsumption(
-     VkDevice                                    device,
-     VkCommandPool                               commandPool,
-     VkCommandBuffer                             commandBuffer,
-     VkCommandPoolMemoryConsumption*             pConsumption);
- VKAPI_ATTR VkResult VKAPI_CALL vkGetFaultData(
-     VkDevice                                    device,
-     VkFaultQueryBehavior                        faultQueryBehavior,
-     VkBool32*                                   pUnrecordedFaults,
-     uint32_t*                                   pFaultCount,
-     VkFaultData*                                pFaults);
- #endif
 +VKAPI_ATTR VkResult VKAPI_CALL vkCreateFence(
 +    VkDevice                                    device,
 +    const VkFenceCreateInfo*                    pCreateInfo,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkFence*                                    pFence);
 +
 +VKAPI_ATTR void VKAPI_CALL vkDestroyFence(
 +    VkDevice                                    device,
 +    VkFence                                     fence,
 +    const VkAllocationCallbacks*                pAllocator);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkResetFences(
 +    VkDevice                                    device,
 +    uint32_t                                    fenceCount,
 +    const VkFence*                              pFences);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceStatus(
 +    VkDevice                                    device,
 +    VkFence                                     fence);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkWaitForFences(
 +    VkDevice                                    device,
 +    uint32_t                                    fenceCount,
 +    const VkFence*                              pFences,
 +    VkBool32                                    waitAll,
 +    uint64_t                                    timeout);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkCreateSemaphore(
 +    VkDevice                                    device,
 +    const VkSemaphoreCreateInfo*                pCreateInfo,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkSemaphore*                                pSemaphore);
 +
 +VKAPI_ATTR void VKAPI_CALL vkDestroySemaphore(
 +    VkDevice                                    device,
 +    VkSemaphore                                 semaphore,
 +    const VkAllocationCallbacks*                pAllocator);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkCreateEvent(
 +    VkDevice                                    device,
 +    const VkEventCreateInfo*                    pCreateInfo,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkEvent*                                    pEvent);
 +
 +VKAPI_ATTR void VKAPI_CALL vkDestroyEvent(
 +    VkDevice                                    device,
 +    VkEvent                                     event,
 +    const VkAllocationCallbacks*                pAllocator);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetEventStatus(
 +    VkDevice                                    device,
 +    VkEvent                                     event);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkSetEvent(
 +    VkDevice                                    device,
 +    VkEvent                                     event);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkResetEvent(
 +    VkDevice                                    device,
 +    VkEvent                                     event);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkCreateQueryPool(
 +    VkDevice                                    device,
 +    const VkQueryPoolCreateInfo*                pCreateInfo,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkQueryPool*                                pQueryPool);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetQueryPoolResults(
 +    VkDevice                                    device,
 +    VkQueryPool                                 queryPool,
 +    uint32_t                                    firstQuery,
 +    uint32_t                                    queryCount,
 +    size_t                                      dataSize,
 +    void*                                       pData,
 +    VkDeviceSize                                stride,
 +    VkQueryResultFlags                          flags);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkCreateBuffer(
 +    VkDevice                                    device,
 +    const VkBufferCreateInfo*                   pCreateInfo,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkBuffer*                                   pBuffer);
 +
 +VKAPI_ATTR void VKAPI_CALL vkDestroyBuffer(
 +    VkDevice                                    device,
 +    VkBuffer                                    buffer,
 +    const VkAllocationCallbacks*                pAllocator);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkCreateBufferView(
 +    VkDevice                                    device,
 +    const VkBufferViewCreateInfo*               pCreateInfo,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkBufferView*                               pView);
 +
 +VKAPI_ATTR void VKAPI_CALL vkDestroyBufferView(
 +    VkDevice                                    device,
 +    VkBufferView                                bufferView,
 +    const VkAllocationCallbacks*                pAllocator);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkCreateImage(
 +    VkDevice                                    device,
 +    const VkImageCreateInfo*                    pCreateInfo,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkImage*                                    pImage);
 +
 +VKAPI_ATTR void VKAPI_CALL vkDestroyImage(
 +    VkDevice                                    device,
 +    VkImage                                     image,
 +    const VkAllocationCallbacks*                pAllocator);
 +
 +VKAPI_ATTR void VKAPI_CALL vkGetImageSubresourceLayout(
 +    VkDevice                                    device,
 +    VkImage                                     image,
 +    const VkImageSubresource*                   pSubresource,
 +    VkSubresourceLayout*                        pLayout);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkCreateImageView(
 +    VkDevice                                    device,
 +    const VkImageViewCreateInfo*                pCreateInfo,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkImageView*                                pView);
 +
 +VKAPI_ATTR void VKAPI_CALL vkDestroyImageView(
 +    VkDevice                                    device,
 +    VkImageView                                 imageView,
 +    const VkAllocationCallbacks*                pAllocator);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkCreatePipelineCache(
 +    VkDevice                                    device,
 +    const VkPipelineCacheCreateInfo*            pCreateInfo,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkPipelineCache*                            pPipelineCache);
 +
 +VKAPI_ATTR void VKAPI_CALL vkDestroyPipelineCache(
 +    VkDevice                                    device,
 +    VkPipelineCache                             pipelineCache,
 +    const VkAllocationCallbacks*                pAllocator);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkCreateGraphicsPipelines(
 +    VkDevice                                    device,
 +    VkPipelineCache                             pipelineCache,
 +    uint32_t                                    createInfoCount,
 +    const VkGraphicsPipelineCreateInfo*         pCreateInfos,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkPipeline*                                 pPipelines);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkCreateComputePipelines(
 +    VkDevice                                    device,
 +    VkPipelineCache                             pipelineCache,
 +    uint32_t                                    createInfoCount,
 +    const VkComputePipelineCreateInfo*          pCreateInfos,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkPipeline*                                 pPipelines);
 +
 +VKAPI_ATTR void VKAPI_CALL vkDestroyPipeline(
 +    VkDevice                                    device,
 +    VkPipeline                                  pipeline,
 +    const VkAllocationCallbacks*                pAllocator);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkCreatePipelineLayout(
 +    VkDevice                                    device,
 +    const VkPipelineLayoutCreateInfo*           pCreateInfo,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkPipelineLayout*                           pPipelineLayout);
 +
 +VKAPI_ATTR void VKAPI_CALL vkDestroyPipelineLayout(
 +    VkDevice                                    device,
 +    VkPipelineLayout                            pipelineLayout,
 +    const VkAllocationCallbacks*                pAllocator);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkCreateSampler(
 +    VkDevice                                    device,
 +    const VkSamplerCreateInfo*                  pCreateInfo,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkSampler*                                  pSampler);
 +
 +VKAPI_ATTR void VKAPI_CALL vkDestroySampler(
 +    VkDevice                                    device,
 +    VkSampler                                   sampler,
 +    const VkAllocationCallbacks*                pAllocator);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorSetLayout(
 +    VkDevice                                    device,
 +    const VkDescriptorSetLayoutCreateInfo*      pCreateInfo,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkDescriptorSetLayout*                      pSetLayout);
 +
 +VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorSetLayout(
 +    VkDevice                                    device,
 +    VkDescriptorSetLayout                       descriptorSetLayout,
 +    const VkAllocationCallbacks*                pAllocator);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorPool(
 +    VkDevice                                    device,
 +    const VkDescriptorPoolCreateInfo*           pCreateInfo,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkDescriptorPool*                           pDescriptorPool);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkResetDescriptorPool(
 +    VkDevice                                    device,
 +    VkDescriptorPool                            descriptorPool,
 +    VkDescriptorPoolResetFlags                  flags);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkAllocateDescriptorSets(
 +    VkDevice                                    device,
 +    const VkDescriptorSetAllocateInfo*          pAllocateInfo,
 +    VkDescriptorSet*                            pDescriptorSets);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkFreeDescriptorSets(
 +    VkDevice                                    device,
 +    VkDescriptorPool                            descriptorPool,
 +    uint32_t                                    descriptorSetCount,
 +    const VkDescriptorSet*                      pDescriptorSets);
 +
 +VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSets(
 +    VkDevice                                    device,
 +    uint32_t                                    descriptorWriteCount,
 +    const VkWriteDescriptorSet*                 pDescriptorWrites,
 +    uint32_t                                    descriptorCopyCount,
 +    const VkCopyDescriptorSet*                  pDescriptorCopies);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkCreateFramebuffer(
 +    VkDevice                                    device,
 +    const VkFramebufferCreateInfo*              pCreateInfo,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkFramebuffer*                              pFramebuffer);
 +
 +VKAPI_ATTR void VKAPI_CALL vkDestroyFramebuffer(
 +    VkDevice                                    device,
 +    VkFramebuffer                               framebuffer,
 +    const VkAllocationCallbacks*                pAllocator);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass(
 +    VkDevice                                    device,
 +    const VkRenderPassCreateInfo*               pCreateInfo,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkRenderPass*                               pRenderPass);
 +
 +VKAPI_ATTR void VKAPI_CALL vkDestroyRenderPass(
 +    VkDevice                                    device,
 +    VkRenderPass                                renderPass,
 +    const VkAllocationCallbacks*                pAllocator);
 +
 +VKAPI_ATTR void VKAPI_CALL vkGetRenderAreaGranularity(
 +    VkDevice                                    device,
 +    VkRenderPass                                renderPass,
 +    VkExtent2D*                                 pGranularity);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkCreateCommandPool(
 +    VkDevice                                    device,
 +    const VkCommandPoolCreateInfo*              pCreateInfo,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkCommandPool*                              pCommandPool);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkResetCommandPool(
 +    VkDevice                                    device,
 +    VkCommandPool                               commandPool,
 +    VkCommandPoolResetFlags                     flags);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkAllocateCommandBuffers(
 +    VkDevice                                    device,
 +    const VkCommandBufferAllocateInfo*          pAllocateInfo,
 +    VkCommandBuffer*                            pCommandBuffers);
 +
 +VKAPI_ATTR void VKAPI_CALL vkFreeCommandBuffers(
 +    VkDevice                                    device,
 +    VkCommandPool                               commandPool,
 +    uint32_t                                    commandBufferCount,
 +    const VkCommandBuffer*                      pCommandBuffers);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkBeginCommandBuffer(
 +    VkCommandBuffer                             commandBuffer,
 +    const VkCommandBufferBeginInfo*             pBeginInfo);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkEndCommandBuffer(
 +    VkCommandBuffer                             commandBuffer);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkResetCommandBuffer(
 +    VkCommandBuffer                             commandBuffer,
 +    VkCommandBufferResetFlags                   flags);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdBindPipeline(
 +    VkCommandBuffer                             commandBuffer,
 +    VkPipelineBindPoint                         pipelineBindPoint,
 +    VkPipeline                                  pipeline);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdSetViewport(
 +    VkCommandBuffer                             commandBuffer,
 +    uint32_t                                    firstViewport,
 +    uint32_t                                    viewportCount,
 +    const VkViewport*                           pViewports);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdSetScissor(
 +    VkCommandBuffer                             commandBuffer,
 +    uint32_t                                    firstScissor,
 +    uint32_t                                    scissorCount,
 +    const VkRect2D*                             pScissors);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdSetLineWidth(
 +    VkCommandBuffer                             commandBuffer,
 +    float                                       lineWidth);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBias(
 +    VkCommandBuffer                             commandBuffer,
 +    float                                       depthBiasConstantFactor,
 +    float                                       depthBiasClamp,
 +    float                                       depthBiasSlopeFactor);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdSetBlendConstants(
 +    VkCommandBuffer                             commandBuffer,
 +    const float                                 blendConstants[4]);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBounds(
 +    VkCommandBuffer                             commandBuffer,
 +    float                                       minDepthBounds,
 +    float                                       maxDepthBounds);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilCompareMask(
 +    VkCommandBuffer                             commandBuffer,
 +    VkStencilFaceFlags                          faceMask,
 +    uint32_t                                    compareMask);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilWriteMask(
 +    VkCommandBuffer                             commandBuffer,
 +    VkStencilFaceFlags                          faceMask,
 +    uint32_t                                    writeMask);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilReference(
 +    VkCommandBuffer                             commandBuffer,
 +    VkStencilFaceFlags                          faceMask,
 +    uint32_t                                    reference);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdBindDescriptorSets(
 +    VkCommandBuffer                             commandBuffer,
 +    VkPipelineBindPoint                         pipelineBindPoint,
 +    VkPipelineLayout                            layout,
 +    uint32_t                                    firstSet,
 +    uint32_t                                    descriptorSetCount,
 +    const VkDescriptorSet*                      pDescriptorSets,
 +    uint32_t                                    dynamicOffsetCount,
 +    const uint32_t*                             pDynamicOffsets);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdBindIndexBuffer(
 +    VkCommandBuffer                             commandBuffer,
 +    VkBuffer                                    buffer,
 +    VkDeviceSize                                offset,
 +    VkIndexType                                 indexType);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdBindVertexBuffers(
 +    VkCommandBuffer                             commandBuffer,
 +    uint32_t                                    firstBinding,
 +    uint32_t                                    bindingCount,
 +    const VkBuffer*                             pBuffers,
 +    const VkDeviceSize*                         pOffsets);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdDraw(
 +    VkCommandBuffer                             commandBuffer,
 +    uint32_t                                    vertexCount,
 +    uint32_t                                    instanceCount,
 +    uint32_t                                    firstVertex,
 +    uint32_t                                    firstInstance);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexed(
 +    VkCommandBuffer                             commandBuffer,
 +    uint32_t                                    indexCount,
 +    uint32_t                                    instanceCount,
 +    uint32_t                                    firstIndex,
 +    int32_t                                     vertexOffset,
 +    uint32_t                                    firstInstance);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirect(
 +    VkCommandBuffer                             commandBuffer,
 +    VkBuffer                                    buffer,
 +    VkDeviceSize                                offset,
 +    uint32_t                                    drawCount,
 +    uint32_t                                    stride);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirect(
 +    VkCommandBuffer                             commandBuffer,
 +    VkBuffer                                    buffer,
 +    VkDeviceSize                                offset,
 +    uint32_t                                    drawCount,
 +    uint32_t                                    stride);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdDispatch(
 +    VkCommandBuffer                             commandBuffer,
 +    uint32_t                                    groupCountX,
 +    uint32_t                                    groupCountY,
 +    uint32_t                                    groupCountZ);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdDispatchIndirect(
 +    VkCommandBuffer                             commandBuffer,
 +    VkBuffer                                    buffer,
 +    VkDeviceSize                                offset);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdCopyBuffer(
 +    VkCommandBuffer                             commandBuffer,
 +    VkBuffer                                    srcBuffer,
 +    VkBuffer                                    dstBuffer,
 +    uint32_t                                    regionCount,
 +    const VkBufferCopy*                         pRegions);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdCopyImage(
 +    VkCommandBuffer                             commandBuffer,
 +    VkImage                                     srcImage,
 +    VkImageLayout                               srcImageLayout,
 +    VkImage                                     dstImage,
 +    VkImageLayout                               dstImageLayout,
 +    uint32_t                                    regionCount,
 +    const VkImageCopy*                          pRegions);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdBlitImage(
 +    VkCommandBuffer                             commandBuffer,
 +    VkImage                                     srcImage,
 +    VkImageLayout                               srcImageLayout,
 +    VkImage                                     dstImage,
 +    VkImageLayout                               dstImageLayout,
 +    uint32_t                                    regionCount,
 +    const VkImageBlit*                          pRegions,
 +    VkFilter                                    filter);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdCopyBufferToImage(
 +    VkCommandBuffer                             commandBuffer,
 +    VkBuffer                                    srcBuffer,
 +    VkImage                                     dstImage,
 +    VkImageLayout                               dstImageLayout,
 +    uint32_t                                    regionCount,
 +    const VkBufferImageCopy*                    pRegions);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdCopyImageToBuffer(
 +    VkCommandBuffer                             commandBuffer,
 +    VkImage                                     srcImage,
 +    VkImageLayout                               srcImageLayout,
 +    VkBuffer                                    dstBuffer,
 +    uint32_t                                    regionCount,
 +    const VkBufferImageCopy*                    pRegions);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdUpdateBuffer(
 +    VkCommandBuffer                             commandBuffer,
 +    VkBuffer                                    dstBuffer,
 +    VkDeviceSize                                dstOffset,
 +    VkDeviceSize                                dataSize,
 +    const void*                                 pData);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdFillBuffer(
 +    VkCommandBuffer                             commandBuffer,
 +    VkBuffer                                    dstBuffer,
 +    VkDeviceSize                                dstOffset,
 +    VkDeviceSize                                size,
 +    uint32_t                                    data);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdClearColorImage(
 +    VkCommandBuffer                             commandBuffer,
 +    VkImage                                     image,
 +    VkImageLayout                               imageLayout,
 +    const VkClearColorValue*                    pColor,
 +    uint32_t                                    rangeCount,
 +    const VkImageSubresourceRange*              pRanges);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdClearDepthStencilImage(
 +    VkCommandBuffer                             commandBuffer,
 +    VkImage                                     image,
 +    VkImageLayout                               imageLayout,
 +    const VkClearDepthStencilValue*             pDepthStencil,
 +    uint32_t                                    rangeCount,
 +    const VkImageSubresourceRange*              pRanges);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdClearAttachments(
 +    VkCommandBuffer                             commandBuffer,
 +    uint32_t                                    attachmentCount,
 +    const VkClearAttachment*                    pAttachments,
 +    uint32_t                                    rectCount,
 +    const VkClearRect*                          pRects);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdResolveImage(
 +    VkCommandBuffer                             commandBuffer,
 +    VkImage                                     srcImage,
 +    VkImageLayout                               srcImageLayout,
 +    VkImage                                     dstImage,
 +    VkImageLayout                               dstImageLayout,
 +    uint32_t                                    regionCount,
 +    const VkImageResolve*                       pRegions);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdSetEvent(
 +    VkCommandBuffer                             commandBuffer,
 +    VkEvent                                     event,
 +    VkPipelineStageFlags                        stageMask);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdResetEvent(
 +    VkCommandBuffer                             commandBuffer,
 +    VkEvent                                     event,
 +    VkPipelineStageFlags                        stageMask);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdWaitEvents(
 +    VkCommandBuffer                             commandBuffer,
 +    uint32_t                                    eventCount,
 +    const VkEvent*                              pEvents,
 +    VkPipelineStageFlags                        srcStageMask,
 +    VkPipelineStageFlags                        dstStageMask,
 +    uint32_t                                    memoryBarrierCount,
 +    const VkMemoryBarrier*                      pMemoryBarriers,
 +    uint32_t                                    bufferMemoryBarrierCount,
 +    const VkBufferMemoryBarrier*                pBufferMemoryBarriers,
 +    uint32_t                                    imageMemoryBarrierCount,
 +    const VkImageMemoryBarrier*                 pImageMemoryBarriers);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdPipelineBarrier(
 +    VkCommandBuffer                             commandBuffer,
 +    VkPipelineStageFlags                        srcStageMask,
 +    VkPipelineStageFlags                        dstStageMask,
 +    VkDependencyFlags                           dependencyFlags,
 +    uint32_t                                    memoryBarrierCount,
 +    const VkMemoryBarrier*                      pMemoryBarriers,
 +    uint32_t                                    bufferMemoryBarrierCount,
 +    const VkBufferMemoryBarrier*                pBufferMemoryBarriers,
 +    uint32_t                                    imageMemoryBarrierCount,
 +    const VkImageMemoryBarrier*                 pImageMemoryBarriers);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdBeginQuery(
 +    VkCommandBuffer                             commandBuffer,
 +    VkQueryPool                                 queryPool,
 +    uint32_t                                    query,
 +    VkQueryControlFlags                         flags);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdEndQuery(
 +    VkCommandBuffer                             commandBuffer,
 +    VkQueryPool                                 queryPool,
 +    uint32_t                                    query);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdResetQueryPool(
 +    VkCommandBuffer                             commandBuffer,
 +    VkQueryPool                                 queryPool,
 +    uint32_t                                    firstQuery,
 +    uint32_t                                    queryCount);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdWriteTimestamp(
 +    VkCommandBuffer                             commandBuffer,
 +    VkPipelineStageFlagBits                     pipelineStage,
 +    VkQueryPool                                 queryPool,
 +    uint32_t                                    query);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdCopyQueryPoolResults(
 +    VkCommandBuffer                             commandBuffer,
 +    VkQueryPool                                 queryPool,
 +    uint32_t                                    firstQuery,
 +    uint32_t                                    queryCount,
 +    VkBuffer                                    dstBuffer,
 +    VkDeviceSize                                dstOffset,
 +    VkDeviceSize                                stride,
 +    VkQueryResultFlags                          flags);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdPushConstants(
 +    VkCommandBuffer                             commandBuffer,
 +    VkPipelineLayout                            layout,
 +    VkShaderStageFlags                          stageFlags,
 +    uint32_t                                    offset,
 +    uint32_t                                    size,
 +    const void*                                 pValues);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass(
 +    VkCommandBuffer                             commandBuffer,
 +    const VkRenderPassBeginInfo*                pRenderPassBegin,
 +    VkSubpassContents                           contents);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdNextSubpass(
 +    VkCommandBuffer                             commandBuffer,
 +    VkSubpassContents                           contents);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass(
 +    VkCommandBuffer                             commandBuffer);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdExecuteCommands(
 +    VkCommandBuffer                             commandBuffer,
 +    uint32_t                                    commandBufferCount,
 +    const VkCommandBuffer*                      pCommandBuffers);
 +#endif
 +
 +
- #define VK_API_VERSION_1_1 VK_MAKE_VERSION(1, 1, 0)// Patch version should always be set to 0
 +#define VK_VERSION_1_1 1
 +// Vulkan 1.1 version number
- #define VK_MAX_DEVICE_GROUP_SIZE          32
- #define VK_LUID_SIZE                      8
- #define VK_QUEUE_FAMILY_EXTERNAL          (~0U-1)
++#define VK_API_VERSION_1_1 VK_MAKE_API_VERSION(0, 1, 1, 0)// Patch version should always be set to 0
 +
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSamplerYcbcrConversion)
- typedef struct VkDeviceGroupBindSparseInfo {
-     VkStructureType    sType;
-     const void*        pNext;
-     uint32_t           resourceDeviceIndex;
-     uint32_t           memoryDeviceIndex;
- } VkDeviceGroupBindSparseInfo;
++#define VK_MAX_DEVICE_GROUP_SIZE          32U
++#define VK_LUID_SIZE                      8U
++#define VK_QUEUE_FAMILY_EXTERNAL          (~1U)
 +
 +typedef enum VkPointClippingBehavior {
 +    VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES = 0,
 +    VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY = 1,
 +    VK_POINT_CLIPPING_BEHAVIOR_MAX_ENUM = 0x7FFFFFFF
 +} VkPointClippingBehavior;
 +
 +typedef enum VkTessellationDomainOrigin {
 +    VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT = 0,
 +    VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT = 1,
 +    VK_TESSELLATION_DOMAIN_ORIGIN_MAX_ENUM = 0x7FFFFFFF
 +} VkTessellationDomainOrigin;
 +
 +typedef enum VkSamplerYcbcrModelConversion {
 +    VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY = 0,
 +    VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY = 1,
 +    VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709 = 2,
 +    VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601 = 3,
 +    VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 = 4,
 +    VK_SAMPLER_YCBCR_MODEL_CONVERSION_MAX_ENUM = 0x7FFFFFFF
 +} VkSamplerYcbcrModelConversion;
 +
 +typedef enum VkSamplerYcbcrRange {
 +    VK_SAMPLER_YCBCR_RANGE_ITU_FULL = 0,
 +    VK_SAMPLER_YCBCR_RANGE_ITU_NARROW = 1,
 +    VK_SAMPLER_YCBCR_RANGE_MAX_ENUM = 0x7FFFFFFF
 +} VkSamplerYcbcrRange;
 +
 +typedef enum VkChromaLocation {
 +    VK_CHROMA_LOCATION_COSITED_EVEN = 0,
 +    VK_CHROMA_LOCATION_MIDPOINT = 1,
 +    VK_CHROMA_LOCATION_MAX_ENUM = 0x7FFFFFFF
 +} VkChromaLocation;
 +
 +typedef enum VkSubgroupFeatureFlagBits {
 +    VK_SUBGROUP_FEATURE_BASIC_BIT = 0x00000001,
 +    VK_SUBGROUP_FEATURE_VOTE_BIT = 0x00000002,
 +    VK_SUBGROUP_FEATURE_ARITHMETIC_BIT = 0x00000004,
 +    VK_SUBGROUP_FEATURE_BALLOT_BIT = 0x00000008,
 +    VK_SUBGROUP_FEATURE_SHUFFLE_BIT = 0x00000010,
 +    VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 0x00000020,
 +    VK_SUBGROUP_FEATURE_CLUSTERED_BIT = 0x00000040,
 +    VK_SUBGROUP_FEATURE_QUAD_BIT = 0x00000080,
 +    VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkSubgroupFeatureFlagBits;
 +typedef VkFlags VkSubgroupFeatureFlags;
 +
 +typedef enum VkPeerMemoryFeatureFlagBits {
 +    VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT = 0x00000001,
 +    VK_PEER_MEMORY_FEATURE_COPY_DST_BIT = 0x00000002,
 +    VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT = 0x00000004,
 +    VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT = 0x00000008,
 +    VK_PEER_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkPeerMemoryFeatureFlagBits;
 +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_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkMemoryAllocateFlagBits;
 +typedef VkFlags VkMemoryAllocateFlags;
 +
 +typedef enum VkExternalMemoryHandleTypeFlagBits {
 +    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT = 0x00000001,
 +    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT = 0x00000002,
 +    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 0x00000004,
 +    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT = 0x00000008,
 +    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT = 0x00000010,
 +    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT = 0x00000020,
 +    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT = 0x00000040,
 +    VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT = 0x00000200,
 +    VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT = 0x00000080,
 +    VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT = 0x00000100,
 +    VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkExternalMemoryHandleTypeFlagBits;
 +typedef VkFlags VkExternalMemoryHandleTypeFlags;
 +
 +typedef enum VkExternalMemoryFeatureFlagBits {
 +    VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT = 0x00000001,
 +    VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT = 0x00000002,
 +    VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT = 0x00000004,
 +    VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkExternalMemoryFeatureFlagBits;
 +typedef VkFlags VkExternalMemoryFeatureFlags;
 +
 +typedef enum VkExternalFenceHandleTypeFlagBits {
 +    VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT = 0x00000001,
 +    VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 0x00000002,
 +    VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 0x00000004,
 +    VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT = 0x00000008,
 +    VK_EXTERNAL_FENCE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkExternalFenceHandleTypeFlagBits;
 +typedef VkFlags VkExternalFenceHandleTypeFlags;
 +
 +typedef enum VkExternalFenceFeatureFlagBits {
 +    VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT = 0x00000001,
 +    VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT = 0x00000002,
 +    VK_EXTERNAL_FENCE_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkExternalFenceFeatureFlagBits;
 +typedef VkFlags VkExternalFenceFeatureFlags;
 +
 +typedef enum VkFenceImportFlagBits {
 +    VK_FENCE_IMPORT_TEMPORARY_BIT = 0x00000001,
 +    VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkFenceImportFlagBits;
 +typedef VkFlags VkFenceImportFlags;
 +
 +typedef enum VkSemaphoreImportFlagBits {
 +    VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = 0x00000001,
 +    VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkSemaphoreImportFlagBits;
 +typedef VkFlags VkSemaphoreImportFlags;
 +
 +typedef enum VkExternalSemaphoreHandleTypeFlagBits {
 +    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT = 0x00000001,
 +    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 0x00000002,
 +    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 0x00000004,
 +    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT = 0x00000008,
 +    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT = 0x00000010,
 +    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE_BIT = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT,
 +    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkExternalSemaphoreHandleTypeFlagBits;
 +typedef VkFlags VkExternalSemaphoreHandleTypeFlags;
 +
 +typedef enum VkExternalSemaphoreFeatureFlagBits {
 +    VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT = 0x00000001,
 +    VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT = 0x00000002,
 +    VK_EXTERNAL_SEMAPHORE_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkExternalSemaphoreFeatureFlagBits;
 +typedef VkFlags VkExternalSemaphoreFeatureFlags;
 +typedef struct VkPhysicalDeviceSubgroupProperties {
 +    VkStructureType           sType;
 +    void*                     pNext;
 +    uint32_t                  subgroupSize;
 +    VkShaderStageFlags        supportedStages;
 +    VkSubgroupFeatureFlags    supportedOperations;
 +    VkBool32                  quadOperationsInAllStages;
 +} VkPhysicalDeviceSubgroupProperties;
 +
 +typedef struct VkBindBufferMemoryInfo {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    VkBuffer           buffer;
 +    VkDeviceMemory     memory;
 +    VkDeviceSize       memoryOffset;
 +} VkBindBufferMemoryInfo;
 +
 +typedef struct VkBindImageMemoryInfo {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    VkImage            image;
 +    VkDeviceMemory     memory;
 +    VkDeviceSize       memoryOffset;
 +} VkBindImageMemoryInfo;
 +
 +typedef struct VkPhysicalDevice16BitStorageFeatures {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           storageBuffer16BitAccess;
 +    VkBool32           uniformAndStorageBuffer16BitAccess;
 +    VkBool32           storagePushConstant16;
 +    VkBool32           storageInputOutput16;
 +} VkPhysicalDevice16BitStorageFeatures;
 +
 +typedef struct VkMemoryDedicatedRequirements {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           prefersDedicatedAllocation;
 +    VkBool32           requiresDedicatedAllocation;
 +} VkMemoryDedicatedRequirements;
 +
 +typedef struct VkMemoryDedicatedAllocateInfo {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    VkImage            image;
 +    VkBuffer           buffer;
 +} VkMemoryDedicatedAllocateInfo;
 +
 +typedef struct VkMemoryAllocateFlagsInfo {
 +    VkStructureType          sType;
 +    const void*              pNext;
 +    VkMemoryAllocateFlags    flags;
 +    uint32_t                 deviceMask;
 +} VkMemoryAllocateFlagsInfo;
 +
 +typedef struct VkDeviceGroupRenderPassBeginInfo {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    uint32_t           deviceMask;
 +    uint32_t           deviceRenderAreaCount;
 +    const VkRect2D*    pDeviceRenderAreas;
 +} VkDeviceGroupRenderPassBeginInfo;
 +
 +typedef struct VkDeviceGroupCommandBufferBeginInfo {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    uint32_t           deviceMask;
 +} VkDeviceGroupCommandBufferBeginInfo;
 +
 +typedef struct VkDeviceGroupSubmitInfo {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    uint32_t           waitSemaphoreCount;
 +    const uint32_t*    pWaitSemaphoreDeviceIndices;
 +    uint32_t           commandBufferCount;
 +    const uint32_t*    pCommandBufferDeviceMasks;
 +    uint32_t           signalSemaphoreCount;
 +    const uint32_t*    pSignalSemaphoreDeviceIndices;
 +} VkDeviceGroupSubmitInfo;
 +
- typedef struct VkImageSparseMemoryRequirementsInfo2 {
-     VkStructureType    sType;
-     const void*        pNext;
-     VkImage            image;
- } VkImageSparseMemoryRequirementsInfo2;
 +typedef struct VkBindBufferMemoryDeviceGroupInfo {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    uint32_t           deviceIndexCount;
 +    const uint32_t*    pDeviceIndices;
 +} VkBindBufferMemoryDeviceGroupInfo;
 +
 +typedef struct VkBindImageMemoryDeviceGroupInfo {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    uint32_t           deviceIndexCount;
 +    const uint32_t*    pDeviceIndices;
 +    uint32_t           splitInstanceBindRegionCount;
 +    const VkRect2D*    pSplitInstanceBindRegions;
 +} VkBindImageMemoryDeviceGroupInfo;
 +
 +typedef struct VkPhysicalDeviceGroupProperties {
 +    VkStructureType     sType;
 +    void*               pNext;
 +    uint32_t            physicalDeviceCount;
 +    VkPhysicalDevice    physicalDevices[VK_MAX_DEVICE_GROUP_SIZE];
 +    VkBool32            subsetAllocation;
 +} VkPhysicalDeviceGroupProperties;
 +
 +typedef struct VkDeviceGroupDeviceCreateInfo {
 +    VkStructureType            sType;
 +    const void*                pNext;
 +    uint32_t                   physicalDeviceCount;
 +    const VkPhysicalDevice*    pPhysicalDevices;
 +} VkDeviceGroupDeviceCreateInfo;
 +
 +typedef struct VkBufferMemoryRequirementsInfo2 {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    VkBuffer           buffer;
 +} VkBufferMemoryRequirementsInfo2;
 +
 +typedef struct VkImageMemoryRequirementsInfo2 {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    VkImage            image;
 +} VkImageMemoryRequirementsInfo2;
 +
- typedef struct VkSparseImageMemoryRequirements2 {
-     VkStructureType                    sType;
-     void*                              pNext;
-     VkSparseImageMemoryRequirements    memoryRequirements;
- } VkSparseImageMemoryRequirements2;
 +typedef struct VkMemoryRequirements2 {
 +    VkStructureType         sType;
 +    void*                   pNext;
 +    VkMemoryRequirements    memoryRequirements;
 +} VkMemoryRequirements2;
 +
- typedef struct VkSparseImageFormatProperties2 {
-     VkStructureType                  sType;
-     void*                            pNext;
-     VkSparseImageFormatProperties    properties;
- } VkSparseImageFormatProperties2;
- typedef struct VkPhysicalDeviceSparseImageFormatInfo2 {
-     VkStructureType          sType;
-     const void*              pNext;
-     VkFormat                 format;
-     VkImageType              type;
-     VkSampleCountFlagBits    samples;
-     VkImageUsageFlags        usage;
-     VkImageTiling            tiling;
- } VkPhysicalDeviceSparseImageFormatInfo2;
 +typedef struct VkPhysicalDeviceFeatures2 {
 +    VkStructureType             sType;
 +    void*                       pNext;
 +    VkPhysicalDeviceFeatures    features;
 +} VkPhysicalDeviceFeatures2;
 +
 +typedef struct VkPhysicalDeviceProperties2 {
 +    VkStructureType               sType;
 +    void*                         pNext;
 +    VkPhysicalDeviceProperties    properties;
 +} VkPhysicalDeviceProperties2;
 +
 +typedef struct VkFormatProperties2 {
 +    VkStructureType       sType;
 +    void*                 pNext;
 +    VkFormatProperties    formatProperties;
 +} VkFormatProperties2;
 +
 +typedef struct VkImageFormatProperties2 {
 +    VkStructureType            sType;
 +    void*                      pNext;
 +    VkImageFormatProperties    imageFormatProperties;
 +} VkImageFormatProperties2;
 +
 +typedef struct VkPhysicalDeviceImageFormatInfo2 {
 +    VkStructureType       sType;
 +    const void*           pNext;
 +    VkFormat              format;
 +    VkImageType           type;
 +    VkImageTiling         tiling;
 +    VkImageUsageFlags     usage;
 +    VkImageCreateFlags    flags;
 +} VkPhysicalDeviceImageFormatInfo2;
 +
 +typedef struct VkQueueFamilyProperties2 {
 +    VkStructureType            sType;
 +    void*                      pNext;
 +    VkQueueFamilyProperties    queueFamilyProperties;
 +} VkQueueFamilyProperties2;
 +
 +typedef struct VkPhysicalDeviceMemoryProperties2 {
 +    VkStructureType                     sType;
 +    void*                               pNext;
 +    VkPhysicalDeviceMemoryProperties    memoryProperties;
 +} VkPhysicalDeviceMemoryProperties2;
 +
- typedef void (VKAPI_PTR *PFN_vkGetImageSparseMemoryRequirements2)(VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements);
 +typedef struct VkPhysicalDevicePointClippingProperties {
 +    VkStructureType            sType;
 +    void*                      pNext;
 +    VkPointClippingBehavior    pointClippingBehavior;
 +} VkPhysicalDevicePointClippingProperties;
 +
 +typedef struct VkInputAttachmentAspectReference {
 +    uint32_t              subpass;
 +    uint32_t              inputAttachmentIndex;
 +    VkImageAspectFlags    aspectMask;
 +} VkInputAttachmentAspectReference;
 +
 +typedef struct VkRenderPassInputAttachmentAspectCreateInfo {
 +    VkStructureType                            sType;
 +    const void*                                pNext;
 +    uint32_t                                   aspectReferenceCount;
 +    const VkInputAttachmentAspectReference*    pAspectReferences;
 +} VkRenderPassInputAttachmentAspectCreateInfo;
 +
 +typedef struct VkImageViewUsageCreateInfo {
 +    VkStructureType      sType;
 +    const void*          pNext;
 +    VkImageUsageFlags    usage;
 +} VkImageViewUsageCreateInfo;
 +
 +typedef struct VkPipelineTessellationDomainOriginStateCreateInfo {
 +    VkStructureType               sType;
 +    const void*                   pNext;
 +    VkTessellationDomainOrigin    domainOrigin;
 +} VkPipelineTessellationDomainOriginStateCreateInfo;
 +
 +typedef struct VkRenderPassMultiviewCreateInfo {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    uint32_t           subpassCount;
 +    const uint32_t*    pViewMasks;
 +    uint32_t           dependencyCount;
 +    const int32_t*     pViewOffsets;
 +    uint32_t           correlationMaskCount;
 +    const uint32_t*    pCorrelationMasks;
 +} VkRenderPassMultiviewCreateInfo;
 +
 +typedef struct VkPhysicalDeviceMultiviewFeatures {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           multiview;
 +    VkBool32           multiviewGeometryShader;
 +    VkBool32           multiviewTessellationShader;
 +} VkPhysicalDeviceMultiviewFeatures;
 +
 +typedef struct VkPhysicalDeviceMultiviewProperties {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    uint32_t           maxMultiviewViewCount;
 +    uint32_t           maxMultiviewInstanceIndex;
 +} VkPhysicalDeviceMultiviewProperties;
 +
 +typedef struct VkPhysicalDeviceVariablePointersFeatures {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           variablePointersStorageBuffer;
 +    VkBool32           variablePointers;
 +} VkPhysicalDeviceVariablePointersFeatures;
 +
 +typedef VkPhysicalDeviceVariablePointersFeatures VkPhysicalDeviceVariablePointerFeatures;
 +
 +typedef struct VkPhysicalDeviceProtectedMemoryFeatures {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           protectedMemory;
 +} VkPhysicalDeviceProtectedMemoryFeatures;
 +
 +typedef struct VkPhysicalDeviceProtectedMemoryProperties {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           protectedNoFault;
 +} VkPhysicalDeviceProtectedMemoryProperties;
 +
 +typedef struct VkDeviceQueueInfo2 {
 +    VkStructureType             sType;
 +    const void*                 pNext;
 +    VkDeviceQueueCreateFlags    flags;
 +    uint32_t                    queueFamilyIndex;
 +    uint32_t                    queueIndex;
 +} VkDeviceQueueInfo2;
 +
 +typedef struct VkProtectedSubmitInfo {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    VkBool32           protectedSubmit;
 +} VkProtectedSubmitInfo;
 +
 +typedef struct VkSamplerYcbcrConversionCreateInfo {
 +    VkStructureType                  sType;
 +    const void*                      pNext;
 +    VkFormat                         format;
 +    VkSamplerYcbcrModelConversion    ycbcrModel;
 +    VkSamplerYcbcrRange              ycbcrRange;
 +    VkComponentMapping               components;
 +    VkChromaLocation                 xChromaOffset;
 +    VkChromaLocation                 yChromaOffset;
 +    VkFilter                         chromaFilter;
 +    VkBool32                         forceExplicitReconstruction;
 +} VkSamplerYcbcrConversionCreateInfo;
 +
 +typedef struct VkSamplerYcbcrConversionInfo {
 +    VkStructureType             sType;
 +    const void*                 pNext;
 +    VkSamplerYcbcrConversion    conversion;
 +} VkSamplerYcbcrConversionInfo;
 +
 +typedef struct VkBindImagePlaneMemoryInfo {
 +    VkStructureType          sType;
 +    const void*              pNext;
 +    VkImageAspectFlagBits    planeAspect;
 +} VkBindImagePlaneMemoryInfo;
 +
 +typedef struct VkImagePlaneMemoryRequirementsInfo {
 +    VkStructureType          sType;
 +    const void*              pNext;
 +    VkImageAspectFlagBits    planeAspect;
 +} VkImagePlaneMemoryRequirementsInfo;
 +
 +typedef struct VkPhysicalDeviceSamplerYcbcrConversionFeatures {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           samplerYcbcrConversion;
 +} VkPhysicalDeviceSamplerYcbcrConversionFeatures;
 +
 +typedef struct VkSamplerYcbcrConversionImageFormatProperties {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    uint32_t           combinedImageSamplerDescriptorCount;
 +} VkSamplerYcbcrConversionImageFormatProperties;
 +
 +typedef struct VkExternalMemoryProperties {
 +    VkExternalMemoryFeatureFlags       externalMemoryFeatures;
 +    VkExternalMemoryHandleTypeFlags    exportFromImportedHandleTypes;
 +    VkExternalMemoryHandleTypeFlags    compatibleHandleTypes;
 +} VkExternalMemoryProperties;
 +
 +typedef struct VkPhysicalDeviceExternalImageFormatInfo {
 +    VkStructureType                       sType;
 +    const void*                           pNext;
 +    VkExternalMemoryHandleTypeFlagBits    handleType;
 +} VkPhysicalDeviceExternalImageFormatInfo;
 +
 +typedef struct VkExternalImageFormatProperties {
 +    VkStructureType               sType;
 +    void*                         pNext;
 +    VkExternalMemoryProperties    externalMemoryProperties;
 +} VkExternalImageFormatProperties;
 +
 +typedef struct VkPhysicalDeviceExternalBufferInfo {
 +    VkStructureType                       sType;
 +    const void*                           pNext;
 +    VkBufferCreateFlags                   flags;
 +    VkBufferUsageFlags                    usage;
 +    VkExternalMemoryHandleTypeFlagBits    handleType;
 +} VkPhysicalDeviceExternalBufferInfo;
 +
 +typedef struct VkExternalBufferProperties {
 +    VkStructureType               sType;
 +    void*                         pNext;
 +    VkExternalMemoryProperties    externalMemoryProperties;
 +} VkExternalBufferProperties;
 +
 +typedef struct VkPhysicalDeviceIDProperties {
 +    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;
 +} VkPhysicalDeviceIDProperties;
 +
 +typedef struct VkExternalMemoryImageCreateInfo {
 +    VkStructureType                    sType;
 +    const void*                        pNext;
 +    VkExternalMemoryHandleTypeFlags    handleTypes;
 +} VkExternalMemoryImageCreateInfo;
 +
 +typedef struct VkExternalMemoryBufferCreateInfo {
 +    VkStructureType                    sType;
 +    const void*                        pNext;
 +    VkExternalMemoryHandleTypeFlags    handleTypes;
 +} VkExternalMemoryBufferCreateInfo;
 +
 +typedef struct VkExportMemoryAllocateInfo {
 +    VkStructureType                    sType;
 +    const void*                        pNext;
 +    VkExternalMemoryHandleTypeFlags    handleTypes;
 +} VkExportMemoryAllocateInfo;
 +
 +typedef struct VkPhysicalDeviceExternalFenceInfo {
 +    VkStructureType                      sType;
 +    const void*                          pNext;
 +    VkExternalFenceHandleTypeFlagBits    handleType;
 +} VkPhysicalDeviceExternalFenceInfo;
 +
 +typedef struct VkExternalFenceProperties {
 +    VkStructureType                   sType;
 +    void*                             pNext;
 +    VkExternalFenceHandleTypeFlags    exportFromImportedHandleTypes;
 +    VkExternalFenceHandleTypeFlags    compatibleHandleTypes;
 +    VkExternalFenceFeatureFlags       externalFenceFeatures;
 +} VkExternalFenceProperties;
 +
 +typedef struct VkExportFenceCreateInfo {
 +    VkStructureType                   sType;
 +    const void*                       pNext;
 +    VkExternalFenceHandleTypeFlags    handleTypes;
 +} VkExportFenceCreateInfo;
 +
 +typedef struct VkExportSemaphoreCreateInfo {
 +    VkStructureType                       sType;
 +    const void*                           pNext;
 +    VkExternalSemaphoreHandleTypeFlags    handleTypes;
 +} VkExportSemaphoreCreateInfo;
 +
 +typedef struct VkPhysicalDeviceExternalSemaphoreInfo {
 +    VkStructureType                          sType;
 +    const void*                              pNext;
 +    VkExternalSemaphoreHandleTypeFlagBits    handleType;
 +} VkPhysicalDeviceExternalSemaphoreInfo;
 +
 +typedef struct VkExternalSemaphoreProperties {
 +    VkStructureType                       sType;
 +    void*                                 pNext;
 +    VkExternalSemaphoreHandleTypeFlags    exportFromImportedHandleTypes;
 +    VkExternalSemaphoreHandleTypeFlags    compatibleHandleTypes;
 +    VkExternalSemaphoreFeatureFlags       externalSemaphoreFeatures;
 +} VkExternalSemaphoreProperties;
 +
 +typedef struct VkPhysicalDeviceMaintenance3Properties {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    uint32_t           maxPerSetDescriptors;
 +    VkDeviceSize       maxMemoryAllocationSize;
 +} VkPhysicalDeviceMaintenance3Properties;
 +
 +typedef struct VkDescriptorSetLayoutSupport {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           supported;
 +} VkDescriptorSetLayoutSupport;
 +
 +typedef struct VkPhysicalDeviceShaderDrawParametersFeatures {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           shaderDrawParameters;
 +} VkPhysicalDeviceShaderDrawParametersFeatures;
 +
 +typedef VkPhysicalDeviceShaderDrawParametersFeatures VkPhysicalDeviceShaderDrawParameterFeatures;
 +
 +typedef VkResult (VKAPI_PTR *PFN_vkEnumerateInstanceVersion)(uint32_t* pApiVersion);
 +typedef VkResult (VKAPI_PTR *PFN_vkBindBufferMemory2)(VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos);
 +typedef VkResult (VKAPI_PTR *PFN_vkBindImageMemory2)(VkDevice device, uint32_t bindInfoCount, const VkBindImageMemoryInfo* pBindInfos);
 +typedef void (VKAPI_PTR *PFN_vkGetDeviceGroupPeerMemoryFeatures)(VkDevice device, uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures);
 +typedef void (VKAPI_PTR *PFN_vkCmdSetDeviceMask)(VkCommandBuffer commandBuffer, uint32_t deviceMask);
 +typedef void (VKAPI_PTR *PFN_vkCmdDispatchBase)(VkCommandBuffer commandBuffer, uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ);
 +typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDeviceGroups)(VkInstance instance, uint32_t* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties);
 +typedef void (VKAPI_PTR *PFN_vkGetImageMemoryRequirements2)(VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements);
 +typedef void (VKAPI_PTR *PFN_vkGetBufferMemoryRequirements2)(VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements);
- typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceSparseImageFormatProperties2)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, uint32_t* pPropertyCount, VkSparseImageFormatProperties2* pProperties);
 +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFeatures2)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures);
 +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceProperties2)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties);
 +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFormatProperties2)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties);
 +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceImageFormatProperties2)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties);
 +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyProperties2)(VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties);
 +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMemoryProperties2)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties);
- VKAPI_ATTR void VKAPI_CALL vkGetImageSparseMemoryRequirements2(
-     VkDevice                                    device,
-     const VkImageSparseMemoryRequirementsInfo2* pInfo,
-     uint32_t*                                   pSparseMemoryRequirementCount,
-     VkSparseImageMemoryRequirements2*           pSparseMemoryRequirements);
 +typedef void (VKAPI_PTR *PFN_vkGetDeviceQueue2)(VkDevice device, const VkDeviceQueueInfo2* pQueueInfo, VkQueue* pQueue);
 +typedef VkResult (VKAPI_PTR *PFN_vkCreateSamplerYcbcrConversion)(VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion);
 +typedef void (VKAPI_PTR *PFN_vkDestroySamplerYcbcrConversion)(VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator);
 +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalBufferProperties)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties);
 +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalFenceProperties)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties);
 +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalSemaphoreProperties)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties);
 +typedef void (VKAPI_PTR *PFN_vkGetDescriptorSetLayoutSupport)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport);
 +
 +#ifndef VK_NO_PROTOTYPES
 +VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceVersion(
 +    uint32_t*                                   pApiVersion);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkBindBufferMemory2(
 +    VkDevice                                    device,
 +    uint32_t                                    bindInfoCount,
 +    const VkBindBufferMemoryInfo*               pBindInfos);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory2(
 +    VkDevice                                    device,
 +    uint32_t                                    bindInfoCount,
 +    const VkBindImageMemoryInfo*                pBindInfos);
 +
 +VKAPI_ATTR void VKAPI_CALL vkGetDeviceGroupPeerMemoryFeatures(
 +    VkDevice                                    device,
 +    uint32_t                                    heapIndex,
 +    uint32_t                                    localDeviceIndex,
 +    uint32_t                                    remoteDeviceIndex,
 +    VkPeerMemoryFeatureFlags*                   pPeerMemoryFeatures);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdSetDeviceMask(
 +    VkCommandBuffer                             commandBuffer,
 +    uint32_t                                    deviceMask);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdDispatchBase(
 +    VkCommandBuffer                             commandBuffer,
 +    uint32_t                                    baseGroupX,
 +    uint32_t                                    baseGroupY,
 +    uint32_t                                    baseGroupZ,
 +    uint32_t                                    groupCountX,
 +    uint32_t                                    groupCountY,
 +    uint32_t                                    groupCountZ);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDeviceGroups(
 +    VkInstance                                  instance,
 +    uint32_t*                                   pPhysicalDeviceGroupCount,
 +    VkPhysicalDeviceGroupProperties*            pPhysicalDeviceGroupProperties);
 +
 +VKAPI_ATTR void VKAPI_CALL vkGetImageMemoryRequirements2(
 +    VkDevice                                    device,
 +    const VkImageMemoryRequirementsInfo2*       pInfo,
 +    VkMemoryRequirements2*                      pMemoryRequirements);
 +
 +VKAPI_ATTR void VKAPI_CALL vkGetBufferMemoryRequirements2(
 +    VkDevice                                    device,
 +    const VkBufferMemoryRequirementsInfo2*      pInfo,
 +    VkMemoryRequirements2*                      pMemoryRequirements);
 +
- VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties2(
-     VkPhysicalDevice                            physicalDevice,
-     const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
-     uint32_t*                                   pPropertyCount,
-     VkSparseImageFormatProperties2*             pProperties);
 +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFeatures2(
 +    VkPhysicalDevice                            physicalDevice,
 +    VkPhysicalDeviceFeatures2*                  pFeatures);
 +
 +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceProperties2(
 +    VkPhysicalDevice                            physicalDevice,
 +    VkPhysicalDeviceProperties2*                pProperties);
 +
 +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFormatProperties2(
 +    VkPhysicalDevice                            physicalDevice,
 +    VkFormat                                    format,
 +    VkFormatProperties2*                        pFormatProperties);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceImageFormatProperties2(
 +    VkPhysicalDevice                            physicalDevice,
 +    const VkPhysicalDeviceImageFormatInfo2*     pImageFormatInfo,
 +    VkImageFormatProperties2*                   pImageFormatProperties);
 +
 +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyProperties2(
 +    VkPhysicalDevice                            physicalDevice,
 +    uint32_t*                                   pQueueFamilyPropertyCount,
 +    VkQueueFamilyProperties2*                   pQueueFamilyProperties);
 +
 +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties2(
 +    VkPhysicalDevice                            physicalDevice,
 +    VkPhysicalDeviceMemoryProperties2*          pMemoryProperties);
 +
- #define VK_API_VERSION_1_2 VK_MAKE_VERSION(1, 2, 0)// Patch version should always be set to 0
 +VKAPI_ATTR void VKAPI_CALL vkGetDeviceQueue2(
 +    VkDevice                                    device,
 +    const VkDeviceQueueInfo2*                   pQueueInfo,
 +    VkQueue*                                    pQueue);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkCreateSamplerYcbcrConversion(
 +    VkDevice                                    device,
 +    const VkSamplerYcbcrConversionCreateInfo*   pCreateInfo,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkSamplerYcbcrConversion*                   pYcbcrConversion);
 +
 +VKAPI_ATTR void VKAPI_CALL vkDestroySamplerYcbcrConversion(
 +    VkDevice                                    device,
 +    VkSamplerYcbcrConversion                    ycbcrConversion,
 +    const VkAllocationCallbacks*                pAllocator);
 +
 +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalBufferProperties(
 +    VkPhysicalDevice                            physicalDevice,
 +    const VkPhysicalDeviceExternalBufferInfo*   pExternalBufferInfo,
 +    VkExternalBufferProperties*                 pExternalBufferProperties);
 +
 +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalFenceProperties(
 +    VkPhysicalDevice                            physicalDevice,
 +    const VkPhysicalDeviceExternalFenceInfo*    pExternalFenceInfo,
 +    VkExternalFenceProperties*                  pExternalFenceProperties);
 +
 +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalSemaphoreProperties(
 +    VkPhysicalDevice                            physicalDevice,
 +    const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
 +    VkExternalSemaphoreProperties*              pExternalSemaphoreProperties);
 +
 +VKAPI_ATTR void VKAPI_CALL vkGetDescriptorSetLayoutSupport(
 +    VkDevice                                    device,
 +    const VkDescriptorSetLayoutCreateInfo*      pCreateInfo,
 +    VkDescriptorSetLayoutSupport*               pSupport);
 +#endif
 +
 +
 +#define VK_VERSION_1_2 1
 +// Vulkan 1.2 version number
- #define VK_MAX_DRIVER_NAME_SIZE           256
- #define VK_MAX_DRIVER_INFO_SIZE           256
++#define VK_API_VERSION_1_2 VK_MAKE_API_VERSION(0, 1, 2, 0)// Patch version should always be set to 0
 +
- #define VK_KHR_surface 1
- VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR)
- #define VK_KHR_SURFACE_SPEC_VERSION       25
- #define VK_KHR_SURFACE_EXTENSION_NAME     "VK_KHR_surface"
++#define VK_MAX_DRIVER_NAME_SIZE           256U
++#define VK_MAX_DRIVER_INFO_SIZE           256U
 +
 +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_MESA_LLVMPIPE = 13,
 +    VK_DRIVER_ID_MOLTENVK = 14,
++    VK_DRIVER_ID_COREAVI_PROPRIETARY = 15,
 +    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_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_MAX_ENUM = 0x7FFFFFFF
 +} VkSamplerReductionMode;
 +
 +typedef enum VkSemaphoreType {
 +    VK_SEMAPHORE_TYPE_BINARY = 0,
 +    VK_SEMAPHORE_TYPE_TIMELINE = 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_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_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
 +} VkDescriptorBindingFlagBits;
 +typedef VkFlags VkDescriptorBindingFlags;
 +
 +typedef enum VkSemaphoreWaitFlagBits {
 +    VK_SEMAPHORE_WAIT_ANY_BIT = 0x00000001,
 +    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
 +
 +
- typedef enum VkPresentModeKHR {
-     VK_PRESENT_MODE_IMMEDIATE_KHR = 0,
-     VK_PRESENT_MODE_MAILBOX_KHR = 1,
-     VK_PRESENT_MODE_FIFO_KHR = 2,
-     VK_PRESENT_MODE_FIFO_RELAXED_KHR = 3,
-     VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR = 1000111000,
-     VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR = 1000111001,
-     VK_PRESENT_MODE_MAX_ENUM_KHR = 0x7FFFFFFF
- } VkPresentModeKHR;
++#define VKSC_VERSION_1_0 1
++// Vulkan SC 1.0 version number
++#define VKSC_API_VERSION_1_0 VK_MAKE_API_VERSION(VKSC_API_VARIANT, 1, 0, 0)// Patch version should always be set to 0
 +
- typedef enum VkColorSpaceKHR {
-     VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0,
-     VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = 1000104001,
-     VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = 1000104002,
-     VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT = 1000104003,
-     VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT = 1000104004,
-     VK_COLOR_SPACE_BT709_LINEAR_EXT = 1000104005,
-     VK_COLOR_SPACE_BT709_NONLINEAR_EXT = 1000104006,
-     VK_COLOR_SPACE_BT2020_LINEAR_EXT = 1000104007,
-     VK_COLOR_SPACE_HDR10_ST2084_EXT = 1000104008,
-     VK_COLOR_SPACE_DOLBYVISION_EXT = 1000104009,
-     VK_COLOR_SPACE_HDR10_HLG_EXT = 1000104010,
-     VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT = 1000104011,
-     VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT = 1000104012,
-     VK_COLOR_SPACE_PASS_THROUGH_EXT = 1000104013,
 +
- #define VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION 1
++typedef enum VkFaultLevel {
++    VK_FAULT_LEVEL_UNASSIGNED = 0,
++    VK_FAULT_LEVEL_CRITICAL = 1,
++    VK_FAULT_LEVEL_RECOVERABLE = 2,
++    VK_FAULT_LEVEL_WARNING = 3,
++    VK_FAULT_LEVEL_MAX_ENUM = 0x7FFFFFFF
++} VkFaultLevel;
++
++typedef enum VkFaultType {
++    VK_FAULT_TYPE_INVALID = 0,
++    VK_FAULT_TYPE_UNASSIGNED = 1,
++    VK_FAULT_TYPE_IMPLEMENTATION = 2,
++    VK_FAULT_TYPE_SYSTEM = 3,
++    VK_FAULT_TYPE_PHYSICAL_DEVICE = 4,
++    VK_FAULT_TYPE_COMMAND_BUFFER_FULL = 5,
++    VK_FAULT_TYPE_INVALID_API_USAGE = 6,
++    VK_FAULT_TYPE_MAX_ENUM = 0x7FFFFFFF
++} VkFaultType;
++
++typedef enum VkFaultQueryBehavior {
++    VK_FAULT_QUERY_BEHAVIOR_GET_AND_CLEAR_ALL_FAULTS = 0,
++    VK_FAULT_QUERY_BEHAVIOR_MAX_ENUM = 0x7FFFFFFF
++} VkFaultQueryBehavior;
++
++typedef enum VkPipelineMatchControl {
++    VK_PIPELINE_MATCH_CONTROL_APPLICATION_UUID_EXACT_MATCH = 0,
++    VK_PIPELINE_MATCH_CONTROL_MAX_ENUM = 0x7FFFFFFF
++} VkPipelineMatchControl;
++typedef struct VkPhysicalDeviceVulkanSC10Features {
++    VkStructureType    sType;
++    void*              pNext;
++    VkBool32           pipelineIdentifier;
++    VkBool32           shaderAtomicInstructions;
++} VkPhysicalDeviceVulkanSC10Features;
++
++typedef struct VkPhysicalDeviceVulkanSC10Properties {
++    VkStructureType    sType;
++    void*              pNext;
++    VkBool32           deviceNoDynamicHostAllocations;
++    VkBool32           deviceDestroyFreesMemory;
++    VkBool32           commandPoolMultipleCommandBuffersRecording;
++    VkBool32           commandPoolResetCommandBuffer;
++    VkBool32           commandBufferSimultaneousUse;
++    VkBool32           secondaryCommandBufferNullFramebuffer;
++    VkBool32           descriptorPoolFreeDescriptorSets;
++    VkBool32           recyclePipelineMemory;
++    uint32_t           maxRenderPassSubpasses;
++    uint32_t           maxRenderPassDependencies;
++    uint32_t           maxSubpassInputAttachments;
++    uint32_t           maxSubpassPreserveAttachments;
++    uint32_t           maxFramebufferAttachments;
++    uint32_t           maxDescriptorSetLayoutBindings;
++    uint32_t           maxQueryFaultCount;
++    uint32_t           maxCallbackFaultCount;
++} VkPhysicalDeviceVulkanSC10Properties;
++
++typedef struct VkPipelinePoolSize {
++    VkStructureType    sType;
++    const void*        pNext;
++    VkDeviceSize       poolEntrySize;
++    uint32_t           poolEntryCount;
++} VkPipelinePoolSize;
++
++typedef struct VkDeviceObjectReservationCreateInfo {
++    VkStructureType                     sType;
++    const void*                         pNext;
++    uint32_t                            pipelineCacheCreateInfoCount;
++    const VkPipelineCacheCreateInfo*    pPipelineCacheCreateInfos;
++    uint32_t                            pipelinePoolSizeCount;
++    const VkPipelinePoolSize*           pPipelinePoolSizes;
++    uint32_t                            semaphoreRequestCount;
++    uint32_t                            commandBufferRequestCount;
++    uint32_t                            fenceRequestCount;
++    uint32_t                            deviceMemoryRequestCount;
++    uint32_t                            bufferRequestCount;
++    uint32_t                            imageRequestCount;
++    uint32_t                            eventRequestCount;
++    uint32_t                            queryPoolRequestCount;
++    uint32_t                            bufferViewRequestCount;
++    uint32_t                            imageViewRequestCount;
++    uint32_t                            layeredImageViewRequestCount;
++    uint32_t                            pipelineCacheRequestCount;
++    uint32_t                            pipelineLayoutRequestCount;
++    uint32_t                            renderPassRequestCount;
++    uint32_t                            graphicsPipelineRequestCount;
++    uint32_t                            computePipelineRequestCount;
++    uint32_t                            descriptorSetLayoutRequestCount;
++    uint32_t                            samplerRequestCount;
++    uint32_t                            descriptorPoolRequestCount;
++    uint32_t                            descriptorSetRequestCount;
++    uint32_t                            framebufferRequestCount;
++    uint32_t                            commandPoolRequestCount;
++    uint32_t                            samplerYcbcrConversionRequestCount;
++    uint32_t                            surfaceRequestCount;
++    uint32_t                            swapchainRequestCount;
++    uint32_t                            displayModeRequestCount;
++    uint32_t                            subpassDescriptionRequestCount;
++    uint32_t                            attachmentDescriptionRequestCount;
++    uint32_t                            descriptorSetLayoutBindingRequestCount;
++    uint32_t                            descriptorSetLayoutBindingLimit;
++    uint32_t                            maxImageViewMipLevels;
++    uint32_t                            maxImageViewArrayLayers;
++    uint32_t                            maxLayeredImageViewMipLevels;
++    uint32_t                            maxOcclusionQueriesPerPool;
++    uint32_t                            maxPipelineStatisticsQueriesPerPool;
++    uint32_t                            maxTimestampQueriesPerPool;
++} VkDeviceObjectReservationCreateInfo;
++
++typedef struct VkCommandPoolMemoryReservationCreateInfo {
++    VkStructureType    sType;
++    const void*        pNext;
++    VkDeviceSize       commandPoolReservedSize;
++    uint32_t           commandPoolMaxCommandBuffers;
++} VkCommandPoolMemoryReservationCreateInfo;
++
++typedef struct VkCommandPoolMemoryConsumption {
++    VkStructureType    sType;
++    void*              pNext;
++    VkDeviceSize       commandPoolAllocated;
++    VkDeviceSize       commandPoolReservedSize;
++    VkDeviceSize       commandBufferAllocated;
++} VkCommandPoolMemoryConsumption;
++
++typedef struct VkPipelinePoolEntrySizeCreateInfo {
++    VkStructureType    sType;
++    const void*        pNext;
++    VkDeviceSize       poolEntrySize;
++} VkPipelinePoolEntrySizeCreateInfo;
++
++typedef struct VkFaultData {
++    VkStructureType    sType;
++    void*              pNext;
++    VkFaultLevel       faultLevel;
++    VkFaultType        faultType;
++} VkFaultData;
++
++typedef void (VKAPI_PTR *PFN_vkFaultCallbackFunction)(
++    VkBool32                                    unrecordedFaults,
++    uint32_t                                    faultCount,
++    const VkFaultData*                          pFaults);
++
++typedef struct VkFaultCallbackInfo {
++    VkStructureType                sType;
++    void*                          pNext;
++    VkFaultData*                   pFaults;
++    PFN_vkFaultCallbackFunction    pfnFaultCallback;
++} VkFaultCallbackInfo;
++
++typedef struct VkPipelineIdentifierInfo {
++    VkStructureType           sType;
++    const void*               pNext;
++    uint8_t                   pipelineIdentifier[VK_UUID_SIZE];
++    VkPipelineMatchControl    matchControl;
++} VkPipelineIdentifierInfo;
++
++typedef void (VKAPI_PTR *PFN_vkGetCommandPoolMemoryConsumption)(VkDevice device, VkCommandPool commandPool, VkCommandBuffer commandBuffer, VkCommandPoolMemoryConsumption* pConsumption);
++typedef VkResult (VKAPI_PTR *PFN_vkGetFaultData)(VkDevice device, VkFaultQueryBehavior faultQueryBehavior, VkBool32* pUnrecordedFaults, uint32_t* pFaultCount, VkFaultData* pFaults);
++
++#ifndef VK_NO_PROTOTYPES
++VKAPI_ATTR void VKAPI_CALL vkGetCommandPoolMemoryConsumption(
++    VkDevice                                    device,
++    VkCommandPool                               commandPool,
++    VkCommandBuffer                             commandBuffer,
++    VkCommandPoolMemoryConsumption*             pConsumption);
++
++VKAPI_ATTR VkResult VKAPI_CALL vkGetFaultData(
++    VkDevice                                    device,
++    VkFaultQueryBehavior                        faultQueryBehavior,
++    VkBool32*                                   pUnrecordedFaults,
++    uint32_t*                                   pFaultCount,
++    VkFaultData*                                pFaults);
++#endif
++
++
++#define VK_KHR_surface 1
++VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR)
++#define VK_KHR_SURFACE_SPEC_VERSION       25
++#define VK_KHR_SURFACE_EXTENSION_NAME     "VK_KHR_surface"
++
++typedef enum VkPresentModeKHR {
++    VK_PRESENT_MODE_IMMEDIATE_KHR = 0,
++    VK_PRESENT_MODE_MAILBOX_KHR = 1,
++    VK_PRESENT_MODE_FIFO_KHR = 2,
++    VK_PRESENT_MODE_FIFO_RELAXED_KHR = 3,
++    VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR = 1000111000,
++    VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR = 1000111001,
++    VK_PRESENT_MODE_MAX_ENUM_KHR = 0x7FFFFFFF
++} VkPresentModeKHR;
++
++typedef enum VkColorSpaceKHR {
++    VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0,
++    VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = 1000104001,
++    VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = 1000104002,
++    VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT = 1000104003,
++    VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT = 1000104004,
++    VK_COLOR_SPACE_BT709_LINEAR_EXT = 1000104005,
++    VK_COLOR_SPACE_BT709_NONLINEAR_EXT = 1000104006,
++    VK_COLOR_SPACE_BT2020_LINEAR_EXT = 1000104007,
++    VK_COLOR_SPACE_HDR10_ST2084_EXT = 1000104008,
++    VK_COLOR_SPACE_DOLBYVISION_EXT = 1000104009,
++    VK_COLOR_SPACE_HDR10_HLG_EXT = 1000104010,
++    VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT = 1000104011,
++    VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT = 1000104012,
++    VK_COLOR_SPACE_PASS_THROUGH_EXT = 1000104013,
 +    VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT = 1000104014,
 +    VK_COLORSPACE_SRGB_NONLINEAR_KHR = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR,
 +    VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT,
 +    VK_COLOR_SPACE_MAX_ENUM_KHR = 0x7FFFFFFF
 +} VkColorSpaceKHR;
 +
 +typedef enum VkSurfaceTransformFlagBitsKHR {
 +    VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 0x00000001,
 +    VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 0x00000002,
 +    VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 0x00000004,
 +    VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 0x00000008,
 +    VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 0x00000010,
 +    VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = 0x00000020,
 +    VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = 0x00000040,
 +    VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = 0x00000080,
 +    VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 0x00000100,
 +    VK_SURFACE_TRANSFORM_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
 +} VkSurfaceTransformFlagBitsKHR;
 +
 +typedef enum VkCompositeAlphaFlagBitsKHR {
 +    VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 0x00000001,
 +    VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 0x00000002,
 +    VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 0x00000004,
 +    VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 0x00000008,
 +    VK_COMPOSITE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
 +} VkCompositeAlphaFlagBitsKHR;
 +typedef VkFlags VkCompositeAlphaFlagsKHR;
 +typedef VkFlags VkSurfaceTransformFlagsKHR;
 +typedef struct VkSurfaceCapabilitiesKHR {
 +    uint32_t                         minImageCount;
 +    uint32_t                         maxImageCount;
 +    VkExtent2D                       currentExtent;
 +    VkExtent2D                       minImageExtent;
 +    VkExtent2D                       maxImageExtent;
 +    uint32_t                         maxImageArrayLayers;
 +    VkSurfaceTransformFlagsKHR       supportedTransforms;
 +    VkSurfaceTransformFlagBitsKHR    currentTransform;
 +    VkCompositeAlphaFlagsKHR         supportedCompositeAlpha;
 +    VkImageUsageFlags                supportedUsageFlags;
 +} VkSurfaceCapabilitiesKHR;
 +
 +typedef struct VkSurfaceFormatKHR {
 +    VkFormat           format;
 +    VkColorSpaceKHR    colorSpace;
 +} VkSurfaceFormatKHR;
 +
 +typedef void (VKAPI_PTR *PFN_vkDestroySurfaceKHR)(VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks* pAllocator);
 +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported);
 +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities);
 +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceFormatsKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats);
 +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfacePresentModesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes);
 +
 +#ifndef VK_NO_PROTOTYPES
 +VKAPI_ATTR void VKAPI_CALL vkDestroySurfaceKHR(
 +    VkInstance                                  instance,
 +    VkSurfaceKHR                                surface,
 +    const VkAllocationCallbacks*                pAllocator);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceSupportKHR(
 +    VkPhysicalDevice                            physicalDevice,
 +    uint32_t                                    queueFamilyIndex,
 +    VkSurfaceKHR                                surface,
 +    VkBool32*                                   pSupported);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
 +    VkPhysicalDevice                            physicalDevice,
 +    VkSurfaceKHR                                surface,
 +    VkSurfaceCapabilitiesKHR*                   pSurfaceCapabilities);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceFormatsKHR(
 +    VkPhysicalDevice                            physicalDevice,
 +    VkSurfaceKHR                                surface,
 +    uint32_t*                                   pSurfaceFormatCount,
 +    VkSurfaceFormatKHR*                         pSurfaceFormats);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfacePresentModesKHR(
 +    VkPhysicalDevice                            physicalDevice,
 +    VkSurfaceKHR                                surface,
 +    uint32_t*                                   pPresentModeCount,
 +    VkPresentModeKHR*                           pPresentModes);
 +#endif
 +
 +
 +#define VK_KHR_swapchain 1
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSwapchainKHR)
 +#define VK_KHR_SWAPCHAIN_SPEC_VERSION     70
 +#define VK_KHR_SWAPCHAIN_EXTENSION_NAME   "VK_KHR_swapchain"
 +
 +typedef enum VkSwapchainCreateFlagBitsKHR {
 +    VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 0x00000001,
 +    VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 0x00000002,
 +    VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR = 0x00000004,
 +    VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
 +} VkSwapchainCreateFlagBitsKHR;
 +typedef VkFlags VkSwapchainCreateFlagsKHR;
 +
 +typedef enum VkDeviceGroupPresentModeFlagBitsKHR {
 +    VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR = 0x00000001,
 +    VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR = 0x00000002,
 +    VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR = 0x00000004,
 +    VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR = 0x00000008,
 +    VK_DEVICE_GROUP_PRESENT_MODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
 +} VkDeviceGroupPresentModeFlagBitsKHR;
 +typedef VkFlags VkDeviceGroupPresentModeFlagsKHR;
 +typedef struct VkSwapchainCreateInfoKHR {
 +    VkStructureType                  sType;
 +    const void*                      pNext;
 +    VkSwapchainCreateFlagsKHR        flags;
 +    VkSurfaceKHR                     surface;
 +    uint32_t                         minImageCount;
 +    VkFormat                         imageFormat;
 +    VkColorSpaceKHR                  imageColorSpace;
 +    VkExtent2D                       imageExtent;
 +    uint32_t                         imageArrayLayers;
 +    VkImageUsageFlags                imageUsage;
 +    VkSharingMode                    imageSharingMode;
 +    uint32_t                         queueFamilyIndexCount;
 +    const uint32_t*                  pQueueFamilyIndices;
 +    VkSurfaceTransformFlagBitsKHR    preTransform;
 +    VkCompositeAlphaFlagBitsKHR      compositeAlpha;
 +    VkPresentModeKHR                 presentMode;
 +    VkBool32                         clipped;
 +    VkSwapchainKHR                   oldSwapchain;
 +} VkSwapchainCreateInfoKHR;
 +
 +typedef struct VkPresentInfoKHR {
 +    VkStructureType          sType;
 +    const void*              pNext;
 +    uint32_t                 waitSemaphoreCount;
 +    const VkSemaphore*       pWaitSemaphores;
 +    uint32_t                 swapchainCount;
 +    const VkSwapchainKHR*    pSwapchains;
 +    const uint32_t*          pImageIndices;
 +    VkResult*                pResults;
 +} VkPresentInfoKHR;
 +
 +typedef struct VkImageSwapchainCreateInfoKHR {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    VkSwapchainKHR     swapchain;
 +} VkImageSwapchainCreateInfoKHR;
 +
 +typedef struct VkBindImageMemorySwapchainInfoKHR {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    VkSwapchainKHR     swapchain;
 +    uint32_t           imageIndex;
 +} VkBindImageMemorySwapchainInfoKHR;
 +
 +typedef struct VkAcquireNextImageInfoKHR {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    VkSwapchainKHR     swapchain;
 +    uint64_t           timeout;
 +    VkSemaphore        semaphore;
 +    VkFence            fence;
 +    uint32_t           deviceMask;
 +} VkAcquireNextImageInfoKHR;
 +
 +typedef struct VkDeviceGroupPresentCapabilitiesKHR {
 +    VkStructureType                     sType;
 +    const void*                         pNext;
 +    uint32_t                            presentMask[VK_MAX_DEVICE_GROUP_SIZE];
 +    VkDeviceGroupPresentModeFlagsKHR    modes;
 +} VkDeviceGroupPresentCapabilitiesKHR;
 +
 +typedef struct VkDeviceGroupPresentInfoKHR {
 +    VkStructureType                        sType;
 +    const void*                            pNext;
 +    uint32_t                               swapchainCount;
 +    const uint32_t*                        pDeviceMasks;
 +    VkDeviceGroupPresentModeFlagBitsKHR    mode;
 +} VkDeviceGroupPresentInfoKHR;
 +
 +typedef struct VkDeviceGroupSwapchainCreateInfoKHR {
 +    VkStructureType                     sType;
 +    const void*                         pNext;
 +    VkDeviceGroupPresentModeFlagsKHR    modes;
 +} VkDeviceGroupSwapchainCreateInfoKHR;
 +
 +typedef VkResult (VKAPI_PTR *PFN_vkCreateSwapchainKHR)(VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain);
 +typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainImagesKHR)(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pSwapchainImageCount, VkImage* pSwapchainImages);
 +typedef VkResult (VKAPI_PTR *PFN_vkAcquireNextImageKHR)(VkDevice device, VkSwapchainKHR swapchain, uint64_t timeout, VkSemaphore semaphore, VkFence fence, uint32_t* pImageIndex);
 +typedef VkResult (VKAPI_PTR *PFN_vkQueuePresentKHR)(VkQueue queue, const VkPresentInfoKHR* pPresentInfo);
 +typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceGroupPresentCapabilitiesKHR)(VkDevice device, VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities);
 +typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceGroupSurfacePresentModesKHR)(VkDevice device, VkSurfaceKHR surface, VkDeviceGroupPresentModeFlagsKHR* pModes);
 +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDevicePresentRectanglesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pRectCount, VkRect2D* pRects);
 +typedef VkResult (VKAPI_PTR *PFN_vkAcquireNextImage2KHR)(VkDevice device, const VkAcquireNextImageInfoKHR* pAcquireInfo, uint32_t* pImageIndex);
 +
 +#ifndef VK_NO_PROTOTYPES
 +VKAPI_ATTR VkResult VKAPI_CALL vkCreateSwapchainKHR(
 +    VkDevice                                    device,
 +    const VkSwapchainCreateInfoKHR*             pCreateInfo,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkSwapchainKHR*                             pSwapchain);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainImagesKHR(
 +    VkDevice                                    device,
 +    VkSwapchainKHR                              swapchain,
 +    uint32_t*                                   pSwapchainImageCount,
 +    VkImage*                                    pSwapchainImages);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkAcquireNextImageKHR(
 +    VkDevice                                    device,
 +    VkSwapchainKHR                              swapchain,
 +    uint64_t                                    timeout,
 +    VkSemaphore                                 semaphore,
 +    VkFence                                     fence,
 +    uint32_t*                                   pImageIndex);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkQueuePresentKHR(
 +    VkQueue                                     queue,
 +    const VkPresentInfoKHR*                     pPresentInfo);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceGroupPresentCapabilitiesKHR(
 +    VkDevice                                    device,
 +    VkDeviceGroupPresentCapabilitiesKHR*        pDeviceGroupPresentCapabilities);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceGroupSurfacePresentModesKHR(
 +    VkDevice                                    device,
 +    VkSurfaceKHR                                surface,
 +    VkDeviceGroupPresentModeFlagsKHR*           pModes);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDevicePresentRectanglesKHR(
 +    VkPhysicalDevice                            physicalDevice,
 +    VkSurfaceKHR                                surface,
 +    uint32_t*                                   pRectCount,
 +    VkRect2D*                                   pRects);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkAcquireNextImage2KHR(
 +    VkDevice                                    device,
 +    const VkAcquireNextImageInfoKHR*            pAcquireInfo,
 +    uint32_t*                                   pImageIndex);
 +#endif
 +
 +
 +#define VK_KHR_display 1
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayKHR)
 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayModeKHR)
 +#define VK_KHR_DISPLAY_SPEC_VERSION       23
 +#define VK_KHR_DISPLAY_EXTENSION_NAME     "VK_KHR_display"
 +typedef VkFlags VkDisplayModeCreateFlagsKHR;
 +
 +typedef enum VkDisplayPlaneAlphaFlagBitsKHR {
 +    VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = 0x00000001,
 +    VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 0x00000002,
 +    VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 0x00000004,
 +    VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 0x00000008,
 +    VK_DISPLAY_PLANE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
 +} VkDisplayPlaneAlphaFlagBitsKHR;
 +typedef VkFlags VkDisplayPlaneAlphaFlagsKHR;
 +typedef VkFlags VkDisplaySurfaceCreateFlagsKHR;
 +typedef struct VkDisplayModeParametersKHR {
 +    VkExtent2D    visibleRegion;
 +    uint32_t      refreshRate;
 +} VkDisplayModeParametersKHR;
 +
 +typedef struct VkDisplayModeCreateInfoKHR {
 +    VkStructureType                sType;
 +    const void*                    pNext;
 +    VkDisplayModeCreateFlagsKHR    flags;
 +    VkDisplayModeParametersKHR     parameters;
 +} VkDisplayModeCreateInfoKHR;
 +
 +typedef struct VkDisplayModePropertiesKHR {
 +    VkDisplayModeKHR              displayMode;
 +    VkDisplayModeParametersKHR    parameters;
 +} VkDisplayModePropertiesKHR;
 +
 +typedef struct VkDisplayPlaneCapabilitiesKHR {
 +    VkDisplayPlaneAlphaFlagsKHR    supportedAlpha;
 +    VkOffset2D                     minSrcPosition;
 +    VkOffset2D                     maxSrcPosition;
 +    VkExtent2D                     minSrcExtent;
 +    VkExtent2D                     maxSrcExtent;
 +    VkOffset2D                     minDstPosition;
 +    VkOffset2D                     maxDstPosition;
 +    VkExtent2D                     minDstExtent;
 +    VkExtent2D                     maxDstExtent;
 +} VkDisplayPlaneCapabilitiesKHR;
 +
 +typedef struct VkDisplayPlanePropertiesKHR {
 +    VkDisplayKHR    currentDisplay;
 +    uint32_t        currentStackIndex;
 +} VkDisplayPlanePropertiesKHR;
 +
 +typedef struct VkDisplayPropertiesKHR {
 +    VkDisplayKHR                  display;
 +    const char*                   displayName;
 +    VkExtent2D                    physicalDimensions;
 +    VkExtent2D                    physicalResolution;
 +    VkSurfaceTransformFlagsKHR    supportedTransforms;
 +    VkBool32                      planeReorderPossible;
 +    VkBool32                      persistentContent;
 +} VkDisplayPropertiesKHR;
 +
 +typedef struct VkDisplaySurfaceCreateInfoKHR {
 +    VkStructureType                   sType;
 +    const void*                       pNext;
 +    VkDisplaySurfaceCreateFlagsKHR    flags;
 +    VkDisplayModeKHR                  displayMode;
 +    uint32_t                          planeIndex;
 +    uint32_t                          planeStackIndex;
 +    VkSurfaceTransformFlagBitsKHR     transform;
 +    float                             globalAlpha;
 +    VkDisplayPlaneAlphaFlagBitsKHR    alphaMode;
 +    VkExtent2D                        imageExtent;
 +} VkDisplaySurfaceCreateInfoKHR;
 +
 +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPropertiesKHR* pProperties);
 +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties);
 +typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneSupportedDisplaysKHR)(VkPhysicalDevice physicalDevice, uint32_t planeIndex, uint32_t* pDisplayCount, VkDisplayKHR* pDisplays);
 +typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayModePropertiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModePropertiesKHR* pProperties);
 +typedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayModeKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDisplayModeKHR* pMode);
 +typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, uint32_t planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities);
 +typedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayPlaneSurfaceKHR)(VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
 +
 +#ifndef VK_NO_PROTOTYPES
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPropertiesKHR(
 +    VkPhysicalDevice                            physicalDevice,
 +    uint32_t*                                   pPropertyCount,
 +    VkDisplayPropertiesKHR*                     pProperties);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
 +    VkPhysicalDevice                            physicalDevice,
 +    uint32_t*                                   pPropertyCount,
 +    VkDisplayPlanePropertiesKHR*                pProperties);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneSupportedDisplaysKHR(
 +    VkPhysicalDevice                            physicalDevice,
 +    uint32_t                                    planeIndex,
 +    uint32_t*                                   pDisplayCount,
 +    VkDisplayKHR*                               pDisplays);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayModePropertiesKHR(
 +    VkPhysicalDevice                            physicalDevice,
 +    VkDisplayKHR                                display,
 +    uint32_t*                                   pPropertyCount,
 +    VkDisplayModePropertiesKHR*                 pProperties);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkCreateDisplayModeKHR(
 +    VkPhysicalDevice                            physicalDevice,
 +    VkDisplayKHR                                display,
 +    const VkDisplayModeCreateInfoKHR*           pCreateInfo,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkDisplayModeKHR*                           pMode);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneCapabilitiesKHR(
 +    VkPhysicalDevice                            physicalDevice,
 +    VkDisplayModeKHR                            mode,
 +    uint32_t                                    planeIndex,
 +    VkDisplayPlaneCapabilitiesKHR*              pCapabilities);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkCreateDisplayPlaneSurfaceKHR(
 +    VkInstance                                  instance,
 +    const VkDisplaySurfaceCreateInfoKHR*        pCreateInfo,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkSurfaceKHR*                               pSurface);
 +#endif
 +
 +
 +#define VK_KHR_display_swapchain 1
 +#define VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION 10
 +#define VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME "VK_KHR_display_swapchain"
 +typedef struct VkDisplayPresentInfoKHR {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    VkRect2D           srcRect;
 +    VkRect2D           dstRect;
 +    VkBool32           persistent;
 +} VkDisplayPresentInfoKHR;
 +
 +typedef VkResult (VKAPI_PTR *PFN_vkCreateSharedSwapchainsKHR)(VkDevice device, uint32_t swapchainCount, const VkSwapchainCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchains);
 +
 +#ifndef VK_NO_PROTOTYPES
 +VKAPI_ATTR VkResult VKAPI_CALL vkCreateSharedSwapchainsKHR(
 +    VkDevice                                    device,
 +    uint32_t                                    swapchainCount,
 +    const VkSwapchainCreateInfoKHR*             pCreateInfos,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkSwapchainKHR*                             pSwapchains);
 +#endif
 +
 +
 +#define VK_KHR_external_memory_fd 1
 +#define VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION 1
 +#define VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME "VK_KHR_external_memory_fd"
 +typedef struct VkImportMemoryFdInfoKHR {
 +    VkStructureType                       sType;
 +    const void*                           pNext;
 +    VkExternalMemoryHandleTypeFlagBits    handleType;
 +    int                                   fd;
 +} VkImportMemoryFdInfoKHR;
 +
 +typedef struct VkMemoryFdPropertiesKHR {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    uint32_t           memoryTypeBits;
 +} VkMemoryFdPropertiesKHR;
 +
 +typedef struct VkMemoryGetFdInfoKHR {
 +    VkStructureType                       sType;
 +    const void*                           pNext;
 +    VkDeviceMemory                        memory;
 +    VkExternalMemoryHandleTypeFlagBits    handleType;
 +} VkMemoryGetFdInfoKHR;
 +
 +typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryFdKHR)(VkDevice device, const VkMemoryGetFdInfoKHR* pGetFdInfo, int* pFd);
 +typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryFdPropertiesKHR)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, int fd, VkMemoryFdPropertiesKHR* pMemoryFdProperties);
 +
 +#ifndef VK_NO_PROTOTYPES
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryFdKHR(
 +    VkDevice                                    device,
 +    const VkMemoryGetFdInfoKHR*                 pGetFdInfo,
 +    int*                                        pFd);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryFdPropertiesKHR(
 +    VkDevice                                    device,
 +    VkExternalMemoryHandleTypeFlagBits          handleType,
 +    int                                         fd,
 +    VkMemoryFdPropertiesKHR*                    pMemoryFdProperties);
 +#endif
 +
 +
 +#define VK_KHR_external_semaphore_fd 1
 +#define VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION 1
 +#define VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME "VK_KHR_external_semaphore_fd"
 +typedef struct VkImportSemaphoreFdInfoKHR {
 +    VkStructureType                          sType;
 +    const void*                              pNext;
 +    VkSemaphore                              semaphore;
 +    VkSemaphoreImportFlags                   flags;
 +    VkExternalSemaphoreHandleTypeFlagBits    handleType;
 +    int                                      fd;
 +} VkImportSemaphoreFdInfoKHR;
 +
 +typedef struct VkSemaphoreGetFdInfoKHR {
 +    VkStructureType                          sType;
 +    const void*                              pNext;
 +    VkSemaphore                              semaphore;
 +    VkExternalSemaphoreHandleTypeFlagBits    handleType;
 +} VkSemaphoreGetFdInfoKHR;
 +
 +typedef VkResult (VKAPI_PTR *PFN_vkImportSemaphoreFdKHR)(VkDevice device, const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo);
 +typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreFdKHR)(VkDevice device, const VkSemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd);
 +
 +#ifndef VK_NO_PROTOTYPES
 +VKAPI_ATTR VkResult VKAPI_CALL vkImportSemaphoreFdKHR(
 +    VkDevice                                    device,
 +    const VkImportSemaphoreFdInfoKHR*           pImportSemaphoreFdInfo);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreFdKHR(
 +    VkDevice                                    device,
 +    const VkSemaphoreGetFdInfoKHR*              pGetFdInfo,
 +    int*                                        pFd);
 +#endif
 +
 +
 +#define VK_KHR_incremental_present 1
- #define VK_KHR_fault_handling 1
- #define VK_KHR_FAULT_HANDLING_SPEC_VERSION 1
- #define VK_KHR_FAULT_HANDLING_EXTENSION_NAME "VK_KHR_fault_handling"
- typedef VkFaultLevel VkFaultLevelKHR;
- typedef VkFaultType VkFaultTypeKHR;
- typedef VkFaultQueryBehavior VkFaultQueryBehaviorKHR;
- typedef VkFaultData VkFaultDataKHR;
- typedef VkFaultCallbackInfo VkFaultCallbackInfoKHR;
- typedef PFN_vkFaultCallbackFunction PFN_vkFaultCallbackFunctionKHR;
- typedef VkPhysicalDeviceFaultHandlingProperties VkPhysicalDeviceFaultHandlingPropertiesKHR;
- typedef VkResult (VKAPI_PTR *PFN_vkGetFaultDataKHR)(VkDevice device, VkFaultQueryBehavior faultQueryBehavior, VkBool32* pUnrecordedFaults, uint32_t* pFaultCount, VkFaultData* pFaults);
- #ifndef VK_NO_PROTOTYPES
- VKAPI_ATTR VkResult VKAPI_CALL vkGetFaultDataKHR(
-     VkDevice                                    device,
-     VkFaultQueryBehavior                        faultQueryBehavior,
-     VkBool32*                                   pUnrecordedFaults,
-     uint32_t*                                   pFaultCount,
-     VkFaultData*                                pFaults);
- #endif
++#define VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION 2
 +#define VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME "VK_KHR_incremental_present"
 +typedef struct VkRectLayerKHR {
 +    VkOffset2D    offset;
 +    VkExtent2D    extent;
 +    uint32_t      layer;
 +} VkRectLayerKHR;
 +
 +typedef struct VkPresentRegionKHR {
 +    uint32_t                 rectangleCount;
 +    const VkRectLayerKHR*    pRectangles;
 +} VkPresentRegionKHR;
 +
 +typedef struct VkPresentRegionsKHR {
 +    VkStructureType              sType;
 +    const void*                  pNext;
 +    uint32_t                     swapchainCount;
 +    const VkPresentRegionKHR*    pRegions;
 +} VkPresentRegionsKHR;
 +
 +
 +
 +#define VK_KHR_shared_presentable_image 1
 +#define VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION 1
 +#define VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME "VK_KHR_shared_presentable_image"
 +typedef struct VkSharedPresentSurfaceCapabilitiesKHR {
 +    VkStructureType      sType;
 +    void*                pNext;
 +    VkImageUsageFlags    sharedPresentSupportedUsageFlags;
 +} VkSharedPresentSurfaceCapabilitiesKHR;
 +
 +typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainStatusKHR)(VkDevice device, VkSwapchainKHR swapchain);
 +
 +#ifndef VK_NO_PROTOTYPES
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainStatusKHR(
 +    VkDevice                                    device,
 +    VkSwapchainKHR                              swapchain);
 +#endif
 +
 +
 +#define VK_KHR_external_fence_fd 1
 +#define VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION 1
 +#define VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME "VK_KHR_external_fence_fd"
 +typedef struct VkImportFenceFdInfoKHR {
 +    VkStructureType                      sType;
 +    const void*                          pNext;
 +    VkFence                              fence;
 +    VkFenceImportFlags                   flags;
 +    VkExternalFenceHandleTypeFlagBits    handleType;
 +    int                                  fd;
 +} VkImportFenceFdInfoKHR;
 +
 +typedef struct VkFenceGetFdInfoKHR {
 +    VkStructureType                      sType;
 +    const void*                          pNext;
 +    VkFence                              fence;
 +    VkExternalFenceHandleTypeFlagBits    handleType;
 +} VkFenceGetFdInfoKHR;
 +
 +typedef VkResult (VKAPI_PTR *PFN_vkImportFenceFdKHR)(VkDevice device, const VkImportFenceFdInfoKHR* pImportFenceFdInfo);
 +typedef VkResult (VKAPI_PTR *PFN_vkGetFenceFdKHR)(VkDevice device, const VkFenceGetFdInfoKHR* pGetFdInfo, int* pFd);
 +
 +#ifndef VK_NO_PROTOTYPES
 +VKAPI_ATTR VkResult VKAPI_CALL vkImportFenceFdKHR(
 +    VkDevice                                    device,
 +    const VkImportFenceFdInfoKHR*               pImportFenceFdInfo);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceFdKHR(
 +    VkDevice                                    device,
 +    const VkFenceGetFdInfoKHR*                  pGetFdInfo,
 +    int*                                        pFd);
 +#endif
 +
 +
++#define VK_KHR_performance_query 1
++#define VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION 1
++#define VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME "VK_KHR_performance_query"
++
++typedef enum VkPerformanceCounterUnitKHR {
++    VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR = 0,
++    VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR = 1,
++    VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR = 2,
++    VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR = 3,
++    VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR = 4,
++    VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR = 5,
++    VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR = 6,
++    VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR = 7,
++    VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR = 8,
++    VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR = 9,
++    VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR = 10,
++    VK_PERFORMANCE_COUNTER_UNIT_MAX_ENUM_KHR = 0x7FFFFFFF
++} VkPerformanceCounterUnitKHR;
++
++typedef enum VkPerformanceCounterScopeKHR {
++    VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR = 0,
++    VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR = 1,
++    VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR = 2,
++    VK_QUERY_SCOPE_COMMAND_BUFFER_KHR = VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR,
++    VK_QUERY_SCOPE_RENDER_PASS_KHR = VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR,
++    VK_QUERY_SCOPE_COMMAND_KHR = VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR,
++    VK_PERFORMANCE_COUNTER_SCOPE_MAX_ENUM_KHR = 0x7FFFFFFF
++} VkPerformanceCounterScopeKHR;
++
++typedef enum VkPerformanceCounterStorageKHR {
++    VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR = 0,
++    VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR = 1,
++    VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR = 2,
++    VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR = 3,
++    VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR = 4,
++    VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR = 5,
++    VK_PERFORMANCE_COUNTER_STORAGE_MAX_ENUM_KHR = 0x7FFFFFFF
++} VkPerformanceCounterStorageKHR;
++
++typedef enum VkPerformanceCounterDescriptionFlagBitsKHR {
++    VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR = 0x00000001,
++    VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR = 0x00000002,
++    VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR = VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR,
++    VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR = VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR,
++    VK_PERFORMANCE_COUNTER_DESCRIPTION_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
++} VkPerformanceCounterDescriptionFlagBitsKHR;
++typedef VkFlags VkPerformanceCounterDescriptionFlagsKHR;
++
++typedef enum VkAcquireProfilingLockFlagBitsKHR {
++    VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
++} VkAcquireProfilingLockFlagBitsKHR;
++typedef VkFlags VkAcquireProfilingLockFlagsKHR;
++typedef struct VkPhysicalDevicePerformanceQueryFeaturesKHR {
++    VkStructureType    sType;
++    void*              pNext;
++    VkBool32           performanceCounterQueryPools;
++    VkBool32           performanceCounterMultipleQueryPools;
++} VkPhysicalDevicePerformanceQueryFeaturesKHR;
++
++typedef struct VkPhysicalDevicePerformanceQueryPropertiesKHR {
++    VkStructureType    sType;
++    void*              pNext;
++    VkBool32           allowCommandBufferQueryCopies;
++} VkPhysicalDevicePerformanceQueryPropertiesKHR;
++
++typedef struct VkPerformanceCounterKHR {
++    VkStructureType                   sType;
++    const void*                       pNext;
++    VkPerformanceCounterUnitKHR       unit;
++    VkPerformanceCounterScopeKHR      scope;
++    VkPerformanceCounterStorageKHR    storage;
++    uint8_t                           uuid[VK_UUID_SIZE];
++} VkPerformanceCounterKHR;
++
++typedef struct VkPerformanceCounterDescriptionKHR {
++    VkStructureType                            sType;
++    const void*                                pNext;
++    VkPerformanceCounterDescriptionFlagsKHR    flags;
++    char                                       name[VK_MAX_DESCRIPTION_SIZE];
++    char                                       category[VK_MAX_DESCRIPTION_SIZE];
++    char                                       description[VK_MAX_DESCRIPTION_SIZE];
++} VkPerformanceCounterDescriptionKHR;
++
++typedef struct VkQueryPoolPerformanceCreateInfoKHR {
++    VkStructureType    sType;
++    const void*        pNext;
++    uint32_t           queueFamilyIndex;
++    uint32_t           counterIndexCount;
++    const uint32_t*    pCounterIndices;
++} VkQueryPoolPerformanceCreateInfoKHR;
++
++typedef union VkPerformanceCounterResultKHR {
++    int32_t     int32;
++    int64_t     int64;
++    uint32_t    uint32;
++    uint64_t    uint64;
++    float       float32;
++    double      float64;
++} VkPerformanceCounterResultKHR;
++
++typedef struct VkAcquireProfilingLockInfoKHR {
++    VkStructureType                   sType;
++    const void*                       pNext;
++    VkAcquireProfilingLockFlagsKHR    flags;
++    uint64_t                          timeout;
++} VkAcquireProfilingLockInfoKHR;
++
++typedef struct VkPerformanceQuerySubmitInfoKHR {
++    VkStructureType    sType;
++    const void*        pNext;
++    uint32_t           counterPassIndex;
++} VkPerformanceQuerySubmitInfoKHR;
++
++typedef struct VkPerformanceQueryReservationInfoKHR {
++    VkStructureType    sType;
++    const void*        pNext;
++    uint32_t           maxPerformanceQueriesPerPool;
++} VkPerformanceQueryReservationInfoKHR;
++
++typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, uint32_t* pCounterCount, VkPerformanceCounterKHR* pCounters, VkPerformanceCounterDescriptionKHR* pCounterDescriptions);
++typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR)(VkPhysicalDevice physicalDevice, const VkQueryPoolPerformanceCreateInfoKHR* pPerformanceQueryCreateInfo, uint32_t* pNumPasses);
++typedef VkResult (VKAPI_PTR *PFN_vkAcquireProfilingLockKHR)(VkDevice device, const VkAcquireProfilingLockInfoKHR* pInfo);
++typedef void (VKAPI_PTR *PFN_vkReleaseProfilingLockKHR)(VkDevice device);
++
++#ifndef VK_NO_PROTOTYPES
++VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(
++    VkPhysicalDevice                            physicalDevice,
++    uint32_t                                    queueFamilyIndex,
++    uint32_t*                                   pCounterCount,
++    VkPerformanceCounterKHR*                    pCounters,
++    VkPerformanceCounterDescriptionKHR*         pCounterDescriptions);
++
++VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(
++    VkPhysicalDevice                            physicalDevice,
++    const VkQueryPoolPerformanceCreateInfoKHR*  pPerformanceQueryCreateInfo,
++    uint32_t*                                   pNumPasses);
++
++VKAPI_ATTR VkResult VKAPI_CALL vkAcquireProfilingLockKHR(
++    VkDevice                                    device,
++    const VkAcquireProfilingLockInfoKHR*        pInfo);
++
++VKAPI_ATTR void VKAPI_CALL vkReleaseProfilingLockKHR(
++    VkDevice                                    device);
++#endif
++
++
 +#define VK_KHR_get_surface_capabilities2 1
 +#define VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION 1
 +#define VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME "VK_KHR_get_surface_capabilities2"
 +typedef struct VkPhysicalDeviceSurfaceInfo2KHR {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    VkSurfaceKHR       surface;
 +} VkPhysicalDeviceSurfaceInfo2KHR;
 +
 +typedef struct VkSurfaceCapabilities2KHR {
 +    VkStructureType             sType;
 +    void*                       pNext;
 +    VkSurfaceCapabilitiesKHR    surfaceCapabilities;
 +} VkSurfaceCapabilities2KHR;
 +
 +typedef struct VkSurfaceFormat2KHR {
 +    VkStructureType       sType;
 +    void*                 pNext;
 +    VkSurfaceFormatKHR    surfaceFormat;
 +} VkSurfaceFormat2KHR;
 +
 +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkSurfaceCapabilities2KHR* pSurfaceCapabilities);
 +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceFormats2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pSurfaceFormatCount, VkSurfaceFormat2KHR* pSurfaceFormats);
 +
 +#ifndef VK_NO_PROTOTYPES
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilities2KHR(
 +    VkPhysicalDevice                            physicalDevice,
 +    const VkPhysicalDeviceSurfaceInfo2KHR*      pSurfaceInfo,
 +    VkSurfaceCapabilities2KHR*                  pSurfaceCapabilities);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceFormats2KHR(
 +    VkPhysicalDevice                            physicalDevice,
 +    const VkPhysicalDeviceSurfaceInfo2KHR*      pSurfaceInfo,
 +    uint32_t*                                   pSurfaceFormatCount,
 +    VkSurfaceFormat2KHR*                        pSurfaceFormats);
 +#endif
 +
 +
 +#define VK_KHR_get_display_properties2 1
 +#define VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION 1
 +#define VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME "VK_KHR_get_display_properties2"
 +typedef struct VkDisplayProperties2KHR {
 +    VkStructureType           sType;
 +    void*                     pNext;
 +    VkDisplayPropertiesKHR    displayProperties;
 +} VkDisplayProperties2KHR;
 +
 +typedef struct VkDisplayPlaneProperties2KHR {
 +    VkStructureType                sType;
 +    void*                          pNext;
 +    VkDisplayPlanePropertiesKHR    displayPlaneProperties;
 +} VkDisplayPlaneProperties2KHR;
 +
 +typedef struct VkDisplayModeProperties2KHR {
 +    VkStructureType               sType;
 +    void*                         pNext;
 +    VkDisplayModePropertiesKHR    displayModeProperties;
 +} VkDisplayModeProperties2KHR;
 +
 +typedef struct VkDisplayPlaneInfo2KHR {
 +    VkStructureType     sType;
 +    const void*         pNext;
 +    VkDisplayModeKHR    mode;
 +    uint32_t            planeIndex;
 +} VkDisplayPlaneInfo2KHR;
 +
 +typedef struct VkDisplayPlaneCapabilities2KHR {
 +    VkStructureType                  sType;
 +    void*                            pNext;
 +    VkDisplayPlaneCapabilitiesKHR    capabilities;
 +} VkDisplayPlaneCapabilities2KHR;
 +
 +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayProperties2KHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayProperties2KHR* pProperties);
 +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlaneProperties2KHR* pProperties);
 +typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayModeProperties2KHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModeProperties2KHR* pProperties);
 +typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneCapabilities2KHR)(VkPhysicalDevice physicalDevice, const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo, VkDisplayPlaneCapabilities2KHR* pCapabilities);
 +
 +#ifndef VK_NO_PROTOTYPES
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayProperties2KHR(
 +    VkPhysicalDevice                            physicalDevice,
 +    uint32_t*                                   pPropertyCount,
 +    VkDisplayProperties2KHR*                    pProperties);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
 +    VkPhysicalDevice                            physicalDevice,
 +    uint32_t*                                   pPropertyCount,
 +    VkDisplayPlaneProperties2KHR*               pProperties);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayModeProperties2KHR(
 +    VkPhysicalDevice                            physicalDevice,
 +    VkDisplayKHR                                display,
 +    uint32_t*                                   pPropertyCount,
 +    VkDisplayModeProperties2KHR*                pProperties);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneCapabilities2KHR(
 +    VkPhysicalDevice                            physicalDevice,
 +    const VkDisplayPlaneInfo2KHR*               pDisplayPlaneInfo,
 +    VkDisplayPlaneCapabilities2KHR*             pCapabilities);
 +#endif
 +
 +
 +#define VK_KHR_shader_clock 1
 +#define VK_KHR_SHADER_CLOCK_SPEC_VERSION  1
 +#define VK_KHR_SHADER_CLOCK_EXTENSION_NAME "VK_KHR_shader_clock"
 +typedef struct VkPhysicalDeviceShaderClockFeaturesKHR {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           shaderSubgroupClock;
 +    VkBool32           shaderDeviceClock;
 +} VkPhysicalDeviceShaderClockFeaturesKHR;
 +
 +
 +
 +#define VK_KHR_swapchain_mutable_format 1
 +#define VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION 1
 +#define VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME "VK_KHR_swapchain_mutable_format"
 +
 +
 +#define VK_KHR_shader_terminate_invocation 1
 +#define VK_KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION 1
 +#define VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME "VK_KHR_shader_terminate_invocation"
 +typedef struct VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           shaderTerminateInvocation;
 +} VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR;
 +
 +
 +
 +#define VK_KHR_fragment_shading_rate 1
 +#define VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION 1
 +#define VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME "VK_KHR_fragment_shading_rate"
 +
 +typedef enum VkFragmentShadingRateCombinerOpKHR {
 +    VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR = 0,
 +    VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR = 1,
 +    VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHR = 2,
 +    VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHR = 3,
 +    VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR = 4,
 +    VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_ENUM_KHR = 0x7FFFFFFF
 +} VkFragmentShadingRateCombinerOpKHR;
 +typedef struct VkFragmentShadingRateAttachmentInfoKHR {
 +    VkStructureType                  sType;
 +    const void*                      pNext;
 +    const VkAttachmentReference2*    pFragmentShadingRateAttachment;
 +    VkExtent2D                       shadingRateAttachmentTexelSize;
 +} VkFragmentShadingRateAttachmentInfoKHR;
 +
 +typedef struct VkPipelineFragmentShadingRateStateCreateInfoKHR {
 +    VkStructureType                       sType;
 +    const void*                           pNext;
 +    VkExtent2D                            fragmentSize;
 +    VkFragmentShadingRateCombinerOpKHR    combinerOps[2];
 +} VkPipelineFragmentShadingRateStateCreateInfoKHR;
 +
 +typedef struct VkPhysicalDeviceFragmentShadingRateFeaturesKHR {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           pipelineFragmentShadingRate;
 +    VkBool32           primitiveFragmentShadingRate;
 +    VkBool32           attachmentFragmentShadingRate;
 +} VkPhysicalDeviceFragmentShadingRateFeaturesKHR;
 +
 +typedef struct VkPhysicalDeviceFragmentShadingRatePropertiesKHR {
 +    VkStructureType          sType;
 +    void*                    pNext;
 +    VkExtent2D               minFragmentShadingRateAttachmentTexelSize;
 +    VkExtent2D               maxFragmentShadingRateAttachmentTexelSize;
 +    uint32_t                 maxFragmentShadingRateAttachmentTexelSizeAspectRatio;
 +    VkBool32                 primitiveFragmentShadingRateWithMultipleViewports;
 +    VkBool32                 layeredShadingRateAttachments;
 +    VkBool32                 fragmentShadingRateNonTrivialCombinerOps;
 +    VkExtent2D               maxFragmentSize;
 +    uint32_t                 maxFragmentSizeAspectRatio;
 +    uint32_t                 maxFragmentShadingRateCoverageSamples;
 +    VkSampleCountFlagBits    maxFragmentShadingRateRasterizationSamples;
 +    VkBool32                 fragmentShadingRateWithShaderDepthStencilWrites;
 +    VkBool32                 fragmentShadingRateWithSampleMask;
 +    VkBool32                 fragmentShadingRateWithShaderSampleMask;
 +    VkBool32                 fragmentShadingRateWithConservativeRasterization;
 +    VkBool32                 fragmentShadingRateWithFragmentShaderInterlock;
 +    VkBool32                 fragmentShadingRateWithCustomSampleLocations;
 +    VkBool32                 fragmentShadingRateStrictMultiplyCombiner;
 +} VkPhysicalDeviceFragmentShadingRatePropertiesKHR;
 +
 +typedef struct VkPhysicalDeviceFragmentShadingRateKHR {
 +    VkStructureType       sType;
 +    void*                 pNext;
 +    VkSampleCountFlags    sampleCounts;
 +    VkExtent2D            fragmentSize;
 +} VkPhysicalDeviceFragmentShadingRateKHR;
 +
 +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pFragmentShadingRateCount, VkPhysicalDeviceFragmentShadingRateKHR* pFragmentShadingRates);
 +typedef void (VKAPI_PTR *PFN_vkCmdSetFragmentShadingRateKHR)(VkCommandBuffer           commandBuffer, const VkExtent2D*                           pFragmentSize, const VkFragmentShadingRateCombinerOpKHR    combinerOps[2]);
 +
 +#ifndef VK_NO_PROTOTYPES
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceFragmentShadingRatesKHR(
 +    VkPhysicalDevice                            physicalDevice,
 +    uint32_t*                                   pFragmentShadingRateCount,
 +    VkPhysicalDeviceFragmentShadingRateKHR*     pFragmentShadingRates);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdSetFragmentShadingRateKHR(
 +    VkCommandBuffer                             commandBuffer,
 +    const VkExtent2D*                           pFragmentSize,
 +    const VkFragmentShadingRateCombinerOpKHR    combinerOps[2]);
 +#endif
 +
 +
- #define VK_KHR_seu_safe_memory 1
- #define VK_KHR_SEU_SAFE_MEMORY_SPEC_VERSION 1
- #define VK_KHR_SEU_SAFE_MEMORY_EXTENSION_NAME "VK_KHR_seu_safe_memory"
 +#define VK_KHR_object_refresh 1
 +#define VK_KHR_OBJECT_REFRESH_SPEC_VERSION 1
 +#define VK_KHR_OBJECT_REFRESH_EXTENSION_NAME "VK_KHR_object_refresh"
 +
 +typedef enum VkRefreshObjectFlagBitsKHR {
 +    VK_REFRESH_OBJECT_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
 +} VkRefreshObjectFlagBitsKHR;
 +typedef VkFlags VkRefreshObjectFlagsKHR;
 +typedef struct VkRefreshObjectKHR {
 +    VkObjectType               objectType;
 +    uint64_t                   objectHandle;
 +    VkRefreshObjectFlagsKHR    flags;
 +} VkRefreshObjectKHR;
 +
 +typedef struct VkRefreshObjectListKHR {
 +    VkStructureType              sType;
 +    const void*                  pNext;
 +    uint32_t                     objectCount;
 +    const VkRefreshObjectKHR*    pObjects;
 +} VkRefreshObjectListKHR;
 +
 +typedef void (VKAPI_PTR *PFN_vkCmdRefreshObjectsKHR)(VkCommandBuffer commandBuffer, const VkRefreshObjectListKHR* pRefreshObjects);
 +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceRefreshableObjectTypesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pRefreshableObjectCount, VkObjectType* pRefreshableObjectTypes);
 +
 +#ifndef VK_NO_PROTOTYPES
 +VKAPI_ATTR void VKAPI_CALL vkCmdRefreshObjectsKHR(
 +    VkCommandBuffer                             commandBuffer,
 +    const VkRefreshObjectListKHR*               pRefreshObjects);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceRefreshableObjectTypesKHR(
 +    VkPhysicalDevice                            physicalDevice,
 +    uint32_t*                                   pRefreshableObjectCount,
 +    VkObjectType*                               pRefreshableObjectTypes);
 +#endif
 +
 +
- #define VK_KHR_pipeline_identifier 1
- #define VK_KHR_PIPELINE_IDENTIFIER_SPEC_VERSION 1
- #define VK_KHR_PIPELINE_IDENTIFIER_EXTENSION_NAME "VK_KHR_pipeline_identifier"
- typedef VkPipelineMatchControl VkPipelineMatchControlKHR;
++#define VK_KHR_synchronization2 1
++typedef uint64_t VkFlags64;
++#define VK_KHR_SYNCHRONIZATION_2_SPEC_VERSION 1
++#define VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME "VK_KHR_synchronization2"
++typedef VkFlags64 VkPipelineStageFlags2KHR;
++
++// Flag bits for VkPipelineStageFlagBits2KHR
++typedef VkFlags64 VkPipelineStageFlagBits2KHR;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_NONE_KHR = 0ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR = 0x00000001ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR = 0x00000002ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT_KHR = 0x00000004ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR = 0x00000008ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR = 0x00000010ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR = 0x00000020ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR = 0x00000040ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR = 0x00000080ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR = 0x00000100ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR = 0x00000200ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR = 0x00000400ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR = 0x00000800ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR = 0x00001000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR = 0x00001000;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR = 0x00002000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_HOST_BIT_KHR = 0x00004000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR = 0x00008000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR = 0x00010000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_COPY_BIT_KHR = 0x100000000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR = 0x200000000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_BLIT_BIT_KHR = 0x400000000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR = 0x800000000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR = 0x1000000000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR = 0x2000000000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT_KHR = 0x4000000000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT = 0x01000000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT = 0x00040000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV = 0x00020000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x00400000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV = 0x00400000;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 0x02000000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR = 0x00200000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_NV = 0x00200000;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 0x02000000;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 0x00800000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV = 0x00080000ULL;
++static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV = 0x00100000ULL;
++
++typedef VkFlags64 VkAccessFlags2KHR;
++
++// Flag bits for VkAccessFlagBits2KHR
++typedef VkFlags64 VkAccessFlagBits2KHR;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_NONE_KHR = 0ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR = 0x00000001ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_INDEX_READ_BIT_KHR = 0x00000002ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT_KHR = 0x00000004ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_UNIFORM_READ_BIT_KHR = 0x00000008ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR = 0x00000010ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_SHADER_READ_BIT_KHR = 0x00000020ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_SHADER_WRITE_BIT_KHR = 0x00000040ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT_KHR = 0x00000080ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR = 0x00000100ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR = 0x00000200ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR = 0x00000400ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_TRANSFER_READ_BIT_KHR = 0x00000800ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR = 0x00001000ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_HOST_READ_BIT_KHR = 0x00002000ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_HOST_WRITE_BIT_KHR = 0x00004000ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_MEMORY_READ_BIT_KHR = 0x00008000ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_MEMORY_WRITE_BIT_KHR = 0x00010000ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR = 0x100000000ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR = 0x200000000ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR = 0x400000000ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 0x02000000ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 0x04000000ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 0x08000000ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT = 0x00100000ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV = 0x00020000ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV = 0x00040000ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = 0x00800000ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV = 0x00800000;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR = 0x00200000ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 0x00400000ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_NV = 0x00200000;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 0x00400000;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 0x01000000ULL;
++static const VkAccessFlagBits2KHR VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 0x00080000ULL;
++
++
++typedef enum VkSubmitFlagBitsKHR {
++    VK_SUBMIT_PROTECTED_BIT_KHR = 0x00000001,
++    VK_SUBMIT_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
++} VkSubmitFlagBitsKHR;
++typedef VkFlags VkSubmitFlagsKHR;
++typedef struct VkMemoryBarrier2KHR {
++    VkStructureType             sType;
++    const void*                 pNext;
++    VkPipelineStageFlags2KHR    srcStageMask;
++    VkAccessFlags2KHR           srcAccessMask;
++    VkPipelineStageFlags2KHR    dstStageMask;
++    VkAccessFlags2KHR           dstAccessMask;
++} VkMemoryBarrier2KHR;
++
++typedef struct VkBufferMemoryBarrier2KHR {
++    VkStructureType             sType;
++    const void*                 pNext;
++    VkPipelineStageFlags2KHR    srcStageMask;
++    VkAccessFlags2KHR           srcAccessMask;
++    VkPipelineStageFlags2KHR    dstStageMask;
++    VkAccessFlags2KHR           dstAccessMask;
++    uint32_t                    srcQueueFamilyIndex;
++    uint32_t                    dstQueueFamilyIndex;
++    VkBuffer                    buffer;
++    VkDeviceSize                offset;
++    VkDeviceSize                size;
++} VkBufferMemoryBarrier2KHR;
++
++typedef struct VkImageMemoryBarrier2KHR {
++    VkStructureType             sType;
++    const void*                 pNext;
++    VkPipelineStageFlags2KHR    srcStageMask;
++    VkAccessFlags2KHR           srcAccessMask;
++    VkPipelineStageFlags2KHR    dstStageMask;
++    VkAccessFlags2KHR           dstAccessMask;
++    VkImageLayout               oldLayout;
++    VkImageLayout               newLayout;
++    uint32_t                    srcQueueFamilyIndex;
++    uint32_t                    dstQueueFamilyIndex;
++    VkImage                     image;
++    VkImageSubresourceRange     subresourceRange;
++} VkImageMemoryBarrier2KHR;
++
++typedef struct VkDependencyInfoKHR {
++    VkStructureType                     sType;
++    const void*                         pNext;
++    VkDependencyFlags                   dependencyFlags;
++    uint32_t                            memoryBarrierCount;
++    const VkMemoryBarrier2KHR*          pMemoryBarriers;
++    uint32_t                            bufferMemoryBarrierCount;
++    const VkBufferMemoryBarrier2KHR*    pBufferMemoryBarriers;
++    uint32_t                            imageMemoryBarrierCount;
++    const VkImageMemoryBarrier2KHR*     pImageMemoryBarriers;
++} VkDependencyInfoKHR;
++
++typedef struct VkSemaphoreSubmitInfoKHR {
++    VkStructureType             sType;
++    const void*                 pNext;
++    VkSemaphore                 semaphore;
++    uint64_t                    value;
++    VkPipelineStageFlags2KHR    stageMask;
++    uint32_t                    deviceIndex;
++} VkSemaphoreSubmitInfoKHR;
 +
++typedef struct VkCommandBufferSubmitInfoKHR {
++    VkStructureType    sType;
++    const void*        pNext;
++    VkCommandBuffer    commandBuffer;
++    uint32_t           deviceMask;
++} VkCommandBufferSubmitInfoKHR;
 +
- typedef VkPhysicalDevicePipelineIdentifierFeatures VkPhysicalDevicePipelineIdentifierFeaturesKHR;
++typedef struct VkSubmitInfo2KHR {
++    VkStructureType                        sType;
++    const void*                            pNext;
++    VkSubmitFlagsKHR                       flags;
++    uint32_t                               waitSemaphoreInfoCount;
++    const VkSemaphoreSubmitInfoKHR*        pWaitSemaphoreInfos;
++    uint32_t                               commandBufferInfoCount;
++    const VkCommandBufferSubmitInfoKHR*    pCommandBufferInfos;
++    uint32_t                               signalSemaphoreInfoCount;
++    const VkSemaphoreSubmitInfoKHR*        pSignalSemaphoreInfos;
++} VkSubmitInfo2KHR;
++
++typedef struct VkPhysicalDeviceSynchronization2FeaturesKHR {
++    VkStructureType    sType;
++    void*              pNext;
++    VkBool32           synchronization2;
++} VkPhysicalDeviceSynchronization2FeaturesKHR;
 +
- typedef VkPipelineIdentifierInfo VkPipelineIdentifierInfoKHR;
++typedef struct VkQueueFamilyCheckpointProperties2NV {
++    VkStructureType             sType;
++    void*                       pNext;
++    VkPipelineStageFlags2KHR    checkpointExecutionStageMask;
++} VkQueueFamilyCheckpointProperties2NV;
 +
- #define VK_KHR_sc_pipeline_cache_functionality 1
- #define VK_KHR_SC_PIPELINE_CACHE_FUNCTIONALITY_SPEC_VERSION 1
- #define VK_KHR_SC_PIPELINE_CACHE_FUNCTIONALITY_EXTENSION_NAME "VK_KHR_sc_pipeline_cache_functionality"
++typedef struct VkCheckpointData2NV {
++    VkStructureType             sType;
++    void*                       pNext;
++    VkPipelineStageFlags2KHR    stage;
++    void*                       pCheckpointMarker;
++} VkCheckpointData2NV;
++
++typedef void (VKAPI_PTR *PFN_vkCmdSetEvent2KHR)(VkCommandBuffer                   commandBuffer, VkEvent                                             event, const VkDependencyInfoKHR*                          pDependencyInfo);
++typedef void (VKAPI_PTR *PFN_vkCmdResetEvent2KHR)(VkCommandBuffer                   commandBuffer, VkEvent                                             event, VkPipelineStageFlags2KHR                            stageMask);
++typedef void (VKAPI_PTR *PFN_vkCmdWaitEvents2KHR)(VkCommandBuffer                   commandBuffer, uint32_t                                            eventCount, const VkEvent*                     pEvents, const VkDependencyInfoKHR*         pDependencyInfos);
++typedef void (VKAPI_PTR *PFN_vkCmdPipelineBarrier2KHR)(VkCommandBuffer                   commandBuffer, const VkDependencyInfoKHR*                                pDependencyInfo);
++typedef void (VKAPI_PTR *PFN_vkCmdWriteTimestamp2KHR)(VkCommandBuffer                   commandBuffer, VkPipelineStageFlags2KHR                            stage, VkQueryPool                                         queryPool, uint32_t                                            query);
++typedef VkResult (VKAPI_PTR *PFN_vkQueueSubmit2KHR)(VkQueue                           queue, uint32_t                            submitCount, const VkSubmitInfo2KHR*           pSubmits, VkFence           fence);
++typedef void (VKAPI_PTR *PFN_vkCmdWriteBufferMarker2AMD)(VkCommandBuffer                   commandBuffer, VkPipelineStageFlags2KHR                            stage, VkBuffer                                            dstBuffer, VkDeviceSize                                        dstOffset, uint32_t                                            marker);
++typedef void (VKAPI_PTR *PFN_vkGetQueueCheckpointData2NV)(VkQueue queue, uint32_t* pCheckpointDataCount, VkCheckpointData2NV* pCheckpointData);
 +
++#ifndef VK_NO_PROTOTYPES
++VKAPI_ATTR void VKAPI_CALL vkCmdSetEvent2KHR(
++    VkCommandBuffer                             commandBuffer,
++    VkEvent                                     event,
++    const VkDependencyInfoKHR*                  pDependencyInfo);
++
++VKAPI_ATTR void VKAPI_CALL vkCmdResetEvent2KHR(
++    VkCommandBuffer                             commandBuffer,
++    VkEvent                                     event,
++    VkPipelineStageFlags2KHR                    stageMask);
++
++VKAPI_ATTR void VKAPI_CALL vkCmdWaitEvents2KHR(
++    VkCommandBuffer                             commandBuffer,
++    uint32_t                                    eventCount,
++    const VkEvent*                              pEvents,
++    const VkDependencyInfoKHR*                  pDependencyInfos);
++
++VKAPI_ATTR void VKAPI_CALL vkCmdPipelineBarrier2KHR(
++    VkCommandBuffer                             commandBuffer,
++    const VkDependencyInfoKHR*                  pDependencyInfo);
++
++VKAPI_ATTR void VKAPI_CALL vkCmdWriteTimestamp2KHR(
++    VkCommandBuffer                             commandBuffer,
++    VkPipelineStageFlags2KHR                    stage,
++    VkQueryPool                                 queryPool,
++    uint32_t                                    query);
++
++VKAPI_ATTR VkResult VKAPI_CALL vkQueueSubmit2KHR(
++    VkQueue                                     queue,
++    uint32_t                                    submitCount,
++    const VkSubmitInfo2KHR*                     pSubmits,
++    VkFence                                     fence);
++
++VKAPI_ATTR void VKAPI_CALL vkCmdWriteBufferMarker2AMD(
++    VkCommandBuffer                             commandBuffer,
++    VkPipelineStageFlags2KHR                    stage,
++    VkBuffer                                    dstBuffer,
++    VkDeviceSize                                dstOffset,
++    uint32_t                                    marker);
++
++VKAPI_ATTR void VKAPI_CALL vkGetQueueCheckpointData2NV(
++    VkQueue                                     queue,
++    uint32_t*                                   pCheckpointDataCount,
++    VkCheckpointData2NV*                        pCheckpointData);
++#endif
 +
 +
 +#define VK_KHR_copy_commands2 1
 +#define VK_KHR_COPY_COMMANDS_2_SPEC_VERSION 1
 +#define VK_KHR_COPY_COMMANDS_2_EXTENSION_NAME "VK_KHR_copy_commands2"
 +typedef struct VkBufferCopy2KHR {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    VkDeviceSize       srcOffset;
 +    VkDeviceSize       dstOffset;
 +    VkDeviceSize       size;
 +} VkBufferCopy2KHR;
 +
 +typedef struct VkCopyBufferInfo2KHR {
 +    VkStructureType            sType;
 +    const void*                pNext;
 +    VkBuffer                   srcBuffer;
 +    VkBuffer                   dstBuffer;
 +    uint32_t                   regionCount;
 +    const VkBufferCopy2KHR*    pRegions;
 +} VkCopyBufferInfo2KHR;
 +
 +typedef struct VkImageCopy2KHR {
 +    VkStructureType             sType;
 +    const void*                 pNext;
 +    VkImageSubresourceLayers    srcSubresource;
 +    VkOffset3D                  srcOffset;
 +    VkImageSubresourceLayers    dstSubresource;
 +    VkOffset3D                  dstOffset;
 +    VkExtent3D                  extent;
 +} VkImageCopy2KHR;
 +
 +typedef struct VkCopyImageInfo2KHR {
 +    VkStructureType           sType;
 +    const void*               pNext;
 +    VkImage                   srcImage;
 +    VkImageLayout             srcImageLayout;
 +    VkImage                   dstImage;
 +    VkImageLayout             dstImageLayout;
 +    uint32_t                  regionCount;
 +    const VkImageCopy2KHR*    pRegions;
 +} VkCopyImageInfo2KHR;
 +
 +typedef struct VkBufferImageCopy2KHR {
 +    VkStructureType             sType;
 +    const void*                 pNext;
 +    VkDeviceSize                bufferOffset;
 +    uint32_t                    bufferRowLength;
 +    uint32_t                    bufferImageHeight;
 +    VkImageSubresourceLayers    imageSubresource;
 +    VkOffset3D                  imageOffset;
 +    VkExtent3D                  imageExtent;
 +} VkBufferImageCopy2KHR;
 +
 +typedef struct VkCopyBufferToImageInfo2KHR {
 +    VkStructureType                 sType;
 +    const void*                     pNext;
 +    VkBuffer                        srcBuffer;
 +    VkImage                         dstImage;
 +    VkImageLayout                   dstImageLayout;
 +    uint32_t                        regionCount;
 +    const VkBufferImageCopy2KHR*    pRegions;
 +} VkCopyBufferToImageInfo2KHR;
 +
 +typedef struct VkCopyImageToBufferInfo2KHR {
 +    VkStructureType                 sType;
 +    const void*                     pNext;
 +    VkImage                         srcImage;
 +    VkImageLayout                   srcImageLayout;
 +    VkBuffer                        dstBuffer;
 +    uint32_t                        regionCount;
 +    const VkBufferImageCopy2KHR*    pRegions;
 +} VkCopyImageToBufferInfo2KHR;
 +
 +typedef struct VkImageBlit2KHR {
 +    VkStructureType             sType;
 +    const void*                 pNext;
 +    VkImageSubresourceLayers    srcSubresource;
 +    VkOffset3D                  srcOffsets[2];
 +    VkImageSubresourceLayers    dstSubresource;
 +    VkOffset3D                  dstOffsets[2];
 +} VkImageBlit2KHR;
 +
 +typedef struct VkBlitImageInfo2KHR {
 +    VkStructureType           sType;
 +    const void*               pNext;
 +    VkImage                   srcImage;
 +    VkImageLayout             srcImageLayout;
 +    VkImage                   dstImage;
 +    VkImageLayout             dstImageLayout;
 +    uint32_t                  regionCount;
 +    const VkImageBlit2KHR*    pRegions;
 +    VkFilter                  filter;
 +} VkBlitImageInfo2KHR;
 +
 +typedef struct VkImageResolve2KHR {
 +    VkStructureType             sType;
 +    const void*                 pNext;
 +    VkImageSubresourceLayers    srcSubresource;
 +    VkOffset3D                  srcOffset;
 +    VkImageSubresourceLayers    dstSubresource;
 +    VkOffset3D                  dstOffset;
 +    VkExtent3D                  extent;
 +} VkImageResolve2KHR;
 +
 +typedef struct VkResolveImageInfo2KHR {
 +    VkStructureType              sType;
 +    const void*                  pNext;
 +    VkImage                      srcImage;
 +    VkImageLayout                srcImageLayout;
 +    VkImage                      dstImage;
 +    VkImageLayout                dstImageLayout;
 +    uint32_t                     regionCount;
 +    const VkImageResolve2KHR*    pRegions;
 +} VkResolveImageInfo2KHR;
 +
 +typedef void (VKAPI_PTR *PFN_vkCmdCopyBuffer2KHR)(VkCommandBuffer commandBuffer, const VkCopyBufferInfo2KHR* pCopyBufferInfo);
 +typedef void (VKAPI_PTR *PFN_vkCmdCopyImage2KHR)(VkCommandBuffer commandBuffer, const VkCopyImageInfo2KHR* pCopyImageInfo);
 +typedef void (VKAPI_PTR *PFN_vkCmdCopyBufferToImage2KHR)(VkCommandBuffer commandBuffer, const VkCopyBufferToImageInfo2KHR* pCopyBufferToImageInfo);
 +typedef void (VKAPI_PTR *PFN_vkCmdCopyImageToBuffer2KHR)(VkCommandBuffer commandBuffer, const VkCopyImageToBufferInfo2KHR* pCopyImageToBufferInfo);
 +typedef void (VKAPI_PTR *PFN_vkCmdBlitImage2KHR)(VkCommandBuffer commandBuffer, const VkBlitImageInfo2KHR* pBlitImageInfo);
 +typedef void (VKAPI_PTR *PFN_vkCmdResolveImage2KHR)(VkCommandBuffer commandBuffer, const VkResolveImageInfo2KHR* pResolveImageInfo);
 +
 +#ifndef VK_NO_PROTOTYPES
 +VKAPI_ATTR void VKAPI_CALL vkCmdCopyBuffer2KHR(
 +    VkCommandBuffer                             commandBuffer,
 +    const VkCopyBufferInfo2KHR*                 pCopyBufferInfo);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdCopyImage2KHR(
 +    VkCommandBuffer                             commandBuffer,
 +    const VkCopyImageInfo2KHR*                  pCopyImageInfo);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdCopyBufferToImage2KHR(
 +    VkCommandBuffer                             commandBuffer,
 +    const VkCopyBufferToImageInfo2KHR*          pCopyBufferToImageInfo);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdCopyImageToBuffer2KHR(
 +    VkCommandBuffer                             commandBuffer,
 +    const VkCopyImageToBufferInfo2KHR*          pCopyImageToBufferInfo);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdBlitImage2KHR(
 +    VkCommandBuffer                             commandBuffer,
 +    const VkBlitImageInfo2KHR*                  pBlitImageInfo);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdResolveImage2KHR(
 +    VkCommandBuffer                             commandBuffer,
 +    const VkResolveImageInfo2KHR*               pResolveImageInfo);
 +#endif
 +
 +
- #define VK_QUEUE_FAMILY_FOREIGN_EXT       (~0U-2)
 +#define VK_EXT_depth_range_unrestricted 1
 +#define VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION 1
 +#define VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME "VK_EXT_depth_range_unrestricted"
 +
 +
 +#define VK_EXT_texture_compression_astc_hdr 1
 +#define VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION 1
 +#define VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME "VK_EXT_texture_compression_astc_hdr"
 +typedef struct VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           textureCompressionASTC_HDR;
 +} VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT;
 +
 +
 +
 +#define VK_EXT_astc_decode_mode 1
 +#define VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION 1
 +#define VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME "VK_EXT_astc_decode_mode"
 +typedef struct VkImageViewASTCDecodeModeEXT {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    VkFormat           decodeMode;
 +} VkImageViewASTCDecodeModeEXT;
 +
 +typedef struct VkPhysicalDeviceASTCDecodeFeaturesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           decodeModeSharedExponent;
 +} VkPhysicalDeviceASTCDecodeFeaturesEXT;
 +
 +
 +
 +#define VK_EXT_direct_mode_display 1
 +#define VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION 1
 +#define VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME "VK_EXT_direct_mode_display"
 +typedef VkResult (VKAPI_PTR *PFN_vkReleaseDisplayEXT)(VkPhysicalDevice physicalDevice, VkDisplayKHR display);
 +
 +#ifndef VK_NO_PROTOTYPES
 +VKAPI_ATTR VkResult VKAPI_CALL vkReleaseDisplayEXT(
 +    VkPhysicalDevice                            physicalDevice,
 +    VkDisplayKHR                                display);
 +#endif
 +
 +
 +#define VK_EXT_display_surface_counter 1
 +#define VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION 1
 +#define VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME "VK_EXT_display_surface_counter"
 +
 +typedef enum VkSurfaceCounterFlagBitsEXT {
 +    VK_SURFACE_COUNTER_VBLANK_BIT_EXT = 0x00000001,
 +    VK_SURFACE_COUNTER_VBLANK_EXT = VK_SURFACE_COUNTER_VBLANK_BIT_EXT,
 +    VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
 +} VkSurfaceCounterFlagBitsEXT;
 +typedef VkFlags VkSurfaceCounterFlagsEXT;
 +typedef struct VkSurfaceCapabilities2EXT {
 +    VkStructureType                  sType;
 +    void*                            pNext;
 +    uint32_t                         minImageCount;
 +    uint32_t                         maxImageCount;
 +    VkExtent2D                       currentExtent;
 +    VkExtent2D                       minImageExtent;
 +    VkExtent2D                       maxImageExtent;
 +    uint32_t                         maxImageArrayLayers;
 +    VkSurfaceTransformFlagsKHR       supportedTransforms;
 +    VkSurfaceTransformFlagBitsKHR    currentTransform;
 +    VkCompositeAlphaFlagsKHR         supportedCompositeAlpha;
 +    VkImageUsageFlags                supportedUsageFlags;
 +    VkSurfaceCounterFlagsEXT         supportedSurfaceCounters;
 +} VkSurfaceCapabilities2EXT;
 +
 +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilities2EXT* pSurfaceCapabilities);
 +
 +#ifndef VK_NO_PROTOTYPES
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilities2EXT(
 +    VkPhysicalDevice                            physicalDevice,
 +    VkSurfaceKHR                                surface,
 +    VkSurfaceCapabilities2EXT*                  pSurfaceCapabilities);
 +#endif
 +
 +
 +#define VK_EXT_display_control 1
 +#define VK_EXT_DISPLAY_CONTROL_SPEC_VERSION 1
 +#define VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME "VK_EXT_display_control"
 +
 +typedef enum VkDisplayPowerStateEXT {
 +    VK_DISPLAY_POWER_STATE_OFF_EXT = 0,
 +    VK_DISPLAY_POWER_STATE_SUSPEND_EXT = 1,
 +    VK_DISPLAY_POWER_STATE_ON_EXT = 2,
 +    VK_DISPLAY_POWER_STATE_MAX_ENUM_EXT = 0x7FFFFFFF
 +} VkDisplayPowerStateEXT;
 +
 +typedef enum VkDeviceEventTypeEXT {
 +    VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0,
 +    VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF
 +} VkDeviceEventTypeEXT;
 +
 +typedef enum VkDisplayEventTypeEXT {
 +    VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0,
 +    VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF
 +} VkDisplayEventTypeEXT;
 +typedef struct VkDisplayPowerInfoEXT {
 +    VkStructureType           sType;
 +    const void*               pNext;
 +    VkDisplayPowerStateEXT    powerState;
 +} VkDisplayPowerInfoEXT;
 +
 +typedef struct VkDeviceEventInfoEXT {
 +    VkStructureType         sType;
 +    const void*             pNext;
 +    VkDeviceEventTypeEXT    deviceEvent;
 +} VkDeviceEventInfoEXT;
 +
 +typedef struct VkDisplayEventInfoEXT {
 +    VkStructureType          sType;
 +    const void*              pNext;
 +    VkDisplayEventTypeEXT    displayEvent;
 +} VkDisplayEventInfoEXT;
 +
 +typedef struct VkSwapchainCounterCreateInfoEXT {
 +    VkStructureType             sType;
 +    const void*                 pNext;
 +    VkSurfaceCounterFlagsEXT    surfaceCounters;
 +} VkSwapchainCounterCreateInfoEXT;
 +
 +typedef VkResult (VKAPI_PTR *PFN_vkDisplayPowerControlEXT)(VkDevice device, VkDisplayKHR display, const VkDisplayPowerInfoEXT* pDisplayPowerInfo);
 +typedef VkResult (VKAPI_PTR *PFN_vkRegisterDeviceEventEXT)(VkDevice device, const VkDeviceEventInfoEXT* pDeviceEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);
 +typedef VkResult (VKAPI_PTR *PFN_vkRegisterDisplayEventEXT)(VkDevice device, VkDisplayKHR display, const VkDisplayEventInfoEXT* pDisplayEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);
 +typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainCounterEXT)(VkDevice device, VkSwapchainKHR swapchain, VkSurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue);
 +
 +#ifndef VK_NO_PROTOTYPES
 +VKAPI_ATTR VkResult VKAPI_CALL vkDisplayPowerControlEXT(
 +    VkDevice                                    device,
 +    VkDisplayKHR                                display,
 +    const VkDisplayPowerInfoEXT*                pDisplayPowerInfo);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkRegisterDeviceEventEXT(
 +    VkDevice                                    device,
 +    const VkDeviceEventInfoEXT*                 pDeviceEventInfo,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkFence*                                    pFence);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkRegisterDisplayEventEXT(
 +    VkDevice                                    device,
 +    VkDisplayKHR                                display,
 +    const VkDisplayEventInfoEXT*                pDisplayEventInfo,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkFence*                                    pFence);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainCounterEXT(
 +    VkDevice                                    device,
 +    VkSwapchainKHR                              swapchain,
 +    VkSurfaceCounterFlagBitsEXT                 counter,
 +    uint64_t*                                   pCounterValue);
 +#endif
 +
 +
 +#define VK_EXT_discard_rectangles 1
 +#define VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION 1
 +#define VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME "VK_EXT_discard_rectangles"
 +
 +typedef enum VkDiscardRectangleModeEXT {
 +    VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0,
 +    VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1,
 +    VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT = 0x7FFFFFFF
 +} VkDiscardRectangleModeEXT;
 +typedef VkFlags VkPipelineDiscardRectangleStateCreateFlagsEXT;
 +typedef struct VkPhysicalDeviceDiscardRectanglePropertiesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    uint32_t           maxDiscardRectangles;
 +} VkPhysicalDeviceDiscardRectanglePropertiesEXT;
 +
 +typedef struct VkPipelineDiscardRectangleStateCreateInfoEXT {
 +    VkStructureType                                  sType;
 +    const void*                                      pNext;
 +    VkPipelineDiscardRectangleStateCreateFlagsEXT    flags;
 +    VkDiscardRectangleModeEXT                        discardRectangleMode;
 +    uint32_t                                         discardRectangleCount;
 +    const VkRect2D*                                  pDiscardRectangles;
 +} VkPipelineDiscardRectangleStateCreateInfoEXT;
 +
 +typedef void (VKAPI_PTR *PFN_vkCmdSetDiscardRectangleEXT)(VkCommandBuffer commandBuffer, uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const VkRect2D* pDiscardRectangles);
 +
 +#ifndef VK_NO_PROTOTYPES
 +VKAPI_ATTR void VKAPI_CALL vkCmdSetDiscardRectangleEXT(
 +    VkCommandBuffer                             commandBuffer,
 +    uint32_t                                    firstDiscardRectangle,
 +    uint32_t                                    discardRectangleCount,
 +    const VkRect2D*                             pDiscardRectangles);
 +#endif
 +
 +
 +#define VK_EXT_conservative_rasterization 1
 +#define VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION 1
 +#define VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME "VK_EXT_conservative_rasterization"
 +
 +typedef enum VkConservativeRasterizationModeEXT {
 +    VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT = 0,
 +    VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT = 1,
 +    VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT = 2,
 +    VK_CONSERVATIVE_RASTERIZATION_MODE_MAX_ENUM_EXT = 0x7FFFFFFF
 +} VkConservativeRasterizationModeEXT;
 +typedef VkFlags VkPipelineRasterizationConservativeStateCreateFlagsEXT;
 +typedef struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    float              primitiveOverestimationSize;
 +    float              maxExtraPrimitiveOverestimationSize;
 +    float              extraPrimitiveOverestimationSizeGranularity;
 +    VkBool32           primitiveUnderestimation;
 +    VkBool32           conservativePointAndLineRasterization;
 +    VkBool32           degenerateTrianglesRasterized;
 +    VkBool32           degenerateLinesRasterized;
 +    VkBool32           fullyCoveredFragmentShaderInputVariable;
 +    VkBool32           conservativeRasterizationPostDepthCoverage;
 +} VkPhysicalDeviceConservativeRasterizationPropertiesEXT;
 +
 +typedef struct VkPipelineRasterizationConservativeStateCreateInfoEXT {
 +    VkStructureType                                           sType;
 +    const void*                                               pNext;
 +    VkPipelineRasterizationConservativeStateCreateFlagsEXT    flags;
 +    VkConservativeRasterizationModeEXT                        conservativeRasterizationMode;
 +    float                                                     extraPrimitiveOverestimationSize;
 +} VkPipelineRasterizationConservativeStateCreateInfoEXT;
 +
 +
 +
 +#define VK_EXT_depth_clip_enable 1
 +#define VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION 1
 +#define VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME "VK_EXT_depth_clip_enable"
 +typedef VkFlags VkPipelineRasterizationDepthClipStateCreateFlagsEXT;
 +typedef struct VkPhysicalDeviceDepthClipEnableFeaturesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           depthClipEnable;
 +} VkPhysicalDeviceDepthClipEnableFeaturesEXT;
 +
 +typedef struct VkPipelineRasterizationDepthClipStateCreateInfoEXT {
 +    VkStructureType                                        sType;
 +    const void*                                            pNext;
 +    VkPipelineRasterizationDepthClipStateCreateFlagsEXT    flags;
 +    VkBool32                                               depthClipEnable;
 +} VkPipelineRasterizationDepthClipStateCreateInfoEXT;
 +
 +
 +
 +#define VK_EXT_swapchain_colorspace 1
 +#define VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION 4
 +#define VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME "VK_EXT_swapchain_colorspace"
 +
 +
 +#define VK_EXT_hdr_metadata 1
 +#define VK_EXT_HDR_METADATA_SPEC_VERSION  2
 +#define VK_EXT_HDR_METADATA_EXTENSION_NAME "VK_EXT_hdr_metadata"
 +typedef struct VkXYColorEXT {
 +    float    x;
 +    float    y;
 +} VkXYColorEXT;
 +
 +typedef struct VkHdrMetadataEXT {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    VkXYColorEXT       displayPrimaryRed;
 +    VkXYColorEXT       displayPrimaryGreen;
 +    VkXYColorEXT       displayPrimaryBlue;
 +    VkXYColorEXT       whitePoint;
 +    float              maxLuminance;
 +    float              minLuminance;
 +    float              maxContentLightLevel;
 +    float              maxFrameAverageLightLevel;
 +} VkHdrMetadataEXT;
 +
 +typedef void (VKAPI_PTR *PFN_vkSetHdrMetadataEXT)(VkDevice device, uint32_t swapchainCount, const VkSwapchainKHR* pSwapchains, const VkHdrMetadataEXT* pMetadata);
 +
 +#ifndef VK_NO_PROTOTYPES
 +VKAPI_ATTR void VKAPI_CALL vkSetHdrMetadataEXT(
 +    VkDevice                                    device,
 +    uint32_t                                    swapchainCount,
 +    const VkSwapchainKHR*                       pSwapchains,
 +    const VkHdrMetadataEXT*                     pMetadata);
 +#endif
 +
 +
 +#define VK_EXT_external_memory_dma_buf 1
 +#define VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION 1
 +#define VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME "VK_EXT_external_memory_dma_buf"
 +
 +
 +#define VK_EXT_queue_family_foreign 1
 +#define VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION 1
 +#define VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME "VK_EXT_queue_family_foreign"
- #define VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION 1
++#define VK_QUEUE_FAMILY_FOREIGN_EXT       (~2U)
++
++
++#define VK_EXT_debug_utils 1
++VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugUtilsMessengerEXT)
++#define VK_EXT_DEBUG_UTILS_SPEC_VERSION   2
++#define VK_EXT_DEBUG_UTILS_EXTENSION_NAME "VK_EXT_debug_utils"
++typedef VkFlags VkDebugUtilsMessengerCallbackDataFlagsEXT;
++
++typedef enum VkDebugUtilsMessageSeverityFlagBitsEXT {
++    VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT = 0x00000001,
++    VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT = 0x00000010,
++    VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT = 0x00000100,
++    VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT = 0x00001000,
++    VK_DEBUG_UTILS_MESSAGE_SEVERITY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
++} VkDebugUtilsMessageSeverityFlagBitsEXT;
++
++typedef enum VkDebugUtilsMessageTypeFlagBitsEXT {
++    VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT = 0x00000001,
++    VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT = 0x00000002,
++    VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT = 0x00000004,
++    VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
++} VkDebugUtilsMessageTypeFlagBitsEXT;
++typedef VkFlags VkDebugUtilsMessageTypeFlagsEXT;
++typedef VkFlags VkDebugUtilsMessageSeverityFlagsEXT;
++typedef VkFlags VkDebugUtilsMessengerCreateFlagsEXT;
++typedef struct VkDebugUtilsLabelEXT {
++    VkStructureType    sType;
++    const void*        pNext;
++    const char*        pLabelName;
++    float              color[4];
++} VkDebugUtilsLabelEXT;
++
++typedef struct VkDebugUtilsObjectNameInfoEXT {
++    VkStructureType    sType;
++    const void*        pNext;
++    VkObjectType       objectType;
++    uint64_t           objectHandle;
++    const char*        pObjectName;
++} VkDebugUtilsObjectNameInfoEXT;
++
++typedef struct VkDebugUtilsMessengerCallbackDataEXT {
++    VkStructureType                              sType;
++    const void*                                  pNext;
++    VkDebugUtilsMessengerCallbackDataFlagsEXT    flags;
++    const char*                                  pMessageIdName;
++    int32_t                                      messageIdNumber;
++    const char*                                  pMessage;
++    uint32_t                                     queueLabelCount;
++    const VkDebugUtilsLabelEXT*                  pQueueLabels;
++    uint32_t                                     cmdBufLabelCount;
++    const VkDebugUtilsLabelEXT*                  pCmdBufLabels;
++    uint32_t                                     objectCount;
++    const VkDebugUtilsObjectNameInfoEXT*         pObjects;
++} VkDebugUtilsMessengerCallbackDataEXT;
++
++typedef VkBool32 (VKAPI_PTR *PFN_vkDebugUtilsMessengerCallbackEXT)(
++    VkDebugUtilsMessageSeverityFlagBitsEXT           messageSeverity,
++    VkDebugUtilsMessageTypeFlagsEXT                  messageTypes,
++    const VkDebugUtilsMessengerCallbackDataEXT*      pCallbackData,
++    void*                                            pUserData);
++
++typedef struct VkDebugUtilsMessengerCreateInfoEXT {
++    VkStructureType                         sType;
++    const void*                             pNext;
++    VkDebugUtilsMessengerCreateFlagsEXT     flags;
++    VkDebugUtilsMessageSeverityFlagsEXT     messageSeverity;
++    VkDebugUtilsMessageTypeFlagsEXT         messageType;
++    PFN_vkDebugUtilsMessengerCallbackEXT    pfnUserCallback;
++    void*                                   pUserData;
++} VkDebugUtilsMessengerCreateInfoEXT;
++
++typedef struct VkDebugUtilsObjectTagInfoEXT {
++    VkStructureType    sType;
++    const void*        pNext;
++    VkObjectType       objectType;
++    uint64_t           objectHandle;
++    uint64_t           tagName;
++    size_t             tagSize;
++    const void*        pTag;
++} VkDebugUtilsObjectTagInfoEXT;
++
++typedef VkResult (VKAPI_PTR *PFN_vkSetDebugUtilsObjectNameEXT)(VkDevice device, const VkDebugUtilsObjectNameInfoEXT* pNameInfo);
++typedef VkResult (VKAPI_PTR *PFN_vkSetDebugUtilsObjectTagEXT)(VkDevice device, const VkDebugUtilsObjectTagInfoEXT* pTagInfo);
++typedef void (VKAPI_PTR *PFN_vkQueueBeginDebugUtilsLabelEXT)(VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo);
++typedef void (VKAPI_PTR *PFN_vkQueueEndDebugUtilsLabelEXT)(VkQueue queue);
++typedef void (VKAPI_PTR *PFN_vkQueueInsertDebugUtilsLabelEXT)(VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo);
++typedef void (VKAPI_PTR *PFN_vkCmdBeginDebugUtilsLabelEXT)(VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo);
++typedef void (VKAPI_PTR *PFN_vkCmdEndDebugUtilsLabelEXT)(VkCommandBuffer commandBuffer);
++typedef void (VKAPI_PTR *PFN_vkCmdInsertDebugUtilsLabelEXT)(VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo);
++typedef VkResult (VKAPI_PTR *PFN_vkCreateDebugUtilsMessengerEXT)(VkInstance instance, const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugUtilsMessengerEXT* pMessenger);
++typedef void (VKAPI_PTR *PFN_vkDestroyDebugUtilsMessengerEXT)(VkInstance instance, VkDebugUtilsMessengerEXT messenger, const VkAllocationCallbacks* pAllocator);
++typedef void (VKAPI_PTR *PFN_vkSubmitDebugUtilsMessageEXT)(VkInstance instance, VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageTypes, const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData);
++
++#ifndef VK_NO_PROTOTYPES
++VKAPI_ATTR VkResult VKAPI_CALL vkSetDebugUtilsObjectNameEXT(
++    VkDevice                                    device,
++    const VkDebugUtilsObjectNameInfoEXT*        pNameInfo);
++
++VKAPI_ATTR VkResult VKAPI_CALL vkSetDebugUtilsObjectTagEXT(
++    VkDevice                                    device,
++    const VkDebugUtilsObjectTagInfoEXT*         pTagInfo);
++
++VKAPI_ATTR void VKAPI_CALL vkQueueBeginDebugUtilsLabelEXT(
++    VkQueue                                     queue,
++    const VkDebugUtilsLabelEXT*                 pLabelInfo);
++
++VKAPI_ATTR void VKAPI_CALL vkQueueEndDebugUtilsLabelEXT(
++    VkQueue                                     queue);
++
++VKAPI_ATTR void VKAPI_CALL vkQueueInsertDebugUtilsLabelEXT(
++    VkQueue                                     queue,
++    const VkDebugUtilsLabelEXT*                 pLabelInfo);
++
++VKAPI_ATTR void VKAPI_CALL vkCmdBeginDebugUtilsLabelEXT(
++    VkCommandBuffer                             commandBuffer,
++    const VkDebugUtilsLabelEXT*                 pLabelInfo);
++
++VKAPI_ATTR void VKAPI_CALL vkCmdEndDebugUtilsLabelEXT(
++    VkCommandBuffer                             commandBuffer);
++
++VKAPI_ATTR void VKAPI_CALL vkCmdInsertDebugUtilsLabelEXT(
++    VkCommandBuffer                             commandBuffer,
++    const VkDebugUtilsLabelEXT*                 pLabelInfo);
++
++VKAPI_ATTR VkResult VKAPI_CALL vkCreateDebugUtilsMessengerEXT(
++    VkInstance                                  instance,
++    const VkDebugUtilsMessengerCreateInfoEXT*   pCreateInfo,
++    const VkAllocationCallbacks*                pAllocator,
++    VkDebugUtilsMessengerEXT*                   pMessenger);
++
++VKAPI_ATTR void VKAPI_CALL vkDestroyDebugUtilsMessengerEXT(
++    VkInstance                                  instance,
++    VkDebugUtilsMessengerEXT                    messenger,
++    const VkAllocationCallbacks*                pAllocator);
++
++VKAPI_ATTR void VKAPI_CALL vkSubmitDebugUtilsMessageEXT(
++    VkInstance                                  instance,
++    VkDebugUtilsMessageSeverityFlagBitsEXT      messageSeverity,
++    VkDebugUtilsMessageTypeFlagsEXT             messageTypes,
++    const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData);
++#endif
 +
 +
 +#define VK_EXT_shader_stencil_export 1
 +#define VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION 1
 +#define VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME "VK_EXT_shader_stencil_export"
 +
 +
 +#define VK_EXT_sample_locations 1
 +#define VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION 1
 +#define VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME "VK_EXT_sample_locations"
 +typedef struct VkSampleLocationEXT {
 +    float    x;
 +    float    y;
 +} VkSampleLocationEXT;
 +
 +typedef struct VkSampleLocationsInfoEXT {
 +    VkStructureType               sType;
 +    const void*                   pNext;
 +    VkSampleCountFlagBits         sampleLocationsPerPixel;
 +    VkExtent2D                    sampleLocationGridSize;
 +    uint32_t                      sampleLocationsCount;
 +    const VkSampleLocationEXT*    pSampleLocations;
 +} VkSampleLocationsInfoEXT;
 +
 +typedef struct VkAttachmentSampleLocationsEXT {
 +    uint32_t                    attachmentIndex;
 +    VkSampleLocationsInfoEXT    sampleLocationsInfo;
 +} VkAttachmentSampleLocationsEXT;
 +
 +typedef struct VkSubpassSampleLocationsEXT {
 +    uint32_t                    subpassIndex;
 +    VkSampleLocationsInfoEXT    sampleLocationsInfo;
 +} VkSubpassSampleLocationsEXT;
 +
 +typedef struct VkRenderPassSampleLocationsBeginInfoEXT {
 +    VkStructureType                          sType;
 +    const void*                              pNext;
 +    uint32_t                                 attachmentInitialSampleLocationsCount;
 +    const VkAttachmentSampleLocationsEXT*    pAttachmentInitialSampleLocations;
 +    uint32_t                                 postSubpassSampleLocationsCount;
 +    const VkSubpassSampleLocationsEXT*       pPostSubpassSampleLocations;
 +} VkRenderPassSampleLocationsBeginInfoEXT;
 +
 +typedef struct VkPipelineSampleLocationsStateCreateInfoEXT {
 +    VkStructureType             sType;
 +    const void*                 pNext;
 +    VkBool32                    sampleLocationsEnable;
 +    VkSampleLocationsInfoEXT    sampleLocationsInfo;
 +} VkPipelineSampleLocationsStateCreateInfoEXT;
 +
 +typedef struct VkPhysicalDeviceSampleLocationsPropertiesEXT {
 +    VkStructureType       sType;
 +    void*                 pNext;
 +    VkSampleCountFlags    sampleLocationSampleCounts;
 +    VkExtent2D            maxSampleLocationGridSize;
 +    float                 sampleLocationCoordinateRange[2];
 +    uint32_t              sampleLocationSubPixelBits;
 +    VkBool32              variableSampleLocations;
 +} VkPhysicalDeviceSampleLocationsPropertiesEXT;
 +
 +typedef struct VkMultisamplePropertiesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkExtent2D         maxSampleLocationGridSize;
 +} VkMultisamplePropertiesEXT;
 +
 +typedef void (VKAPI_PTR *PFN_vkCmdSetSampleLocationsEXT)(VkCommandBuffer commandBuffer, const VkSampleLocationsInfoEXT* pSampleLocationsInfo);
 +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT)(VkPhysicalDevice physicalDevice, VkSampleCountFlagBits samples, VkMultisamplePropertiesEXT* pMultisampleProperties);
 +
 +#ifndef VK_NO_PROTOTYPES
 +VKAPI_ATTR void VKAPI_CALL vkCmdSetSampleLocationsEXT(
 +    VkCommandBuffer                             commandBuffer,
 +    const VkSampleLocationsInfoEXT*             pSampleLocationsInfo);
 +
 +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMultisamplePropertiesEXT(
 +    VkPhysicalDevice                            physicalDevice,
 +    VkSampleCountFlagBits                       samples,
 +    VkMultisamplePropertiesEXT*                 pMultisampleProperties);
 +#endif
 +
 +
 +#define VK_EXT_blend_operation_advanced 1
 +#define VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION 2
 +#define VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME "VK_EXT_blend_operation_advanced"
 +
 +typedef enum VkBlendOverlapEXT {
 +    VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0,
 +    VK_BLEND_OVERLAP_DISJOINT_EXT = 1,
 +    VK_BLEND_OVERLAP_CONJOINT_EXT = 2,
 +    VK_BLEND_OVERLAP_MAX_ENUM_EXT = 0x7FFFFFFF
 +} VkBlendOverlapEXT;
 +typedef struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           advancedBlendCoherentOperations;
 +} VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT;
 +
 +typedef struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    uint32_t           advancedBlendMaxColorAttachments;
 +    VkBool32           advancedBlendIndependentBlend;
 +    VkBool32           advancedBlendNonPremultipliedSrcColor;
 +    VkBool32           advancedBlendNonPremultipliedDstColor;
 +    VkBool32           advancedBlendCorrelatedOverlap;
 +    VkBool32           advancedBlendAllOperations;
 +} VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT;
 +
 +typedef struct VkPipelineColorBlendAdvancedStateCreateInfoEXT {
 +    VkStructureType      sType;
 +    const void*          pNext;
 +    VkBool32             srcPremultiplied;
 +    VkBool32             dstPremultiplied;
 +    VkBlendOverlapEXT    blendOverlap;
 +} VkPipelineColorBlendAdvancedStateCreateInfoEXT;
 +
 +
 +
 +#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"
 +
 +
 +#define VK_EXT_image_drm_format_modifier 1
 +#define VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION 1
 +#define VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME "VK_EXT_image_drm_format_modifier"
 +typedef struct VkDrmFormatModifierPropertiesEXT {
 +    uint64_t                drmFormatModifier;
 +    uint32_t                drmFormatModifierPlaneCount;
 +    VkFormatFeatureFlags    drmFormatModifierTilingFeatures;
 +} VkDrmFormatModifierPropertiesEXT;
 +
 +typedef struct VkDrmFormatModifierPropertiesListEXT {
 +    VkStructureType                      sType;
 +    void*                                pNext;
 +    uint32_t                             drmFormatModifierCount;
 +    VkDrmFormatModifierPropertiesEXT*    pDrmFormatModifierProperties;
 +} VkDrmFormatModifierPropertiesListEXT;
 +
 +typedef struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    uint64_t           drmFormatModifier;
 +    VkSharingMode      sharingMode;
 +    uint32_t           queueFamilyIndexCount;
 +    const uint32_t*    pQueueFamilyIndices;
 +} VkPhysicalDeviceImageDrmFormatModifierInfoEXT;
 +
 +typedef struct VkImageDrmFormatModifierListCreateInfoEXT {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    uint32_t           drmFormatModifierCount;
 +    const uint64_t*    pDrmFormatModifiers;
 +} VkImageDrmFormatModifierListCreateInfoEXT;
 +
 +typedef struct VkImageDrmFormatModifierExplicitCreateInfoEXT {
 +    VkStructureType               sType;
 +    const void*                   pNext;
 +    uint64_t                      drmFormatModifier;
 +    uint32_t                      drmFormatModifierPlaneCount;
 +    const VkSubresourceLayout*    pPlaneLayouts;
 +} VkImageDrmFormatModifierExplicitCreateInfoEXT;
 +
 +typedef struct VkImageDrmFormatModifierPropertiesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    uint64_t           drmFormatModifier;
 +} VkImageDrmFormatModifierPropertiesEXT;
 +
 +typedef VkResult (VKAPI_PTR *PFN_vkGetImageDrmFormatModifierPropertiesEXT)(VkDevice device, VkImage image, VkImageDrmFormatModifierPropertiesEXT* pProperties);
 +
 +#ifndef VK_NO_PROTOTYPES
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetImageDrmFormatModifierPropertiesEXT(
 +    VkDevice                                    device,
 +    VkImage                                     image,
 +    VkImageDrmFormatModifierPropertiesEXT*      pProperties);
 +#endif
 +
 +
 +#define VK_EXT_filter_cubic 1
 +#define VK_EXT_FILTER_CUBIC_SPEC_VERSION  3
 +#define VK_EXT_FILTER_CUBIC_EXTENSION_NAME "VK_EXT_filter_cubic"
 +typedef struct VkPhysicalDeviceImageViewImageFormatInfoEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkImageViewType    imageViewType;
 +} VkPhysicalDeviceImageViewImageFormatInfoEXT;
 +
 +typedef struct VkFilterCubicImageViewImageFormatPropertiesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           filterCubic;
 +    VkBool32           filterCubicMinmax;
 +} VkFilterCubicImageViewImageFormatPropertiesEXT;
 +
 +
 +
 +#define VK_EXT_global_priority 1
 +#define VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION 2
 +#define VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME "VK_EXT_global_priority"
 +
 +typedef enum VkQueueGlobalPriorityEXT {
 +    VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT = 128,
 +    VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT = 256,
 +    VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT = 512,
 +    VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT = 1024,
 +    VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM_EXT = 0x7FFFFFFF
 +} VkQueueGlobalPriorityEXT;
 +typedef struct VkDeviceQueueGlobalPriorityCreateInfoEXT {
 +    VkStructureType             sType;
 +    const void*                 pNext;
 +    VkQueueGlobalPriorityEXT    globalPriority;
 +} VkDeviceQueueGlobalPriorityCreateInfoEXT;
 +
 +
 +
 +#define VK_EXT_external_memory_host 1
 +#define VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION 1
 +#define VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME "VK_EXT_external_memory_host"
 +typedef struct VkImportMemoryHostPointerInfoEXT {
 +    VkStructureType                       sType;
 +    const void*                           pNext;
 +    VkExternalMemoryHandleTypeFlagBits    handleType;
 +    void*                                 pHostPointer;
 +} VkImportMemoryHostPointerInfoEXT;
 +
 +typedef struct VkMemoryHostPointerPropertiesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    uint32_t           memoryTypeBits;
 +} VkMemoryHostPointerPropertiesEXT;
 +
 +typedef struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkDeviceSize       minImportedHostPointerAlignment;
 +} VkPhysicalDeviceExternalMemoryHostPropertiesEXT;
 +
 +typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryHostPointerPropertiesEXT)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, const void* pHostPointer, VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties);
 +
 +#ifndef VK_NO_PROTOTYPES
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryHostPointerPropertiesEXT(
 +    VkDevice                                    device,
 +    VkExternalMemoryHandleTypeFlagBits          handleType,
 +    const void*                                 pHostPointer,
 +    VkMemoryHostPointerPropertiesEXT*           pMemoryHostPointerProperties);
 +#endif
 +
 +
 +#define VK_EXT_calibrated_timestamps 1
++#define VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION 2
 +#define VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME "VK_EXT_calibrated_timestamps"
 +
 +typedef enum VkTimeDomainEXT {
 +    VK_TIME_DOMAIN_DEVICE_EXT = 0,
 +    VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT = 1,
 +    VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = 2,
 +    VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT = 3,
 +    VK_TIME_DOMAIN_MAX_ENUM_EXT = 0x7FFFFFFF
 +} VkTimeDomainEXT;
 +typedef struct VkCalibratedTimestampInfoEXT {
 +    VkStructureType    sType;
 +    const void*        pNext;
 +    VkTimeDomainEXT    timeDomain;
 +} VkCalibratedTimestampInfoEXT;
 +
 +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT)(VkPhysicalDevice physicalDevice, uint32_t* pTimeDomainCount, VkTimeDomainEXT* pTimeDomains);
 +typedef VkResult (VKAPI_PTR *PFN_vkGetCalibratedTimestampsEXT)(VkDevice device, uint32_t timestampCount, const VkCalibratedTimestampInfoEXT* pTimestampInfos, uint64_t* pTimestamps, uint64_t* pMaxDeviation);
 +
 +#ifndef VK_NO_PROTOTYPES
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(
 +    VkPhysicalDevice                            physicalDevice,
 +    uint32_t*                                   pTimeDomainCount,
 +    VkTimeDomainEXT*                            pTimeDomains);
 +
 +VKAPI_ATTR VkResult VKAPI_CALL vkGetCalibratedTimestampsEXT(
 +    VkDevice                                    device,
 +    uint32_t                                    timestampCount,
 +    const VkCalibratedTimestampInfoEXT*         pTimestampInfos,
 +    uint64_t*                                   pTimestamps,
 +    uint64_t*                                   pMaxDeviation);
 +#endif
 +
 +
 +#define VK_EXT_vertex_attribute_divisor 1
 +#define VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION 3
 +#define VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME "VK_EXT_vertex_attribute_divisor"
 +typedef struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    uint32_t           maxVertexAttribDivisor;
 +} VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT;
 +
 +typedef struct VkVertexInputBindingDivisorDescriptionEXT {
 +    uint32_t    binding;
 +    uint32_t    divisor;
 +} VkVertexInputBindingDivisorDescriptionEXT;
 +
 +typedef struct VkPipelineVertexInputDivisorStateCreateInfoEXT {
 +    VkStructureType                                     sType;
 +    const void*                                         pNext;
 +    uint32_t                                            vertexBindingDivisorCount;
 +    const VkVertexInputBindingDivisorDescriptionEXT*    pVertexBindingDivisors;
 +} VkPipelineVertexInputDivisorStateCreateInfoEXT;
 +
 +typedef struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           vertexAttributeInstanceRateDivisor;
 +    VkBool32           vertexAttributeInstanceRateZeroDivisor;
 +} VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT;
 +
 +
 +
 +#define VK_EXT_pci_bus_info 1
 +#define VK_EXT_PCI_BUS_INFO_SPEC_VERSION  2
 +#define VK_EXT_PCI_BUS_INFO_EXTENSION_NAME "VK_EXT_pci_bus_info"
 +typedef struct VkPhysicalDevicePCIBusInfoPropertiesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    uint32_t           pciDomain;
 +    uint32_t           pciBus;
 +    uint32_t           pciDevice;
 +    uint32_t           pciFunction;
 +} VkPhysicalDevicePCIBusInfoPropertiesEXT;
 +
 +
 +
 +#define VK_EXT_subgroup_size_control 1
 +#define VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION 2
 +#define VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME "VK_EXT_subgroup_size_control"
 +typedef struct VkPhysicalDeviceSubgroupSizeControlFeaturesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           subgroupSizeControl;
 +    VkBool32           computeFullSubgroups;
 +} VkPhysicalDeviceSubgroupSizeControlFeaturesEXT;
 +
 +typedef struct VkPhysicalDeviceSubgroupSizeControlPropertiesEXT {
 +    VkStructureType       sType;
 +    void*                 pNext;
 +    uint32_t              minSubgroupSize;
 +    uint32_t              maxSubgroupSize;
 +    uint32_t              maxComputeWorkgroupSubgroups;
 +    VkShaderStageFlags    requiredSubgroupSizeStages;
 +} VkPhysicalDeviceSubgroupSizeControlPropertiesEXT;
 +
 +typedef struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    uint32_t           requiredSubgroupSize;
 +} VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT;
 +
 +
 +
 +#define VK_EXT_shader_image_atomic_int64 1
 +#define VK_EXT_SHADER_IMAGE_ATOMIC_INT64_SPEC_VERSION 1
 +#define VK_EXT_SHADER_IMAGE_ATOMIC_INT64_EXTENSION_NAME "VK_EXT_shader_image_atomic_int64"
 +typedef struct VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           shaderImageInt64Atomics;
 +    VkBool32           sparseImageInt64Atomics;
 +} VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT;
 +
 +
 +
 +#define VK_EXT_memory_budget 1
 +#define VK_EXT_MEMORY_BUDGET_SPEC_VERSION 1
 +#define VK_EXT_MEMORY_BUDGET_EXTENSION_NAME "VK_EXT_memory_budget"
 +typedef struct VkPhysicalDeviceMemoryBudgetPropertiesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkDeviceSize       heapBudget[VK_MAX_MEMORY_HEAPS];
 +    VkDeviceSize       heapUsage[VK_MAX_MEMORY_HEAPS];
 +} VkPhysicalDeviceMemoryBudgetPropertiesEXT;
 +
 +
 +
++#define VK_EXT_validation_features 1
++#define VK_EXT_VALIDATION_FEATURES_SPEC_VERSION 4
++#define VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME "VK_EXT_validation_features"
++
++typedef enum VkValidationFeatureEnableEXT {
++    VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT = 0,
++    VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT = 1,
++    VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT = 2,
++    VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT = 3,
++    VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT = 4,
++    VK_VALIDATION_FEATURE_ENABLE_MAX_ENUM_EXT = 0x7FFFFFFF
++} VkValidationFeatureEnableEXT;
++
++typedef enum VkValidationFeatureDisableEXT {
++    VK_VALIDATION_FEATURE_DISABLE_ALL_EXT = 0,
++    VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT = 1,
++    VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT = 2,
++    VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT = 3,
++    VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT = 4,
++    VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT = 5,
++    VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT = 6,
++    VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 0x7FFFFFFF
++} VkValidationFeatureDisableEXT;
++typedef struct VkValidationFeaturesEXT {
++    VkStructureType                         sType;
++    const void*                             pNext;
++    uint32_t                                enabledValidationFeatureCount;
++    const VkValidationFeatureEnableEXT*     pEnabledValidationFeatures;
++    uint32_t                                disabledValidationFeatureCount;
++    const VkValidationFeatureDisableEXT*    pDisabledValidationFeatures;
++} VkValidationFeaturesEXT;
++
++
++
 +#define VK_EXT_fragment_shader_interlock 1
 +#define VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION 1
 +#define VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME "VK_EXT_fragment_shader_interlock"
 +typedef struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           fragmentShaderSampleInterlock;
 +    VkBool32           fragmentShaderPixelInterlock;
 +    VkBool32           fragmentShaderShadingRateInterlock;
 +} VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT;
 +
 +
 +
 +#define VK_EXT_ycbcr_image_arrays 1
 +#define VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION 1
 +#define VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME "VK_EXT_ycbcr_image_arrays"
 +typedef struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           ycbcrImageArrays;
 +} VkPhysicalDeviceYcbcrImageArraysFeaturesEXT;
 +
 +
 +
 +#define VK_EXT_headless_surface 1
 +#define VK_EXT_HEADLESS_SURFACE_SPEC_VERSION 1
 +#define VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME "VK_EXT_headless_surface"
 +typedef VkFlags VkHeadlessSurfaceCreateFlagsEXT;
 +typedef struct VkHeadlessSurfaceCreateInfoEXT {
 +    VkStructureType                    sType;
 +    const void*                        pNext;
 +    VkHeadlessSurfaceCreateFlagsEXT    flags;
 +} VkHeadlessSurfaceCreateInfoEXT;
 +
 +typedef VkResult (VKAPI_PTR *PFN_vkCreateHeadlessSurfaceEXT)(VkInstance instance, const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
 +
 +#ifndef VK_NO_PROTOTYPES
 +VKAPI_ATTR VkResult VKAPI_CALL vkCreateHeadlessSurfaceEXT(
 +    VkInstance                                  instance,
 +    const VkHeadlessSurfaceCreateInfoEXT*       pCreateInfo,
 +    const VkAllocationCallbacks*                pAllocator,
 +    VkSurfaceKHR*                               pSurface);
 +#endif
 +
 +
 +#define VK_EXT_line_rasterization 1
 +#define VK_EXT_LINE_RASTERIZATION_SPEC_VERSION 1
 +#define VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME "VK_EXT_line_rasterization"
 +
 +typedef enum VkLineRasterizationModeEXT {
 +    VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT = 0,
 +    VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = 1,
 +    VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT = 2,
 +    VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = 3,
 +    VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT = 0x7FFFFFFF
 +} VkLineRasterizationModeEXT;
 +typedef struct VkPhysicalDeviceLineRasterizationFeaturesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           rectangularLines;
 +    VkBool32           bresenhamLines;
 +    VkBool32           smoothLines;
 +    VkBool32           stippledRectangularLines;
 +    VkBool32           stippledBresenhamLines;
 +    VkBool32           stippledSmoothLines;
 +} VkPhysicalDeviceLineRasterizationFeaturesEXT;
 +
 +typedef struct VkPhysicalDeviceLineRasterizationPropertiesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    uint32_t           lineSubPixelPrecisionBits;
 +} VkPhysicalDeviceLineRasterizationPropertiesEXT;
 +
 +typedef struct VkPipelineRasterizationLineStateCreateInfoEXT {
 +    VkStructureType               sType;
 +    const void*                   pNext;
 +    VkLineRasterizationModeEXT    lineRasterizationMode;
 +    VkBool32                      stippledLineEnable;
 +    uint32_t                      lineStippleFactor;
 +    uint16_t                      lineStipplePattern;
 +} VkPipelineRasterizationLineStateCreateInfoEXT;
 +
 +typedef void (VKAPI_PTR *PFN_vkCmdSetLineStippleEXT)(VkCommandBuffer commandBuffer, uint32_t lineStippleFactor, uint16_t lineStipplePattern);
 +
 +#ifndef VK_NO_PROTOTYPES
 +VKAPI_ATTR void VKAPI_CALL vkCmdSetLineStippleEXT(
 +    VkCommandBuffer                             commandBuffer,
 +    uint32_t                                    lineStippleFactor,
 +    uint16_t                                    lineStipplePattern);
 +#endif
 +
 +
 +#define VK_EXT_shader_atomic_float 1
 +#define VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION 1
 +#define VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME "VK_EXT_shader_atomic_float"
 +typedef struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           shaderBufferFloat32Atomics;
 +    VkBool32           shaderBufferFloat32AtomicAdd;
 +    VkBool32           shaderBufferFloat64Atomics;
 +    VkBool32           shaderBufferFloat64AtomicAdd;
 +    VkBool32           shaderSharedFloat32Atomics;
 +    VkBool32           shaderSharedFloat32AtomicAdd;
 +    VkBool32           shaderSharedFloat64Atomics;
 +    VkBool32           shaderSharedFloat64AtomicAdd;
 +    VkBool32           shaderImageFloat32Atomics;
 +    VkBool32           shaderImageFloat32AtomicAdd;
 +    VkBool32           sparseImageFloat32Atomics;
 +    VkBool32           sparseImageFloat32AtomicAdd;
 +} VkPhysicalDeviceShaderAtomicFloatFeaturesEXT;
 +
 +
 +
 +#define VK_EXT_index_type_uint8 1
 +#define VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION 1
 +#define VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME "VK_EXT_index_type_uint8"
 +typedef struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           indexTypeUint8;
 +} VkPhysicalDeviceIndexTypeUint8FeaturesEXT;
 +
 +
 +
 +#define VK_EXT_extended_dynamic_state 1
 +#define VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION 1
 +#define VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME "VK_EXT_extended_dynamic_state"
 +typedef struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           extendedDynamicState;
 +} VkPhysicalDeviceExtendedDynamicStateFeaturesEXT;
 +
 +typedef void (VKAPI_PTR *PFN_vkCmdSetCullModeEXT)(VkCommandBuffer commandBuffer, VkCullModeFlags cullMode);
 +typedef void (VKAPI_PTR *PFN_vkCmdSetFrontFaceEXT)(VkCommandBuffer commandBuffer, VkFrontFace frontFace);
 +typedef void (VKAPI_PTR *PFN_vkCmdSetPrimitiveTopologyEXT)(VkCommandBuffer commandBuffer, VkPrimitiveTopology primitiveTopology);
 +typedef void (VKAPI_PTR *PFN_vkCmdSetViewportWithCountEXT)(VkCommandBuffer commandBuffer, uint32_t viewportCount, const VkViewport* pViewports);
 +typedef void (VKAPI_PTR *PFN_vkCmdSetScissorWithCountEXT)(VkCommandBuffer commandBuffer, uint32_t scissorCount, const VkRect2D* pScissors);
 +typedef void (VKAPI_PTR *PFN_vkCmdBindVertexBuffers2EXT)(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes, const VkDeviceSize* pStrides);
 +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthTestEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthTestEnable);
 +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthWriteEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthWriteEnable);
 +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthCompareOpEXT)(VkCommandBuffer commandBuffer, VkCompareOp depthCompareOp);
 +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBoundsTestEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthBoundsTestEnable);
 +typedef void (VKAPI_PTR *PFN_vkCmdSetStencilTestEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 stencilTestEnable);
 +typedef void (VKAPI_PTR *PFN_vkCmdSetStencilOpEXT)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, VkStencilOp failOp, VkStencilOp passOp, VkStencilOp depthFailOp, VkCompareOp compareOp);
 +
 +#ifndef VK_NO_PROTOTYPES
 +VKAPI_ATTR void VKAPI_CALL vkCmdSetCullModeEXT(
 +    VkCommandBuffer                             commandBuffer,
 +    VkCullModeFlags                             cullMode);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdSetFrontFaceEXT(
 +    VkCommandBuffer                             commandBuffer,
 +    VkFrontFace                                 frontFace);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdSetPrimitiveTopologyEXT(
 +    VkCommandBuffer                             commandBuffer,
 +    VkPrimitiveTopology                         primitiveTopology);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdSetViewportWithCountEXT(
 +    VkCommandBuffer                             commandBuffer,
 +    uint32_t                                    viewportCount,
 +    const VkViewport*                           pViewports);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdSetScissorWithCountEXT(
 +    VkCommandBuffer                             commandBuffer,
 +    uint32_t                                    scissorCount,
 +    const VkRect2D*                             pScissors);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdBindVertexBuffers2EXT(
 +    VkCommandBuffer                             commandBuffer,
 +    uint32_t                                    firstBinding,
 +    uint32_t                                    bindingCount,
 +    const VkBuffer*                             pBuffers,
 +    const VkDeviceSize*                         pOffsets,
 +    const VkDeviceSize*                         pSizes,
 +    const VkDeviceSize*                         pStrides);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthTestEnableEXT(
 +    VkCommandBuffer                             commandBuffer,
 +    VkBool32                                    depthTestEnable);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthWriteEnableEXT(
 +    VkCommandBuffer                             commandBuffer,
 +    VkBool32                                    depthWriteEnable);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthCompareOpEXT(
 +    VkCommandBuffer                             commandBuffer,
 +    VkCompareOp                                 depthCompareOp);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBoundsTestEnableEXT(
 +    VkCommandBuffer                             commandBuffer,
 +    VkBool32                                    depthBoundsTestEnable);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilTestEnableEXT(
 +    VkCommandBuffer                             commandBuffer,
 +    VkBool32                                    stencilTestEnable);
 +
 +VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilOpEXT(
 +    VkCommandBuffer                             commandBuffer,
 +    VkStencilFaceFlags                          faceMask,
 +    VkStencilOp                                 failOp,
 +    VkStencilOp                                 passOp,
 +    VkStencilOp                                 depthFailOp,
 +    VkCompareOp                                 compareOp);
 +#endif
 +
 +
 +#define VK_EXT_shader_demote_to_helper_invocation 1
 +#define VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION 1
 +#define VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME "VK_EXT_shader_demote_to_helper_invocation"
 +typedef struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           shaderDemoteToHelperInvocation;
 +} VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT;
 +
 +
 +
 +#define VK_EXT_texel_buffer_alignment 1
 +#define VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION 1
 +#define VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME "VK_EXT_texel_buffer_alignment"
 +typedef struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           texelBufferAlignment;
 +} VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT;
 +
 +typedef struct VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkDeviceSize       storageTexelBufferOffsetAlignmentBytes;
 +    VkBool32           storageTexelBufferOffsetSingleTexelAlignment;
 +    VkDeviceSize       uniformTexelBufferOffsetAlignmentBytes;
 +    VkBool32           uniformTexelBufferOffsetSingleTexelAlignment;
 +} VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT;
 +
 +
 +
 +#define VK_EXT_robustness2 1
 +#define VK_EXT_ROBUSTNESS_2_SPEC_VERSION  1
 +#define VK_EXT_ROBUSTNESS_2_EXTENSION_NAME "VK_EXT_robustness2"
 +typedef struct VkPhysicalDeviceRobustness2FeaturesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           robustBufferAccess2;
 +    VkBool32           robustImageAccess2;
 +    VkBool32           nullDescriptor;
 +} VkPhysicalDeviceRobustness2FeaturesEXT;
 +
 +typedef struct VkPhysicalDeviceRobustness2PropertiesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkDeviceSize       robustStorageBufferAccessSizeAlignment;
 +    VkDeviceSize       robustUniformBufferAccessSizeAlignment;
 +} VkPhysicalDeviceRobustness2PropertiesEXT;
 +
 +
 +
 +#define VK_EXT_custom_border_color 1
 +#define VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION 12
 +#define VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME "VK_EXT_custom_border_color"
 +typedef struct VkSamplerCustomBorderColorCreateInfoEXT {
 +    VkStructureType      sType;
 +    const void*          pNext;
 +    VkClearColorValue    customBorderColor;
 +    VkFormat             format;
 +} VkSamplerCustomBorderColorCreateInfoEXT;
 +
 +typedef struct VkPhysicalDeviceCustomBorderColorPropertiesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    uint32_t           maxCustomBorderColorSamplers;
 +} VkPhysicalDeviceCustomBorderColorPropertiesEXT;
 +
 +typedef struct VkPhysicalDeviceCustomBorderColorFeaturesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           customBorderColors;
 +    VkBool32           customBorderColorWithoutFormat;
 +} VkPhysicalDeviceCustomBorderColorFeaturesEXT;
 +
 +
 +
++#define VK_EXT_ycbcr_2plane_444_formats 1
++#define VK_EXT_YCBCR_2PLANE_444_FORMATS_SPEC_VERSION 1
++#define VK_EXT_YCBCR_2PLANE_444_FORMATS_EXTENSION_NAME "VK_EXT_ycbcr_2plane_444_formats"
++typedef struct VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT {
++    VkStructureType    sType;
++    void*              pNext;
++    VkBool32           ycbcr2plane444Formats;
++} VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT;
++
++
++
 +#define VK_EXT_image_robustness 1
 +#define VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION 1
 +#define VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME "VK_EXT_image_robustness"
 +typedef struct VkPhysicalDeviceImageRobustnessFeaturesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           robustImageAccess;
 +} VkPhysicalDeviceImageRobustnessFeaturesEXT;
 +
 +
 +
 +#define VK_EXT_4444_formats 1
 +#define VK_EXT_4444_FORMATS_SPEC_VERSION  1
 +#define VK_EXT_4444_FORMATS_EXTENSION_NAME "VK_EXT_4444_formats"
 +typedef struct VkPhysicalDevice4444FormatsFeaturesEXT {
 +    VkStructureType    sType;
 +    void*              pNext;
 +    VkBool32           formatA4R4G4B4;
 +    VkBool32           formatA4B4G4R4;
 +} VkPhysicalDevice4444FormatsFeaturesEXT;
 +
 +
++
++#define VK_EXT_vertex_input_dynamic_state 1
++#define VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_SPEC_VERSION 2
++#define VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME "VK_EXT_vertex_input_dynamic_state"
++typedef struct VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT {
++    VkStructureType    sType;
++    void*              pNext;
++    VkBool32           vertexInputDynamicState;
++} VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT;
++
++typedef struct VkVertexInputBindingDescription2EXT {
++    VkStructureType      sType;
++    void*                pNext;
++    uint32_t             binding;
++    uint32_t             stride;
++    VkVertexInputRate    inputRate;
++    uint32_t             divisor;
++} VkVertexInputBindingDescription2EXT;
++
++typedef struct VkVertexInputAttributeDescription2EXT {
++    VkStructureType    sType;
++    void*              pNext;
++    uint32_t           location;
++    uint32_t           binding;
++    VkFormat           format;
++    uint32_t           offset;
++} VkVertexInputAttributeDescription2EXT;
++
++typedef void (VKAPI_PTR *PFN_vkCmdSetVertexInputEXT)(VkCommandBuffer commandBuffer, uint32_t vertexBindingDescriptionCount, const VkVertexInputBindingDescription2EXT* pVertexBindingDescriptions, uint32_t vertexAttributeDescriptionCount, const VkVertexInputAttributeDescription2EXT* pVertexAttributeDescriptions);
++
++#ifndef VK_NO_PROTOTYPES
++VKAPI_ATTR void VKAPI_CALL vkCmdSetVertexInputEXT(
++    VkCommandBuffer                             commandBuffer,
++    uint32_t                                    vertexBindingDescriptionCount,
++    const VkVertexInputBindingDescription2EXT*  pVertexBindingDescriptions,
++    uint32_t                                    vertexAttributeDescriptionCount,
++    const VkVertexInputAttributeDescription2EXT* pVertexAttributeDescriptions);
++#endif
++
++
++#define VK_EXT_extended_dynamic_state2 1
++#define VK_EXT_EXTENDED_DYNAMIC_STATE_2_SPEC_VERSION 1
++#define VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME "VK_EXT_extended_dynamic_state2"
++typedef struct VkPhysicalDeviceExtendedDynamicState2FeaturesEXT {
++    VkStructureType    sType;
++    void*              pNext;
++    VkBool32           extendedDynamicState2;
++    VkBool32           extendedDynamicState2LogicOp;
++    VkBool32           extendedDynamicState2PatchControlPoints;
++} VkPhysicalDeviceExtendedDynamicState2FeaturesEXT;
++
++typedef void (VKAPI_PTR *PFN_vkCmdSetPatchControlPointsEXT)(VkCommandBuffer commandBuffer, uint32_t patchControlPoints);
++typedef void (VKAPI_PTR *PFN_vkCmdSetRasterizerDiscardEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 rasterizerDiscardEnable);
++typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBiasEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthBiasEnable);
++typedef void (VKAPI_PTR *PFN_vkCmdSetLogicOpEXT)(VkCommandBuffer commandBuffer, VkLogicOp logicOp);
++typedef void (VKAPI_PTR *PFN_vkCmdSetPrimitiveRestartEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 primitiveRestartEnable);
++
++#ifndef VK_NO_PROTOTYPES
++VKAPI_ATTR void VKAPI_CALL vkCmdSetPatchControlPointsEXT(
++    VkCommandBuffer                             commandBuffer,
++    uint32_t                                    patchControlPoints);
++
++VKAPI_ATTR void VKAPI_CALL vkCmdSetRasterizerDiscardEnableEXT(
++    VkCommandBuffer                             commandBuffer,
++    VkBool32                                    rasterizerDiscardEnable);
++
++VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBiasEnableEXT(
++    VkCommandBuffer                             commandBuffer,
++    VkBool32                                    depthBiasEnable);
++
++VKAPI_ATTR void VKAPI_CALL vkCmdSetLogicOpEXT(
++    VkCommandBuffer                             commandBuffer,
++    VkLogicOp                                   logicOp);
++
++VKAPI_ATTR void VKAPI_CALL vkCmdSetPrimitiveRestartEnableEXT(
++    VkCommandBuffer                             commandBuffer,
++    VkBool32                                    primitiveRestartEnable);
++#endif
++
++
++#define VK_EXT_color_write_enable 1
++#define VK_EXT_COLOR_WRITE_ENABLE_SPEC_VERSION 1
++#define VK_EXT_COLOR_WRITE_ENABLE_EXTENSION_NAME "VK_EXT_color_write_enable"
++typedef struct VkPhysicalDeviceColorWriteEnableFeaturesEXT {
++    VkStructureType    sType;
++    void*              pNext;
++    VkBool32           colorWriteEnable;
++} VkPhysicalDeviceColorWriteEnableFeaturesEXT;
++
++typedef struct VkPipelineColorWriteCreateInfoEXT {
++    VkStructureType    sType;
++    const void*        pNext;
++    uint32_t           attachmentCount;
++    const VkBool32*    pColorWriteEnables;
++} VkPipelineColorWriteCreateInfoEXT;
++
++typedef void                                    (VKAPI_PTR *PFN_vkCmdSetColorWriteEnableEXT)(VkCommandBuffer       commandBuffer, uint32_t                                attachmentCount, const VkBool32*   pColorWriteEnables);
++
++#ifndef VK_NO_PROTOTYPES
++VKAPI_ATTR void                                    VKAPI_CALL vkCmdSetColorWriteEnableEXT(
++    VkCommandBuffer                             commandBuffer,
++    uint32_t                                    attachmentCount,
++    const VkBool32*                             pColorWriteEnables);
++#endif
++
 +#ifdef __cplusplus
 +}
 +#endif
 +
 +#endif
@@@ -177,38 -180,6 +180,46 @@@ if (DEQP_USE_X11
        endif ()
  endif ()
  
+ if (DE_OS_IS_WIN32)
+       target_link_libraries(tcutil-platform "version")
+ endif()
++
 +# Add similar library for Vulkan SC ( uses same code as vkutil, but with different INL files )
 +add_library(tcutil-sc-platform STATIC ${TCUTIL_PLATFORM_SRCS})
 +target_include_directories(tcutil-sc-platform BEFORE PUBLIC ${CMAKE_SOURCE_DIR}/external/vulkancts/framework/vulkan/generated/vulkansc)
 +
 +# Add vkscutil to the deps before tcutil so that it picks up the c++11 dependencies
 +target_link_libraries(tcutil-sc-platform vkscutil)
 +
 +target_link_libraries(tcutil-sc-platform tcutil ${TCUTIL_PLATFORM_LIBS})
 +
 +# Always link to glutil as some platforms such as Win32 always support GL
 +target_link_libraries(tcutil-sc-platform glutil)
 +
 +# Always link to eglutil
 +target_link_libraries(tcutil-sc-platform eglutil)
 +
 +# X11 libraries
 +if (DEQP_USE_X11)
 +      find_package(X11 REQUIRED)
 +      target_link_libraries(tcutil-sc-platform ${X11_LIBRARIES})
 +      if (DEQP_USE_XCB)
 +              find_package(XCB REQUIRED)
 +              target_link_libraries(tcutil-sc-platform ${XCB_LIBRARIES})
 +              target_compile_definitions(tcutil-sc-platform PUBLIC DEQP_SUPPORT_XCB=1)
 +      endif ()
 +      if (DEQP_SUPPORT_GLX)
 +        # GLX functions don't currently have wrappers, so link directly to libGL.
 +        target_link_libraries(tcutil-sc-platform GL)
 +      endif ()
 +      if (DEQP_USE_WAYLAND)
 +              find_package(Wayland REQUIRED)
 +              target_link_libraries(tcutil-sc-platform ${WAYLAND_LIBRARIES})
 +              target_compile_definitions(tcutil-sc-platform PUBLIC DEQP_SUPPORT_WAYLAND=1)
 +      endif ()
 +endif ()
 +
++if (DE_OS_IS_WIN32)
++      target_link_libraries(tcutil-sc-platform "version")
++endif()
++
Simple merge
@@@ -251,30 -274,27 +275,38 @@@ MASTER_VULKAN_FILTERS                   = 
                exclude("vk-temp-excluded.txt"),
        ]
  MASTER_VULKAN_PKG                             = Package(module = VULKAN_MODULE, configurations = [
-               Configuration(name                      = "master",
-                                         filters               = MASTER_VULKAN_FILTERS,
-                                         runtime               = "2h39m",
-                                         runByDefault          = False),
-               Configuration(name                      = "master-2019-03-01",
-                                         filters               = [include("vk-master-2019-03-01.txt")],
-                                         runtime               = "2h29m"),
-               Configuration(name                      = "master-2020-03-01",
-                                         filters               = MASTER_VULKAN_FILTERS + [exclude("vk-master-2019-03-01.txt")],
-                                         runtime               = "10m"),
+               Configuration(name                                      = "master",
+                                         filters                               = MASTER_VULKAN_FILTERS,
+                                         runtime                               = "2h39m",
+                                         runByDefault                  = False,
+                                         splitToMultipleFiles  = True),
+               Configuration(name                                      = "master-2019-03-01",
+                                         filters                               = [include("vk-master-2019-03-01.txt")],
+                                         runtime                               = "2h29m",
+                                         splitToMultipleFiles  = True),
+               Configuration(name                                      = "master-2020-03-01",
+                                         filters                               = [include("vk-master-2020-03-01.txt")],
+                                         runtime                               = "2h29m",
+                                         splitToMultipleFiles  = True),
+               Configuration(name                                      = "master-2021-03-01",
+                                         filters                               = MASTER_VULKAN_FILTERS + [exclude("vk-master-2019-03-01.txt"), exclude("vk-master-2020-03-01.txt")],
+                                         runtime                               = "10m",
+                                         splitToMultipleFiles  = True),
        ])
  
-               Configuration(name                      = "master",
-                                         filters               = MASTER_VULKANSC_FILTERS,
-                                         runtime               = "2h39m",
-                                         runByDefault  = False),
 +MASTER_VULKANSC_FILTERS                       = [
 +              include("vksc-master.txt"),
 +      ]
 +MASTER_VULKANSC_PKG                           = Package(module = VULKANSC_MODULE, configurations = [
++              Configuration(name                                      = "master",
++                                        filters                               = MASTER_VULKANSC_FILTERS,
++                                        runtime                               = "2h39m",
++                                        runByDefault                  = False,
++                                        splitToMultipleFiles  = True),
 +      ])
 +
  MUSTPASS_LISTS                                = [
 -              Mustpass(project = CTS_PROJECT, version = "master",             packages = [MASTER_EGL_PKG, MASTER_GLES2_PKG, MASTER_GLES3_PKG, MASTER_GLES31_PKG, MASTER_VULKAN_PKG])
 +              Mustpass(project = CTS_PROJECT, version = "master",             packages = [MASTER_EGL_PKG, MASTER_GLES2_PKG, MASTER_GLES3_PKG, MASTER_GLES31_PKG, MASTER_VULKAN_PKG, MASTER_VULKANSC_PKG])
        ]
  
  if __name__ == "__main__":
Simple merge